| Index: scripts/slave/annotated_run.py
|
| diff --git a/scripts/slave/annotated_run.py b/scripts/slave/annotated_run.py
|
| index 48df8ffa7436f09047eeba96de53e740b9dcf8be..d96a02192e431a495486253dd4a52f5c84f7cd76 100755
|
| --- a/scripts/slave/annotated_run.py
|
| +++ b/scripts/slave/annotated_run.py
|
| @@ -19,9 +19,14 @@ sys.path.append(os.path.join(BUILD_ROOT, 'third_party'))
|
| from common import annotator
|
| from common import chromium_utils
|
| from common import master_cfg_utils
|
| -from slave import recipe_universe
|
|
|
| -from recipe_engine import main as recipe_main
|
| +SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__))
|
| +BUILD_LIMITED_ROOT = os.path.join(
|
| + os.path.dirname(BUILD_ROOT), 'build_internal', 'scripts', 'slave')
|
| +
|
| +PACKAGE_CFG = os.path.join(
|
| + os.path.dirname(os.path.dirname(SCRIPT_PATH)),
|
| + 'infra', 'config', 'recipes.cfg')
|
|
|
| @contextlib.contextmanager
|
| def namedTempFile():
|
| @@ -199,15 +204,46 @@ def update_scripts():
|
| return True
|
|
|
|
|
| +def clean_old_recipe_engine():
|
| + """Clean stale pycs from the old location of recipe_engine.
|
| +
|
| + This function should only be needed for a little while after the recipe
|
| + packages rollout (2015-09-16).
|
| + """
|
| + for (dirpath, _, filenames) in os.walk(
|
| + os.path.join(BUILD_ROOT, 'third_party', 'recipe_engine')):
|
| + for filename in filenames:
|
| + if filename.endswith('.pyc'):
|
| + path = os.path.join(dirpath, filename)
|
| + os.remove(path)
|
| +
|
| +
|
| def main(argv):
|
| opts, _ = get_args(argv)
|
| properties = get_recipe_properties(
|
| opts.factory_properties, opts.build_properties,
|
| opts.master_overrides_slave)
|
| - stream = annotator.StructuredAnnotationStream()
|
| - ret = recipe_main.run_steps(properties, stream,
|
| - universe=recipe_universe.get_universe())
|
| - return ret.status_code
|
| +
|
| + clean_old_recipe_engine()
|
| +
|
| + # Find out if the recipe we intend to run is in build_internal's recipes. If
|
| + # so, use recipes.py from there, otherwise use the one from build.
|
| + recipe_file = properties['recipe'].replace('/', os.path.sep) + '.py'
|
| + if os.path.exists(os.path.join(BUILD_LIMITED_ROOT, 'recipes', recipe_file)):
|
| + recipe_runner = os.path.join(BUILD_LIMITED_ROOT, 'recipes.py')
|
| + else:
|
| + recipe_runner = os.path.join(SCRIPT_PATH, 'recipes.py')
|
| +
|
| + with namedTempFile() as props_file:
|
| + with open(props_file, 'w') as fh:
|
| + fh.write(json.dumps(properties))
|
| + cmd = [
|
| + sys.executable, '-u', recipe_runner,
|
| + 'run',
|
| + '--workdir=%s' % os.getcwd(),
|
| + '--properties-file=%s' % props_file,
|
| + properties['recipe'] ]
|
| + return subprocess.call(cmd)
|
|
|
|
|
| def shell_main(argv):
|
| @@ -216,5 +252,6 @@ def shell_main(argv):
|
| else:
|
| return main(argv)
|
|
|
| +
|
| if __name__ == '__main__':
|
| sys.exit(shell_main(sys.argv))
|
|
|