Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Unified Diff: recipe_modules/step/api.py

Issue 2933473002: [context] Split "env" values and prefixes. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« recipe_modules/context/api.py ('K') | « recipe_modules/python/api.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: recipe_modules/step/api.py
diff --git a/recipe_modules/step/api.py b/recipe_modules/step/api.py
index 4a250c1b057290e7cebcc247be4c41c866297e16..0c2b9909d683eb8707f1f05a576899233c2c4c18 100644
--- a/recipe_modules/step/api.py
+++ b/recipe_modules/step/api.py
@@ -187,12 +187,24 @@ class StepApi(recipe_api.RecipeApiPlain):
cwd = self.m.context.cwd
if cwd is not None and cwd != self.m.path['start_dir']:
kwargs['cwd'] = cwd
- kwargs['env'] = self.m.context.env
- if self._prefix_path:
- ps = self.m.path.pathsep
- prefix = ps.join(self._prefix_path)
- suffix = kwargs['env'].get('PATH', '%(PATH)s')
- kwargs['env']['PATH'] = '%s%s%s' % (prefix, ps, suffix)
+
+ # Assemble the environment.
+ with self.m.context(env={
+ 'PATH': self.m.context.Prefix(*self._prefix_path)}):
+ env_values = self.m.context.env
+ env = {}
+ for k, path_tuple in self.m.context.env_prefixes.iteritems():
+ path_tuple = tuple(str(v) for v in path_tuple)
+ path_tuple += (env_values.get(k) or '%%(%s)s' % (k,),)
+ env[k] = self.m.path.pathsep.join(path_tuple)
+
+ for k, v in env_values.iteritems():
+ if k in env or v == '':
+ continue # Already processed, or empty.
+ env[k] = v
+
+ kwargs['env'] = env
+
kwargs['infra_step'] = self.m.context.infra_step or bool(infra_step)
kwargs['step_nest_level'] = self.m.context.nest_level
kwargs['name'] = full_name
« recipe_modules/context/api.py ('K') | « recipe_modules/python/api.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698