Add features flag to gmerge and some whitespace cleanup.
Change-Id: I95aec88a491b0aee08f100af72d608b326fcf9c4
BUG=chromium-os:13992
TEST=Ran sudo gmerge chromos-base/gmerge to update to latest gmerge and then
ran sudo gmerge --features=test chromeos-base/metrics and saw test phase
run on dev machine.
Review URL: http://codereview.chromium.org/6824021
diff --git a/builder.py b/builder.py
index bf83c3e..7a6af9c 100644
--- a/builder.py
+++ b/builder.py
@@ -51,13 +51,19 @@
def Build(self, board, pkg, additional_args):
"""Handles a build request from the cherrypy server."""
- cherrypy.log('Additional build request arguments: '+ str(additional_args),
+ cherrypy.log('Additional build request arguments: ' + str(additional_args),
'BUILD')
- original_use = os.environ.get('USE', '')
+ def _AppendStrToEnvVar(env, var, additional_string):
+ env[var] = env.get(var, '') + ' ' + additional_string
+ cherrypy.log('%s flags modified to %s' % (var, env[var]), 'BUILD')
+
+ env_copy = os.environ.copy()
if 'use' in additional_args:
- os.environ['USE'] = original_use + ' ' + additional_args['use']
- cherrypy.log('USE flags modified to ' + os.environ['USE'], 'BUILD')
+ _AppendStrToEnvVar(env_copy, 'USE', additional_args['use'])
+
+ if 'features' in additional_args:
+ _AppendStrToEnvVar(env_copy, 'FEATURES', additional_args['features'])
try:
if (self._ShouldBeWorkedOn(board, pkg) and
@@ -67,7 +73,7 @@
'Either start working on the package or pass --accept_stable '
'to gmerge')
- rc = subprocess.call(['emerge-%s' % board, pkg])
+ rc = subprocess.call(['emerge-%s' % board, pkg], env=env_copy)
if rc != 0:
return self.SetError('Could not emerge ' + pkg)
@@ -80,5 +86,3 @@
return 'Success\n'
except OSError, e:
return self.SetError('Could not execute build command: ' + str(e))
- finally:
- os.environ['USE'] = original_use