Adds support for building without goma.
For security builders we need to support building without goma. Goma is
not accepted as a trusted system.
Bug: https://github.com/flutter/flutter/issues/108760
Change-Id: I6d286d22d3636b9275723e5a1b42cef97a39e6c2
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/32841
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
Reviewed-by: Yusuf Mohsinally <mohsinally@google.com>
diff --git a/recipe_modules/build_util/api.py b/recipe_modules/build_util/api.py
index c03a3d3..10292f3 100644
--- a/recipe_modules/build_util/api.py
+++ b/recipe_modules/build_util/api.py
@@ -15,7 +15,8 @@
def _initialize(self):
if self._initialized:
return
- self.m.goma.ensure()
+ if not self.m.properties.get('no_goma', False):
+ self.m.goma.ensure()
self._initialized = True
def run_gn(self, gn_args, checkout_path):
@@ -32,13 +33,15 @@
if self.m.properties.get('no_lto', False) and '--no-lto' not in gn_args:
gn_args += ('--no-lto',)
gn_cmd.extend(gn_args)
- self.m.goma.set_path(self.m.goma.goma_dir)
- env = {'GOMA_DIR': self.m.goma.goma_dir}
+ env = {}
+ if not self.m.properties.get('no_goma', False):
+ self.m.goma.set_path(self.m.goma.goma_dir)
+ env = {'GOMA_DIR': self.m.goma.goma_dir}
with self.m.context(env=env):
self.m.step('gn %s' % ' '.join(gn_args), gn_cmd)
- def _build(self, config, checkout_path, targets, tool):
- """Builds using ninja.
+ def _build_goma(self, config, checkout_path, targets, tool):
+ """Builds using ninja and goma.
Args:
config(str): A string with the configuration to build.
@@ -57,6 +60,22 @@
name = 'build %s' % ' '.join([config] + list(targets))
self.m.step(name, ninja_args)
+ def _build_no_goma(self, config, checkout_path, targets, tool):
+ """Builds using ninja without goma.
+
+ Args:
+ config(str): A string with the configuration to build.
+ checkout_path(Path): A path object with the checkout location.
+ targets(list): A list of string with the ninja targets to build.
+ """
+ self._initialize()
+ build_dir = checkout_path.join('out/%s' % config)
+ ninja_args = [tool, '-C', build_dir]
+ ninja_args.extend(targets)
+ with self.m.depot_tools.on_path():
+ name = 'build %s' % ' '.join([config] + list(targets))
+ self.m.step(name, ninja_args)
+
def build(self, config, checkout_path, targets):
"""Builds using ninja.
@@ -65,7 +84,10 @@
checkout_path(Path): A path object with the checkout location.
targets(list): A list of string with the ninja targets to build.
"""
- self._build(config, checkout_path, targets, self.m.depot_tools.ninja_path)
+ if not self.m.properties.get('no_goma', False):
+ self._build_goma(config, checkout_path, targets, self.m.depot_tools.ninja_path)
+ else:
+ self._build_no_goma(config, checkout_path, targets, self.m.depot_tools.ninja_path)
def build_autoninja(self, config, checkout_path, targets):
"""Builds using autoninja.
@@ -75,6 +97,7 @@
checkout_path(Path): A path object with the checkout location.
targets(list): A list of string with the ninja targets to build.
"""
- self._build(
- config, checkout_path, targets, self.m.depot_tools.autoninja_path
- )
+ if not self.m.properties.get('no_goma', False):
+ self._build_goma(config, checkout_path, targets, self.m.depot_tools.autoninja_path)
+ else:
+ self._build_no_goma(config, checkout_path, targets, self.m.depot_tools.autoninja_path)
diff --git a/recipe_modules/build_util/examples/full.expected/basic.json b/recipe_modules/build_util/examples/full.expected/goma.json
similarity index 100%
rename from recipe_modules/build_util/examples/full.expected/basic.json
rename to recipe_modules/build_util/examples/full.expected/goma.json
diff --git a/recipe_modules/build_util/examples/full.expected/no_goma.json b/recipe_modules/build_util/examples/full.expected/no_goma.json
new file mode 100644
index 0000000..b7efb10
--- /dev/null
+++ b/recipe_modules/build_util/examples/full.expected/no_goma.json
@@ -0,0 +1,90 @@
+[
+ {
+ "cmd": [],
+ "name": "ensure goma"
+ },
+ {
+ "cmd": [
+ "cipd",
+ "ensure",
+ "-root",
+ "[CACHE]/goma/client",
+ "-ensure-file",
+ "fuchsia/third_party/goma/client/${platform} integration",
+ "-max-threads",
+ "0",
+ "-json-output",
+ "/path/to/tmp/json"
+ ],
+ "infra_step": true,
+ "name": "ensure goma.ensure_installed",
+ "~followup_annotations": [
+ "@@@STEP_NEST_LEVEL@1@@@",
+ "@@@STEP_LOG_LINE@json.output@{@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
+ "@@@STEP_LOG_LINE@json.output@ {@@@",
+ "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-integration-----\", @@@",
+ "@@@STEP_LOG_LINE@json.output@ \"package\": \"fuchsia/third_party/goma/client/resolved-platform\"@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@ ]@@@",
+ "@@@STEP_LOG_LINE@json.output@ }@@@",
+ "@@@STEP_LOG_LINE@json.output@}@@@",
+ "@@@STEP_LOG_END@json.output@@@"
+ ]
+ },
+ {
+ "cmd": [
+ "python",
+ "[START_DIR]/flutter/tools/gn",
+ "--no-lto"
+ ],
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "name": "gn --no-lto"
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/ninja",
+ "-C",
+ "[START_DIR]/out/release",
+ "mytarget"
+ ],
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "DEPOT_TOOLS_UPDATE": [
+ "0"
+ ],
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "build release mytarget"
+ },
+ {
+ "cmd": [
+ "RECIPE_REPO[depot_tools]/autoninja",
+ "-C",
+ "[START_DIR]/out/release",
+ "mytarget"
+ ],
+ "env": {
+ "GOMA_DIR": "[CACHE]/goma/client"
+ },
+ "env_suffixes": {
+ "DEPOT_TOOLS_UPDATE": [
+ "0"
+ ],
+ "PATH": [
+ "RECIPE_REPO[depot_tools]"
+ ]
+ },
+ "name": "build release mytarget (2)"
+ },
+ {
+ "name": "$result"
+ }
+]
\ No newline at end of file
diff --git a/recipe_modules/build_util/examples/full.py b/recipe_modules/build_util/examples/full.py
index 869614c..639fd1b 100644
--- a/recipe_modules/build_util/examples/full.py
+++ b/recipe_modules/build_util/examples/full.py
@@ -25,4 +25,5 @@
def GenTests(api):
- yield api.test('basic', api.properties(no_lto=True, goma_jobs=100))
+ yield api.test('goma', api.properties(no_lto=True, goma_jobs=100))
+ yield api.test('no_goma', api.properties(no_lto=True, goma_jobs=100, no_goma=True))
diff --git a/recipes/engine/framework_smoke.expected/no_goma.json b/recipes/engine/framework_smoke.expected/no_goma.json
index 1304797..47078ca 100644
--- a/recipes/engine/framework_smoke.expected/no_goma.json
+++ b/recipes/engine/framework_smoke.expected/no_goma.json
@@ -213,43 +213,6 @@
"name": "Build host_debug_unopt"
},
{
- "cmd": [],
- "name": "Build host_debug_unopt.ensure goma",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[CACHE]/goma/client",
- "-ensure-file",
- "fuchsia/third_party/goma/client/${platform} integration",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "infra_step": true,
- "name": "Build host_debug_unopt.ensure goma.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-integration-----\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"fuchsia/third_party/goma/client/resolved-platform\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ ]@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
"cmd": [
"python",
"[CACHE]/builder/src/flutter/tools/gn",
@@ -257,182 +220,17 @@
"--full-dart-sdk",
"--prebuilt-dart-sdk"
],
- "env": {
- "GOMA_DIR": "[CACHE]/goma/client"
- },
"name": "Build host_debug_unopt.gn --unoptimized --full-dart-sdk --prebuilt-dart-sdk",
"~followup_annotations": [
"@@@STEP_NEST_LEVEL@1@@@"
]
},
{
- "cmd": [],
- "name": "Build host_debug_unopt.setup goma",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [],
- "name": "Build host_debug_unopt.setup goma.ensure cpython3",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython3",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "RECIPE_MODULE[fuchsia::python3]/resources/tool_manifest.json",
- "/path/to/tmp/json"
- ],
- "env": {
- "GLOG_log_dir": "[CLEANUP]",
- "GOMA_CACHE_DIR": "[CACHE]/goma",
- "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
- "GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
- "GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
- "GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
- "GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "infra_step": true,
- "name": "Build host_debug_unopt.setup goma.ensure cpython3.read manifest",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@",
- "@@@STEP_LOG_LINE@tool_manifest.json@{@@@",
- "@@@STEP_LOG_LINE@tool_manifest.json@ \"path\": \"path/to/cpython3\",@@@",
- "@@@STEP_LOG_LINE@tool_manifest.json@ \"version\": \"version:pinned-version\"@@@",
- "@@@STEP_LOG_LINE@tool_manifest.json@}@@@",
- "@@@STEP_LOG_END@tool_manifest.json@@@"
- ]
- },
- {
- "cmd": [],
- "name": "Build host_debug_unopt.setup goma.ensure cpython3.install path/to/cpython3",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@3@@@"
- ]
- },
- {
- "cmd": [
- "vpython3",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "ensure-directory",
- "--mode",
- "0777",
- "[START_DIR]/cipd_tool/path/to/cpython3/version%3Apinned-version"
- ],
- "env": {
- "GLOG_log_dir": "[CLEANUP]",
- "GOMA_CACHE_DIR": "[CACHE]/goma",
- "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
- "GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
- "GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
- "GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
- "GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "infra_step": true,
- "name": "Build host_debug_unopt.setup goma.ensure cpython3.install path/to/cpython3.ensure package directory",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@"
- ]
- },
- {
- "cmd": [
- "cipd",
- "ensure",
- "-root",
- "[START_DIR]/cipd_tool/path/to/cpython3/version%3Apinned-version",
- "-ensure-file",
- "path/to/cpython3 version:pinned-version",
- "-max-threads",
- "0",
- "-json-output",
- "/path/to/tmp/json"
- ],
- "env": {
- "GLOG_log_dir": "[CLEANUP]",
- "GOMA_CACHE_DIR": "[CACHE]/goma",
- "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
- "GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
- "GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
- "GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
- "GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "infra_step": true,
- "name": "Build host_debug_unopt.setup goma.ensure cpython3.install path/to/cpython3.ensure_installed",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@4@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"result\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"instance_id\": \"resolved-instance_id-of-version:pinned-v\", @@@",
- "@@@STEP_LOG_LINE@json.output@ \"package\": \"path/to/cpython3\"@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ ]@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "[START_DIR]/cipd_tool/path/to/cpython3/version%3Apinned-version/bin/python3",
- "[CACHE]/goma/client/goma_ctl.py",
- "restart"
- ],
- "env": {
- "GLOG_log_dir": "[CLEANUP]",
- "GOMA_CACHE_DIR": "[CACHE]/goma",
- "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
- "GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
- "GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
- "GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
- "GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "infra_step": true,
- "name": "Build host_debug_unopt.setup goma.start goma",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
"cmd": [
"RECIPE_REPO[depot_tools]/ninja",
- "-j",
- "100",
"-C",
"[CACHE]/builder/src/out/host_debug_unopt"
],
- "env": {
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
"env_suffixes": {
"DEPOT_TOOLS_UPDATE": [
"0"
@@ -448,143 +246,6 @@
},
{
"cmd": [],
- "name": "Build host_debug_unopt.teardown goma",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@1@@@"
- ]
- },
- {
- "cmd": [
- "[START_DIR]/cipd_tool/path/to/cpython3/version%3Apinned-version/bin/python3",
- "[CACHE]/goma/client/goma_ctl.py",
- "jsonstatus",
- "[CACHE]/goma/client/jsonstatus"
- ],
- "env": {
- "GLOG_log_dir": "[CLEANUP]",
- "GOMA_CACHE_DIR": "[CACHE]/goma",
- "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
- "GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
- "GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
- "GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
- "GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "name": "Build host_debug_unopt.teardown goma.goma jsonstatus",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@json.output@{@@@",
- "@@@STEP_LOG_LINE@json.output@ \"notice\": [@@@",
- "@@@STEP_LOG_LINE@json.output@ {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"infra_status\": {@@@",
- "@@@STEP_LOG_LINE@json.output@ \"num_user_error\": 0, @@@",
- "@@@STEP_LOG_LINE@json.output@ \"ping_status_code\": 200@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ }@@@",
- "@@@STEP_LOG_LINE@json.output@ ]@@@",
- "@@@STEP_LOG_LINE@json.output@}@@@",
- "@@@STEP_LOG_END@json.output@@@"
- ]
- },
- {
- "cmd": [
- "[START_DIR]/cipd_tool/path/to/cpython3/version%3Apinned-version/bin/python3",
- "[CACHE]/goma/client/goma_ctl.py",
- "stat"
- ],
- "env": {
- "GLOG_log_dir": "[CLEANUP]",
- "GOMA_CACHE_DIR": "[CACHE]/goma",
- "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
- "GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
- "GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
- "GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
- "GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "name": "Build host_debug_unopt.teardown goma.goma stats",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "[START_DIR]/cipd_tool/path/to/cpython3/version%3Apinned-version/bin/python3",
- "[CACHE]/goma/client/goma_ctl.py",
- "stop"
- ],
- "env": {
- "GLOG_log_dir": "[CLEANUP]",
- "GOMA_CACHE_DIR": "[CACHE]/goma",
- "GOMA_DEPS_CACHE_FILE": "goma_deps_cache",
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_DUMP_STATS_FILE": "[CACHE]/goma/client/goma_stats.json",
- "GOMA_LOCAL_OUTPUT_CACHE_DIR": "[CACHE]/goma/localoutputcache",
- "GOMA_MAX_SUM_OUTPUT_SIZE_IN_MB": "256",
- "GOMA_SERVER_HOST": "rbe-prod1.endpoints.fuchsia-infra-goma-prod.cloud.goog",
- "GOMA_STORE_LOCAL_RUN_OUTPUT": "True",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "name": "Build host_debug_unopt.teardown goma.stop goma",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [
- "vpython3",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CLEANUP]/compiler_proxy.WARNING",
- "/path/to/tmp/"
- ],
- "env": {
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "infra_step": true,
- "name": "Build host_debug_unopt.teardown goma.read goma_client warning log",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@",
- "@@@STEP_LOG_LINE@compiler_proxy.WARNING@test log@@@",
- "@@@STEP_LOG_END@compiler_proxy.WARNING@@@"
- ]
- },
- {
- "cmd": [
- "vpython3",
- "-u",
- "RECIPE_MODULE[recipe_engine::file]/resources/fileutil.py",
- "--json-output",
- "/path/to/tmp/json",
- "copy",
- "[CACHE]/goma/client/goma_stats.json",
- "/path/to/tmp/"
- ],
- "env": {
- "GOMA_DIR": "[CACHE]/goma/client",
- "GOMA_TMP_DIR": "[CLEANUP]/goma",
- "GOMA_USE_LOCAL": "False"
- },
- "infra_step": true,
- "name": "Build host_debug_unopt.teardown goma.read goma_stats.json",
- "~followup_annotations": [
- "@@@STEP_NEST_LEVEL@2@@@"
- ]
- },
- {
- "cmd": [],
"name": "Checkout flutter/flutter"
},
{