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>
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>
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>