18 Commits

Author SHA1 Message Date
Adam Duskett
1956e4e434 package/flutter-engine: bump to version 3.29.2
As of Flutter 3.27.4, the flutter-engine github repository is archived, and the
flutter-engine source code now resides at https://github.com/flutter/flutter/.

Because of the above, the following changes must occure:

- Paths are now prefixed with engine/src.

- The "name" field in the dot-gclient file is now "./", and the gen-tarball
  script:
   - Makes the dl-tmp/src dir
   - Copies the dot-gclient file to the dl-tmp/src dir
   - Runs gclient.py inside of the dl-tmp/src dir

Without these changes, gclient creates two directores:
dl-tmp/src/flutter and dl-tmp/src/engine, and cloning fails with the following
error:

```
python3: can't open file 'dl-tmp/src/engine/src/flutter/tools/pub_get_offline.py':
[Errno 2] No such file or directory
```

because the file resides at src/flutter/engine/src/flutter/tools.
Changing the name from src/flutter to ./ and running gclient.py directly in
the src directory creates a proper directory structure suitable for compiling.

Of course, this also means there is a new pushd in the gen_tarball method to
move to ${SCRATCH_DIR} to ensure the tarball is generated outside of the
source directory.

Tested with run-tests tests.package.test_flutter.TestFlutter.test_run.

The license file has changed, but it's still BSD-3-Clause.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2025-04-21 23:19:59 +02:00
Adam Duskett
633bbb40d6 package/flutter-engine: bump to version 3.27.1
Other changes:
  - Upstream dropped the --enable-impeller-vulkan configuration option.
  - Add a .hash file for the LICENSE file
  - Change the wording of the comment to reflect the addition of the
    .hash file.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
2025-02-03 19:44:21 +01:00
Adam Duskett
ed60187920 package/flutter-engine: bump version to 3.24.4
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-10-29 18:52:50 +01:00
Adam Duskett
6d07647cc6 package/flutter-engine: bump package to 3.24.3
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-10-26 17:58:18 +02:00
Peter Korsgaard
cccd164fd6 package/flutter-engine: fix typos in comments
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-09-10 22:49:50 +02:00
Adam Duskett
d6559e0f58 package/flutter-engine: bump version to 3.24.2
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-09-05 22:17:56 +02:00
Adam Duskett
dbd1dce67d package/flutter-engine: bump version to 3.24.0
Add `"download_fuchsia_deps": False` to the dot-gclient file as this is
for linux, not fuchsia, so the dependencies are not necessary.

Also, change various paths in flutter-engine.mk to ensure that the package
builds correctly.

Remove patch
0005-skip-configuration-dependency-if-unit-tests-are-disa.patch which
is upstream.

Tested with tests.package.test_flutter.TestFlutter.test_run

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-08-08 19:08:21 +02:00
Yann E. MORIN
68fd0009e3 package/flutter-engine: use appropriate TAR
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Adam Duskett <adam.duskett@amarulasolutions.com>
[Arnout: quote TAR="..."]
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
2024-06-05 23:31:22 +02:00
Adam Duskett
b53a542556 package/flutter-engine: bump version to 3.19.5
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-04-10 23:34:10 +02:00
Adam Duskett
cc38dde357 package/flutter-engine: bump version to 3.19.4
Add 0005-skip-configuration-dependency-if-unit-tests-are-disa.patch, which
fixes gtk+-3.0 being an unconditional requirement.

Other changes:
Flutter 3.19.x made Wayland and X11 an unconditional requirement, resulting in
the following errors when compiling:

