package/flutter-sdk-bin/Config.in.host: change flutter-pub-cache location
When running the command "flutter pub get," the plugins are stored in the pub-cache directory along with their sha256sum hashes. The default location of the pub-cache directory is current $(HOST_DIR)/share/flutter/sdk/.pub-cache, which is not an acceptable choice by default because every plugin is re-downloaded during every build of a flutter application either during a new build or when building with the per-package-directory option enabled. Furthermore, keeping the pub-cache in its current location prevents users from committing the pub-cache directory to git for faster rebuilds of a Buildroot-based system, as users cannot store the pub-cache for later use. To fix the above issue completely, the following two changes must occur: - Change the hard-coded Flutter pub-cache location to $(DL_DIR)/br-flutter-pub-cache. - Remove the `rm -rf $(HOST_FLUTTER_SDK_BIN_SDK)/.pub-cache` and the associated comment about why the build system removes the .pub-cache directory. After further research, the help text of the precache command reads, "Populate the Flutter tool's cache of binary artifacts." The current reasoning listed in the comments is not accurate for a the following reasons: 1. We do not want to remove their directory if users already have a pub cache they have symlinked to. 2. If the flutter-sdk-bin package previously set up the pub-cache, then the pub-cache directory is set up with the options we want, and there is no reason to remove the pub-cache directory. Note that upstream considers it safe to have multiple instances of readers/writers to the pub cache concurently, which is a situation that can happen when two flutter-based pacakges are going to be built in parallel. There have been reports upstream [0] [1] [2] where concurrency was an issue, and they have always been fixed [3] [4] (or considered fixed already). So we can assune that, if the conncurrent ccess to the shared pub-cache causes issues, that will be an upstream bug that will get solved. If that turns out to be an unsolvable problem, we'll still have the option to run the pub-get commands under flock. [0] https://github.com/dart-lang/pub/issues/1178 [1] https://github.com/dart-lang/pub/issues/3404 [2] https://github.com/dart-lang/pub/issues/3420 [3] https://github.com/dart-lang/pub/issues/1178#issuecomment-1006489414 [4] https://github.com/dart-lang/pub/issues/1178#issuecomment-1007273739 Signed-off-by: Adam Duskett <adam.duskett@amarulasolutions.com> [yann.morin.1998@free.fr: add blurb about concurrent access] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
parent
7a59c3a4d4
commit
37809258fc
@ -41,11 +41,8 @@ define HOST_FLUTTER_SDK_BIN_CONFIGURE_CMDS
|
||||
$(HOST_FLUTTER_SDK_BIN_ENV) $(@D)/bin/dart --disable-analytics
|
||||
endef
|
||||
|
||||
# Remove the cache, as we will run precache after setting up flutter and dart
|
||||
# with the new config options.
|
||||
define HOST_FLUTTER_SDK_BIN_BUILD_CMDS
|
||||
mkdir -p $(HOST_FLUTTER_SDK_BIN_SDK)
|
||||
rm -rf $(HOST_FLUTTER_SDK_BIN_SDK)/.pub-cache
|
||||
cd $(@D) && \
|
||||
$(HOST_FLUTTER_SDK_BIN_ENV) $(@D)/bin/flutter precache;
|
||||
endef
|
||||
@ -104,4 +101,4 @@ HOST_FLUTTER_SDK_BIN_DART_BIN = \
|
||||
$(eval $(host-generic-package))
|
||||
|
||||
# For target packages to locate said pub-cache
|
||||
FLUTTER_SDK_BIN_PUB_CACHE = $(HOST_FLUTTER_SDK_BIN_SDK)/.pub-cache
|
||||
FLUTTER_SDK_BIN_PUB_CACHE = $(DL_DIR)/br-flutter-pub-cache
|
||||
|
Loading…
Reference in New Issue
Block a user