You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Separate engine builds to build, test archive components #81855
We are planning to split the Mac iOS builds into multiple smaller pieces to optimize resource usage and be able to build/test/archive in less than 30 mins.
In order to start splitting the build it would be great if we can get a dependency graph to help us identify how can we split the gn, ninja, test, archive steps of the recipe.
The next step is to create the artifacts packager, to optimize the execution time we'll need to package only what is required.
@gw280 can you please help us identify which directories from out are needed for each flavor?
I suspect it's easier to identify the directories that aren't needed, like obj/ and exe.unstripped/. I'm not sure there would be other unneeded ones at the top level beyond those two, but if we need to cut down on space, we can pick out the exact things under gen/ that are needed.
In particular, this is the actual packaging script and it looks for Flutter.framework only.
For running tests, ultimately we just need the *_unittests, *_tests and *_benchmarks executables and their library and asset dependencies. This is going to be harder to enumerate because the assets and dependencies will differ with each binary and could change when people update the tests etc. In this case I'd say go with @zanderso's suggestion of just removing the directories we are pretty sure aren't needed. obj should be fine, gen is needed because some of the assets like kernel_blob.bin for shell_unittests (for example) are needed from there.
I wonder if we can use gn to list the runtime deps and package them in the most efficient way possible, I've seen that approach used by different teams.
An initial implementation of a tester recipe has been created, that runs Flutter tests on the engine builds uploaded by the engine_v2 recipes. Further work will be done on deciding whether this recipe can be combined with the existing flutter/flutter_drone recipe that is currently used to run tests, using an alternate way of downloading artifacts.
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.
Activity
godofredoc commentedon May 4, 2021
\cc @zanderso
godofredoc commentedon May 4, 2021
@gw280 is this something you can help us with?
gw280 commentedon May 4, 2021
Definitely. When are you going to need this by?
godofredoc commentedon May 4, 2021
I'm planning to start working on this on Thu | Fri this week.
gw280 commentedon May 4, 2021
OK, I'll get this sorted out today/tomorrow.
godofredoc commentedon May 21, 2021
@gw280 thanks for creating the dependency graph. To follow up on this topic we will need to create three different recipes:
Note: I'll refer to a single combination of build flags as flavor. eg ios_debug, ios_debug_arm
So far this is the configuration used by the builder recipe:
The next step is to create the artifacts packager, to optimize the execution time we'll need to package only what is required.
@gw280 can you please help us identify which directories from out are needed for each flavor?
zanderso commentedon May 21, 2021
I suspect it's easier to identify the directories that aren't needed, like
obj/andexe.unstripped/. I'm not sure there would be other unneeded ones at the top level beyond those two, but if we need to cut down on space, we can pick out the exact things undergen/that are needed.godofredoc commentedon May 21, 2021
Removing those two directories are probably a good enough optimization, I'll start with that.
gw280 commentedon May 24, 2021
So for packaging itself, I think we all need is the
.frameworkfiles in out/`:https://github.com/flutter/engine/blob/master/sky/tools/create_ios_framework.py#L32
In particular, this is the actual packaging script and it looks for
Flutter.frameworkonly.For running tests, ultimately we just need the
*_unittests,*_testsand*_benchmarksexecutables and their library and asset dependencies. This is going to be harder to enumerate because the assets and dependencies will differ with each binary and could change when people update the tests etc. In this case I'd say go with @zanderso's suggestion of just removing the directories we are pretty sure aren't needed.objshould be fine,genis needed because some of the assets likekernel_blob.binforshell_unittests(for example) are needed from there.godofredoc commentedon May 24, 2021
I wonder if we can use gn to list the runtime deps and package them in the most efficient way possible, I've seen that approach used by different teams.
29 remaining items
Add gen_snapshot to flutter_gtk.
Add post-processed dart files to web_sdk.
Gn target to generate gen_snapshot for windows.
godofredoc commentedon Sep 30, 2022
https://flutter-review.googlesource.com/c/infra/+/34500 adding prod drone builders.
Move the two remaining engine v2 builds to prod. (#37274)
Archive windows gen_snapshot.exe. (#35414)
Add archives to android aot engine. (#37601)
Move the two remaining engine v2 builds to prod. (flutter-team-archiv…
Archive windows gen_snapshot.exe. (flutter-team-archive#35414)
Add archives to android aot engine. (flutter-team-archive#37601)
Move windows engine_v2 to prod. (#37680)
whesse commentedon Dec 12, 2022
An initial implementation of a tester recipe has been created, that runs Flutter tests on the engine builds uploaded by the engine_v2 recipes. Further work will be done on deciding whether this recipe can be combined with the existing flutter/flutter_drone recipe that is currently used to run tests, using an alternate way of downloading artifacts.
Follow this on the tracking issue: #116906
github-actions commentedon Jun 1, 2023
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of
flutter doctor -vand a minimal reproduction of the issue.