-
Notifications
You must be signed in to change notification settings - Fork 6k
[web] Support -j to use goma in felt build #13259
Conversation
lib/web_ui/dev/build.dart
Outdated
int get gomaWorkers { | ||
final String gomaWorkersArg = argResults['goma']; | ||
if (gomaWorkersArg != null) { | ||
return int.parse(gomaWorkersArg); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will throw if I pass -jk
, use tryParse instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I want it to throw if you pass a non-integer.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or do you think it's better to print a warning, and continue building without goma workers?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No idea, people tend to file bugs when they see stack traces, regardless of the content. If this is only for the flutter web team I wouldn't worry about it
lib/web_ui/dev/README.md
Outdated
@@ -23,6 +23,14 @@ felt build --watch | |||
|
|||
If you don't want to add `felt` to your path, you can still invoke it using a relative path like `./web_ui/dev/felt <command>` | |||
|
|||
## Using goma | |||
Goma is a great way to speed up your builds. In order to use goma, you first need to install it. Here are the instructions for [linux](https://g3doc.corp.google.com/devtools/goma/g3doc/how-to-use-goma/how-to-install-goma-linux.md) and [mac](https://g3doc.corp.google.com/devtools/goma/g3doc/how-to-use-goma/how-to-install-goma-mac.md). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's not put internal links in our public docs. Instead, we could have a very short sentence sending googlers to goma, something like:
For googlers: accelerate your builds with goma
If you are a Google employee you can use an internal instance of goma to speed up your builds.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
lib/web_ui/dev/build.dart
Outdated
..addOption( | ||
'goma', | ||
abbr: 'j', | ||
help: 'Enable parallelization through goma', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you sure this is a goma option and not ninja in general? I thought even without goma this option would speed up your ninja builds by parallelizing across multiple CPU cores.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for pointing this out. You are right, this is a ninja parallelization option that it inherited from Make. I'll update the text and variable names accordingly.
Once goma is installed and ready, you can take advantage of it in your builds: | ||
``` | ||
felt build [-w] -j 100 | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for derailing this again, but now that we've figured out that -j
is available to everyone, how about we make this useful for everyone? Strawman:
Speeding up your builds
You can speed up your builds by using more CPU cores. Pass -j
to specify the desired level of parallelism, like so:
felt build [-w] -j 100
If you are a Google employee you can use an internal instance of Goma to parallelize your builds. Because Goma compiles code on remote servers, this option is effective even on low-powered laptops.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for writing this up 😃
[email protected]:flutter/engine.git/compare/8882bf3c73f5...39e6901 git log 8882bf3..39e6901 --no-merges --oneline 2019-10-21 [email protected] Add recipe changelog (flutter/engine#13270) 2019-10-21 [email protected] fix NPE in accessibility bridge (flutter/engine#13255) 2019-10-21 [email protected] Roll src/third_party/skia 9889d509ed9f..56f569d9bec2 (21 commits) (flutter/engine#13266) 2019-10-21 [email protected] Roll fuchsia/sdk/core/mac-amd64 from hc4p_... to hALu4... (flutter/engine#13252) 2019-10-21 [email protected] [web] Support input action (flutter/engine#13268) 2019-10-21 [email protected] [web] Support -j to use goma in felt build (flutter/engine#13259) 2019-10-21 [email protected] Roll fuchsia/sdk/core/linux-amd64 from 30Ua7... to _e7Up... (flutter/engine#13254) 2019-10-21 [email protected] Hold a reference to the Skia unref queue in UIDartState (flutter/engine#13239) 2019-10-21 [email protected] Do not attempt to drain the SkiaUnrefQueue in the destructor (flutter/engine#13237) 2019-10-21 [email protected] Updated license script to ignore testdata directories, which often contain object files and other compilation results (flutter/engine#13261) 2019-10-21 [email protected] Add templates to generate fuchsia host bundles (flutter/engine#13158) 2019-10-21 [email protected] Update ui.instantiateImageCodec docs to reflect what it does. (flutter/engine#13233) 2019-10-21 [email protected] Update CanvasKit to 0.7.0 and flesh out painting (flutter/engine#13240) 2019-10-19 [email protected] Roll fuchsia/sdk/core/linux-amd64 from CYDvx... to 30Ua7... (flutter/engine#13251) 2019-10-19 [email protected] Roll fuchsia/sdk/core/mac-amd64 from 0JpMS... to hc4p_... (flutter/engine#13250) 2019-10-19 [email protected] Roll fuchsia/sdk/core/linux-amd64 from bdTv5... to CYDvx... (flutter/engine#13249) 2019-10-19 [email protected] Roll src/third_party/skia c65eb34d2f37..9889d509ed9f (1 commits) (flutter/engine#13248) 2019-10-19 [email protected] Roll fuchsia/sdk/core/mac-amd64 from SevlL... to 0JpMS... (flutter/engine#13244) 2019-10-19 [email protected] Roll src/third_party/skia 7605c89c00f7..c65eb34d2f37 (3 commits) (flutter/engine#13243) 2019-10-19 [email protected] Ignore *.obj files when gathering licenses (flutter/engine#13241) 2019-10-18 [email protected] Roll buildroot to 994c6 (flutter/engine#13236) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
[email protected]:flutter/engine.git/compare/8882bf3c73f5...39e6901 git log 8882bf3..39e6901 --no-merges --oneline 2019-10-21 [email protected] Add recipe changelog (flutter/engine#13270) 2019-10-21 [email protected] fix NPE in accessibility bridge (flutter/engine#13255) 2019-10-21 [email protected] Roll src/third_party/skia 9889d509ed9f..56f569d9bec2 (21 commits) (flutter/engine#13266) 2019-10-21 [email protected] Roll fuchsia/sdk/core/mac-amd64 from hc4p_... to hALu4... (flutter/engine#13252) 2019-10-21 [email protected] [web] Support input action (flutter/engine#13268) 2019-10-21 [email protected] [web] Support -j to use goma in felt build (flutter/engine#13259) 2019-10-21 [email protected] Roll fuchsia/sdk/core/linux-amd64 from 30Ua7... to _e7Up... (flutter/engine#13254) 2019-10-21 [email protected] Hold a reference to the Skia unref queue in UIDartState (flutter/engine#13239) 2019-10-21 [email protected] Do not attempt to drain the SkiaUnrefQueue in the destructor (flutter/engine#13237) 2019-10-21 [email protected] Updated license script to ignore testdata directories, which often contain object files and other compilation results (flutter/engine#13261) 2019-10-21 [email protected] Add templates to generate fuchsia host bundles (flutter/engine#13158) 2019-10-21 [email protected] Update ui.instantiateImageCodec docs to reflect what it does. (flutter/engine#13233) 2019-10-21 [email protected] Update CanvasKit to 0.7.0 and flesh out painting (flutter/engine#13240) 2019-10-19 [email protected] Roll fuchsia/sdk/core/linux-amd64 from CYDvx... to 30Ua7... (flutter/engine#13251) 2019-10-19 [email protected] Roll fuchsia/sdk/core/mac-amd64 from 0JpMS... to hc4p_... (flutter/engine#13250) 2019-10-19 [email protected] Roll fuchsia/sdk/core/linux-amd64 from bdTv5... to CYDvx... (flutter/engine#13249) 2019-10-19 [email protected] Roll src/third_party/skia c65eb34d2f37..9889d509ed9f (1 commits) (flutter/engine#13248) 2019-10-19 [email protected] Roll fuchsia/sdk/core/mac-amd64 from SevlL... to 0JpMS... (flutter/engine#13244) 2019-10-19 [email protected] Roll src/third_party/skia 7605c89c00f7..c65eb34d2f37 (3 commits) (flutter/engine#13243) 2019-10-19 [email protected] Ignore *.obj files when gathering licenses (flutter/engine#13241) 2019-10-18 [email protected] Roll buildroot to 994c6 (flutter/engine#13236) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected] on the revert to ensure that a human is aware of the problem. To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
No description provided.