"""
../../flutter/third_party/swiftshader/src/WSI/libWaylandClient.hpp:18:10: fatal error: 'wayland-client.h' file not found
   18 | #include <wayland-client.h>
      |          ^~~~~~~~~~~~~~~~~~

../../flutter/third_party/swiftshader/src/WSI/WaylandSurfaceKHR.cpp:15:
../../flutter/third_party/swiftshader/src/WSI/WaylandSurfaceKHR.hpp:22:10: fatal error: 'wayland-client.h' file not found
   22 | #include <wayland-client.h>
      |          ^~~~~~~~~~~~~~~~~~
1 error generated.
[1369/11229] CC obj/flutter/third_party/sqlite/sqlite.sqlite3.o
"""

After raising an issue found here:
https://github.com/flutter/flutter/issues/144635 and after several hours of
searching, the problem is https://github.com/flutter/buildroot/commit/d01da2716
which hardcodes the following values if building for a Linux platform:
  - ozone_platform_x11 = true
  - ozone_platform_wayland = true

As upstream maintainers listed the above as low priority (P3), a simple fix is
to add two additional sed calls in FLUTTER_ENGINE_VULKAN_X11_SUPPORT_FIXUP and
FLUTTER_ENGINE_VULKAN_WAYLAND_SUPPORT_FIXUP which set ozone_platform_x11 and
ozone_platform_wayland to the appropriate values.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Arnout Vandecappelle <arnout@mind.be>
2024-03-26 00:10:04 +01:00
Adam Duskett
8b34f72fbe package/flutter-engine: bump version to 3.16.8
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-01-20 21:47:37 +01:00
Adam Duskett
019cfcfc4a package/flutter-engine/Config.in: Drop nptl dependency
As Yann mentioned in commit 9d8497e79d, a
dependency on a glibc toolchain implies a dependency on
BR2_TOOLCHAIN_HAS_THREADS_NPTL. As such, remove the dependency from
package/flutter-engine/Config.in.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-01-20 21:44:12 +01:00
Adam Duskett
15e524a10e package/flutter-engine: Add profile runtime mode selection
Buildroot only offers two possible runtime modes for Flutter that are
automatically selected based on what the user has selected:
  - debug if BR2_ENABLE_RUNTIME_DEBUG is enabled.
  - release if BR2_ENABLE_RUNTIME_DEBUG is not enabled.

However, Flutter also offers the profile runtime mode option.

From https://docs.flutter.dev/testing/build-modes:

```
"Use profile mode when you want to analyze performance."

What is profile mode?
Some debugging ability is maintained in profile mode, which is enough to
profile your app's performance. Profile mode is turned off on the emulator
and simulator because their behavior does not represent actual performance.
```

As Flutter projects can be heavy and consume many resources, it is necessary
to allow users developing a Flutter application to profile their application
during development.

This patch introduces a new choice: FLUTTER_ENGINE_RUNTIME_MODE_PROFILE.
If unselected, the global option BR2_ENABLE_RUNTIME_DEBUG continues to
determine whether to build Flutter in release or debug mode. This new option
may confuse some users who wonder where the release and debug options are, so
the help menu section under the FLUTTER_ENGINE_RUNTIME_MODE_PROFILE option
explains that the global BR2_ENABLE_RUNTIME_DEBUG option controls the debug
and release modes.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-01-11 19:40:55 +01:00
Adam Duskett
9c954953b4 package/flutter-engine: bump version to 3.16.5
Flutter 3.16 includes 1,954 commits and improvements.

Flutter 3.16.0 also sets Material 3 as the default visual style for
applications.

A brief changelog can be found here:
https://docs.flutter.dev/release/release-notes/release-notes-3.16.0

A full changelog is provided below, which is provided at the end of the
brief changelog page found above:
https://github.com/flutter/engine/compare/3.13.0%E2%80%A63.16.0-0.5.pre

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2024-01-10 23:49:58 +01:00
Adam Duskett
439c9516e8 package/flutter-engine: don't pollute user's home directory
flutter-engine will forcibly create ~/.dart/ and ~/.flutter/ and store
stuff in there.

This is however quite dirty and pollutes the user's home, and will also
not work when the home is read-only (e.g. shared in a container).

