From cd8d4a659a2b622f4cc2674896ace670c57e9ad3 Mon Sep 17 00:00:00 2001 From: Andrii Shyshkalov Date: Wed, 13 Jun 2018 23:39:16 +0000 Subject: [PATCH] gclient recipe: use env_suffixes insetad of custom ENV manipulation. R=iannucci@chromium.org Recipe-Nontrivial-Roll: skia Recipe-Nontrivial-Roll: build_limited_scripts_slave Recipe-Nontrivial-Roll: release_scripts Recipe-Nontrivial-Roll: infra Recipe-Nontrivial-Roll: build Change-Id: Ie0b042389b7e2c505cd8dbecc1a30a37244ae238 Reviewed-on: https://chromium-review.googlesource.com/1100110 Reviewed-by: Robbie Iannucci Commit-Queue: Andrii Shyshkalov --- recipes/README.recipes.md | 28 +++++----- recipes/recipe_modules/gclient/api.py | 9 +--- .../gclient/examples/full.expected/basic.json | 54 ++++++++++++------- .../examples/full.expected/buildbot.json | 54 ++++++++++++------- .../examples/full.expected/revision.json | 54 ++++++++++++------- .../examples/full.expected/tryserver.json | 54 ++++++++++++------- 6 files changed, 160 insertions(+), 93 deletions(-) diff --git a/recipes/README.recipes.md b/recipes/README.recipes.md index 68c85c440..0bf88c6e8 100644 --- a/recipes/README.recipes.md +++ b/recipes/README.recipes.md @@ -226,12 +226,12 @@ Returns (Path): The "depot_tools" root directory. Wrapper for easy calling of gclient steps. -— **def [break\_locks](/recipes/recipe_modules/gclient/api.py#288)(self):** +— **def [break\_locks](/recipes/recipe_modules/gclient/api.py#283)(self):** Remove all index.lock files. If a previous run of git crashed, bot was reset, etc... we might end up with leftover index.lock files. -— **def [calculate\_patch\_root](/recipes/recipe_modules/gclient/api.py#310)(self, patch_project, gclient_config=None, patch_repo=None):** +— **def [calculate\_patch\_root](/recipes/recipe_modules/gclient/api.py#305)(self, patch_project, gclient_config=None, patch_repo=None):** Returns path where a patch should be applied to based patch_project. @@ -250,15 +250,15 @@ Returns: If patch_project is not given or not recognized, it'll be just first solution root. -— **def [checkout](/recipes/recipe_modules/gclient/api.py#235)(self, gclient_config=None, revert=RevertOnTryserver, inject_parent_got_revision=True, extra_sync_flags=None, \*\*kwargs):** +— **def [checkout](/recipes/recipe_modules/gclient/api.py#230)(self, gclient_config=None, revert=RevertOnTryserver, inject_parent_got_revision=True, extra_sync_flags=None, \*\*kwargs):** Return a step generator function for gclient checkouts. -  **@staticmethod**
— **def [config\_to\_pythonish](/recipes/recipe_modules/gclient/api.py#125)(cfg):** +  **@staticmethod**
— **def [config\_to\_pythonish](/recipes/recipe_modules/gclient/api.py#120)(cfg):** -— **def [get\_config\_defaults](/recipes/recipe_modules/gclient/api.py#119)(self):** +— **def [get\_config\_defaults](/recipes/recipe_modules/gclient/api.py#114)(self):** -  **@staticmethod**
— **def [got\_revision\_reverse\_mapping](/recipes/recipe_modules/gclient/api.py#130)(cfg):** +  **@staticmethod**
— **def [got\_revision\_reverse\_mapping](/recipes/recipe_modules/gclient/api.py#125)(cfg):** Returns the merged got_revision_reverse_mapping. @@ -266,7 +266,7 @@ Returns (dict): A mapping from property name -> project name. It merges the values of the deprecated got_revision_mapping and the new got_revision_reverse_mapping. -— **def [inject\_parent\_got\_revision](/recipes/recipe_modules/gclient/api.py#210)(self, gclient_config=None, override=False):** +— **def [inject\_parent\_got\_revision](/recipes/recipe_modules/gclient/api.py#205)(self, gclient_config=None, override=False):** Match gclient config to build revisions obtained from build_properties. @@ -276,7 +276,7 @@ Args: override (bool) - If True, will forcibly set revision and custom_vars even if the config already contains values for them. -  **@property**
— **def [is\_blink\_mode](/recipes/recipe_modules/gclient/api.py#275)(self):** +  **@property**
— **def [is\_blink\_mode](/recipes/recipe_modules/gclient/api.py#270)(self):** Indicates wether the caller is to use the Blink config rather than the Chromium config. This may happen for one of two reasons: @@ -285,22 +285,22 @@ Chromium config. This may happen for one of two reasons: 2. A try job comes in that applies to the Blink tree. (patch_project is blink) -— **def [resolve\_revision](/recipes/recipe_modules/gclient/api.py#147)(self, revision):** +— **def [resolve\_revision](/recipes/recipe_modules/gclient/api.py#142)(self, revision):** -— **def [runhooks](/recipes/recipe_modules/gclient/api.py#269)(self, args=None, name='runhooks', \*\*kwargs):** +— **def [runhooks](/recipes/recipe_modules/gclient/api.py#264)(self, args=None, name='runhooks', \*\*kwargs):** -— **def [set\_patch\_project\_revision](/recipes/recipe_modules/gclient/api.py#342)(self, patch_project, gclient_config=None):** +— **def [set\_patch\_project\_revision](/recipes/recipe_modules/gclient/api.py#337)(self, patch_project, gclient_config=None):** Updates config revision corresponding to patch_project. Useful for bot_update only, as this is the only consumer of gclient's config revision map. This doesn't overwrite the revision if it was already set. -  **@spec_alias.deleter**
— **def [spec\_alias](/recipes/recipe_modules/gclient/api.py#115)(self):** +  **@spec_alias.deleter**
— **def [spec\_alias](/recipes/recipe_modules/gclient/api.py#110)(self):** -— **def [sync](/recipes/recipe_modules/gclient/api.py#152)(self, cfg, extra_sync_flags=None, \*\*kwargs):** +— **def [sync](/recipes/recipe_modules/gclient/api.py#147)(self, cfg, extra_sync_flags=None, \*\*kwargs):** -  **@use_mirror.setter**
— **def [use\_mirror](/recipes/recipe_modules/gclient/api.py#102)(self, val):** +  **@use_mirror.setter**
— **def [use\_mirror](/recipes/recipe_modules/gclient/api.py#97)(self, val):** ### *recipe_modules* / [gerrit](/recipes/recipe_modules/gerrit) [DEPS](/recipes/recipe_modules/gerrit/__init__.py#1): [recipe\_engine/context][recipe_engine/recipe_modules/context], [recipe\_engine/json][recipe_engine/recipe_modules/json], [recipe\_engine/path][recipe_engine/recipe_modules/path], [recipe\_engine/python][recipe_engine/recipe_modules/python], [recipe\_engine/raw\_io][recipe_engine/recipe_modules/raw_io], [recipe\_engine/step][recipe_engine/recipe_modules/step] diff --git a/recipes/recipe_modules/gclient/api.py b/recipes/recipe_modules/gclient/api.py index 38db8a8a5..e4417aace 100644 --- a/recipes/recipe_modules/gclient/api.py +++ b/recipes/recipe_modules/gclient/api.py @@ -79,13 +79,8 @@ class GclientApi(recipe_api.RecipeApi): if self.spec_alias: prefix = ('[spec: %s] ' % self.spec_alias) + prefix - # TODO(phajdan.jr): create a helper for adding to PATH. - env = self.m.context.env - env.setdefault('PATH', '%(PATH)s') - env['PATH'] = self.m.path.pathsep.join([ - env['PATH'], str(self._module.PACKAGE_REPO_ROOT)]) - - with self.m.context(env=env): + with self.m.context( + env_suffixes={'PATH': [self._module.PACKAGE_REPO_ROOT]}): return self.m.python(prefix + name, self.package_repo_resource('gclient.py'), cmd, diff --git a/recipes/recipe_modules/gclient/examples/full.expected/basic.json b/recipes/recipe_modules/gclient/examples/full.expected/basic.json index 8df05f441..bd1b42dad 100644 --- a/recipes/recipe_modules/gclient/examples/full.expected/basic.json +++ b/recipes/recipe_modules/gclient/examples/full.expected/basic.json @@ -8,8 +8,10 @@ "--spec", "cache_dir = '[ROOT]/git_cache'\nsolutions = [{'custom_vars': {'string_var': 'string_val', 'true_var': True}, 'deps_file': '.DEPS.git', 'managed': True, 'name': 'src', 'url': 'https://chromium.googlesource.com/chromium/src.git'}]" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient setup" @@ -33,8 +35,10 @@ "--output-json", "/path/to/tmp/json" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient sync", @@ -60,8 +64,10 @@ "user.name", "local_bot" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient recurse (git config user.name)" @@ -77,8 +83,10 @@ "user.email", "local_bot@example.com" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient recurse (git config user.email)" @@ -93,8 +101,10 @@ "cache_dir = '[CACHE]/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'Angle', 'url': 'https://chromium.googlesource.com/angle/angle.git'}]" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient setup" @@ -121,8 +131,10 @@ "/path/to/tmp/json" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient sync", @@ -153,8 +165,10 @@ "local_bot" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient recurse (git config user.name)" @@ -171,8 +185,10 @@ "local_bot@example.com" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient recurse (git config user.email)" @@ -209,8 +225,10 @@ "runhooks" ], "cwd": "[START_DIR]/src", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "name": "gclient runhooks" }, diff --git a/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json b/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json index 52cdcba2c..8924768d8 100644 --- a/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json +++ b/recipes/recipe_modules/gclient/examples/full.expected/buildbot.json @@ -8,8 +8,10 @@ "--spec", "cache_dir = '[ROOT]/git_cache'\nsolutions = [{'custom_vars': {'string_var': 'string_val', 'true_var': True}, 'deps_file': '.DEPS.git', 'managed': True, 'name': 'src', 'url': 'https://chromium.googlesource.com/chromium/src.git'}]" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient setup" @@ -33,8 +35,10 @@ "--output-json", "/path/to/tmp/json" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient sync", @@ -60,8 +64,10 @@ "user.name", "local_bot" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient recurse (git config user.name)" @@ -77,8 +83,10 @@ "user.email", "local_bot@example.com" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient recurse (git config user.email)" @@ -93,8 +101,10 @@ "cache_dir = '[GIT_CACHE]'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'Angle', 'url': 'https://chromium.googlesource.com/angle/angle.git'}]" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient setup" @@ -121,8 +131,10 @@ "/path/to/tmp/json" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient sync", @@ -153,8 +165,10 @@ "local_bot" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient recurse (git config user.name)" @@ -171,8 +185,10 @@ "local_bot@example.com" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient recurse (git config user.email)" @@ -209,8 +225,10 @@ "runhooks" ], "cwd": "[START_DIR]/src", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "name": "gclient runhooks" }, diff --git a/recipes/recipe_modules/gclient/examples/full.expected/revision.json b/recipes/recipe_modules/gclient/examples/full.expected/revision.json index 9af753b90..23792dc0e 100644 --- a/recipes/recipe_modules/gclient/examples/full.expected/revision.json +++ b/recipes/recipe_modules/gclient/examples/full.expected/revision.json @@ -8,8 +8,10 @@ "--spec", "cache_dir = '[ROOT]/git_cache'\nsolutions = [{'custom_vars': {'string_var': 'string_val', 'true_var': True}, 'deps_file': '.DEPS.git', 'managed': True, 'name': 'src', 'url': 'https://chromium.googlesource.com/chromium/src.git'}]" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient setup" @@ -35,8 +37,10 @@ "--output-json", "/path/to/tmp/json" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient sync", @@ -62,8 +66,10 @@ "user.name", "local_bot" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient recurse (git config user.name)" @@ -79,8 +85,10 @@ "user.email", "local_bot@example.com" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient recurse (git config user.email)" @@ -95,8 +103,10 @@ "cache_dir = '[CACHE]/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'Angle', 'url': 'https://chromium.googlesource.com/angle/angle.git'}]" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient setup" @@ -125,8 +135,10 @@ "/path/to/tmp/json" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient sync", @@ -157,8 +169,10 @@ "local_bot" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient recurse (git config user.name)" @@ -175,8 +189,10 @@ "local_bot@example.com" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient recurse (git config user.email)" @@ -213,8 +229,10 @@ "runhooks" ], "cwd": "[START_DIR]/src", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "name": "gclient runhooks" }, diff --git a/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json b/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json index 8df05f441..bd1b42dad 100644 --- a/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json +++ b/recipes/recipe_modules/gclient/examples/full.expected/tryserver.json @@ -8,8 +8,10 @@ "--spec", "cache_dir = '[ROOT]/git_cache'\nsolutions = [{'custom_vars': {'string_var': 'string_val', 'true_var': True}, 'deps_file': '.DEPS.git', 'managed': True, 'name': 'src', 'url': 'https://chromium.googlesource.com/chromium/src.git'}]" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient setup" @@ -33,8 +35,10 @@ "--output-json", "/path/to/tmp/json" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient sync", @@ -60,8 +64,10 @@ "user.name", "local_bot" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient recurse (git config user.name)" @@ -77,8 +83,10 @@ "user.email", "local_bot@example.com" ], - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "gclient recurse (git config user.email)" @@ -93,8 +101,10 @@ "cache_dir = '[CACHE]/git'\nsolutions = [{'deps_file': '.DEPS.git', 'managed': True, 'name': 'Angle', 'url': 'https://chromium.googlesource.com/angle/angle.git'}]" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient setup" @@ -121,8 +131,10 @@ "/path/to/tmp/json" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient sync", @@ -153,8 +165,10 @@ "local_bot" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient recurse (git config user.name)" @@ -171,8 +185,10 @@ "local_bot@example.com" ], "cwd": "[START_DIR]/src/third_party", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "infra_step": true, "name": "[spec: Angle] gclient recurse (git config user.email)" @@ -209,8 +225,10 @@ "runhooks" ], "cwd": "[START_DIR]/src", - "env": { - "PATH": ":RECIPE_PACKAGE_REPO[depot_tools]" + "env_suffixes": { + "PATH": [ + "RECIPE_PACKAGE_REPO[depot_tools]" + ] }, "name": "gclient runhooks" },