Forcibly redirect flutter-engine to the same location where we
redirected host-flutter-sdk-bin, using the same trick of redefining
HOME as for host-flutter-sdk-bin.

Ideally, we'd like to have some way to share this with all flutter-based
packages, but we so far have only a few of them, so it is too early to
even think about some commonalities (even less so about a shared infra).
So we just duplicate the setting for now, this can be revisited later.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2023-11-18 14:35:34 +01:00
Adam Duskett
62925d79cb package/flutter-engine: use impeller rendering engine
From https://docs.flutter.dev/perf/impeller:

Impeller provides a new rendering runtime for Flutter. The Flutter
team’s believes this solves Flutter’s early-onset jank issue. Impeller
precompiles a smaller, simpler set of shaders at Engine build time so
they don’t compile at runtime.

Impeller has the following objectives:

  - Predictable performance: Impeller compiles all shaders reflection
    and offline at build time. It builds all pipeline state objects
    upfront.  The engine controls caching and caches explicitly.

  - Instrumentable: Impeller tags and labels all graphics resources
    like textures, and buffers. It can capture and persist animations
    to disk without affecting per-frame rendering performance.

  - Portable: Flutter doesn’t tie Impeller to a specific client
    rendering API.  You can author shaders once and convert them to
    backend-specific formats as necessary.

  - Leverages modern graphics APIs: Impeller uses, but doesn’t depend
    on, features available in modern APIs like Metal and Vulkan.

  - Leverages concurrency: Impeller can distribute single-frame
    workloads across multiple threads if necessary.

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2023-11-03 10:57:28 +01:00
Adam Duskett
ae5a33052c package/flutter-engine: bump version to 3.13.9
Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2023-11-03 10:44:24 +01:00
Adam Duskett
827da2242c package/flutter-engine: new package
There are many issues with this package:

- The release tarballs from https://github.com/flutter/engine are in no state
  to compile. They are only for the use of gclient to download a source
  directory structure suitable to build the Flutter engine! If you download,
  extract and attempt to run `./tools/gn --no-goma --no-prebuilt-dart-sdk`, you
  receive the error message:
  `No such file or directory: 'flutter/flutter/third_party/gn/gn.'

  But wait! Wasn't the gn binary just called? No, that's a wrapper in the
  Flutter source tree that formats arguments to call the real gn binary.
  The real gn is not provided in the tarball but is downloaded via gclient
  (among many other supporting repositories.)

  Even worse, the flutter buildsystem depends on the .git dirs being present.
  (https://github.com/meta-flutter/meta-flutter/issues/271) This dependency
  means it is not possible to create a reproducible tarball from the downloaded
  sources, which is why there is no .hash file provided.

  I have asked the flutter project to release full tarballs suitable for
  compiling here: https://github.com/flutter/flutter/issues/130734

- Flutter engine includes a patched copy of clang that must be used to compile.
  Using a Buildroot-build clang results in linking warning and errors.
  As such, we depend on LLVM_ARCH_SUPPORTS but use the included clang for
  building. On the plus side, this saves time having to compile clang.

- flutter-engine relies on the "PUB_CACHE", that is provided by flutter-sdk,
  so we need a build dependency, even if no tool from host-flutter-sdk-bin
  is used to build flutter-engine

Tested with:
  - Debian 11 and 12
  - Ubuntu 18.04, 20.04, and 22.04
  - Fedora 38
  - Per-package directories

Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com>
[yann.morin.1998@free.fr:
  - search gclient.py from PATH
  - indent shell script with 4 spaces
  - reorganise schell script with prepare/cleanup
  - tweak comment about weirdness of flutter buildsystem
  - use suitable-extactor and TAR_OPTIONS
  - use FLUTTER_SDK_BIN_PUB_CACHE
  - add dependency to host-futter-sdk-bin (Adam)
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2023-09-30 00:11:58 +02:00