| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2016 The Chromium Authors. All rights reserved. | 2 # Copyright 2016 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 import argparse | 6 import argparse |
| 7 import copy | 7 import copy |
| 8 import json | 8 import json |
| 9 import logging | 9 import logging |
| 10 import os | 10 import os |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 logdog_bootstrap.add_arguments(group) | 81 logdog_bootstrap.add_arguments(group) |
| 82 | 82 |
| 83 args = parser.parse_args(argv[1:]) | 83 args = parser.parse_args(argv[1:]) |
| 84 | 84 |
| 85 # Keep CIPD directory between builds. | 85 # Keep CIPD directory between builds. |
| 86 cipd_path = os.path.join(os.getcwd(), '.remote_run_cipd') | 86 cipd_path = os.path.join(os.getcwd(), '.remote_run_cipd') |
| 87 _install_cipd_packages( | 87 _install_cipd_packages( |
| 88 cipd_path, cipd.CipdPackage('infra/recipes-py', 'latest')) | 88 cipd_path, cipd.CipdPackage('infra/recipes-py', 'latest')) |
| 89 | 89 |
| 90 with robust_tempdir.RobustTempdir( | 90 with robust_tempdir.RobustTempdir( |
| 91 prefix='.remote_run', leak=args.leak) as rt: | 91 prefix='rr', leak=args.leak) as rt: |
| 92 # Use base directory inside system temporary directory - if we use slave | 92 try: |
| 93 # one (cwd), the paths get too long. Recipes which need different paths | 93 basedir = chromium_utils.FindUpward(os.getcwd(), 'b') |
| 94 # or persistent directories should do so explicitly. | 94 except chromium_utils.PathNotFound as e: |
| 95 basedir = tempfile.gettempdir() | 95 LOGGER.warn(e) |
| 96 # Use base directory inside system temporary directory - if we use slave |
| 97 # one (cwd), the paths get too long. Recipes which need different paths |
| 98 # or persistent directories should do so explicitly. |
| 99 basedir = tempfile.gettempdir() |
| 96 | 100 |
| 97 # Explicitly clean up possibly leaked temporary directories | 101 # Explicitly clean up possibly leaked temporary directories |
| 98 # from previous runs. | 102 # from previous runs. |
| 99 rt.cleanup(basedir) | 103 rt.cleanup(basedir) |
| 100 | 104 |
| 101 tempdir = rt.tempdir(basedir) | 105 tempdir = rt.tempdir(basedir) |
| 102 LOGGER.info('Using temporary directory: [%s].', tempdir) | 106 LOGGER.info('Using temporary directory: [%s].', tempdir) |
| 103 | 107 |
| 104 build_data_dir = rt.tempdir(basedir) | 108 build_data_dir = rt.tempdir(basedir) |
| 105 LOGGER.info('Using build data directory: [%s].', build_data_dir) | 109 LOGGER.info('Using build data directory: [%s].', build_data_dir) |
| 106 | 110 |
| 107 properties = copy.copy(args.factory_properties) | 111 properties = copy.copy(args.factory_properties) |
| 108 properties.update(args.build_properties) | 112 properties.update(args.build_properties) |
| 109 properties['build_data_dir'] = build_data_dir | 113 properties['build_data_dir'] = build_data_dir |
| 110 LOGGER.info('Using properties: %r', properties) | 114 LOGGER.info('Using properties: %r', properties) |
| 111 properties_file = os.path.join(tempdir, 'remote_run_properties.json') | 115 properties_file = os.path.join(tempdir, 'remote_run_properties.json') |
| 112 with open(properties_file, 'w') as f: | 116 with open(properties_file, 'w') as f: |
| 113 json.dump(properties, f) | 117 json.dump(properties, f) |
| 114 | 118 |
| 115 monitoring_utils.write_build_monitoring_event(build_data_dir, properties) | 119 monitoring_utils.write_build_monitoring_event(build_data_dir, properties) |
| 116 | 120 |
| 117 recipe_cmd = [ | 121 recipe_cmd = [ |
| 118 sys.executable, | 122 sys.executable, |
| 119 os.path.join(cipd_path, 'recipes.py'), | 123 os.path.join(cipd_path, 'recipes.py'), |
| 120 'remote_run', | 124 'remote_run', |
| 121 '--repository', args.repository, | 125 '--repository', args.repository, |
| 122 '--revision', args.revision, | 126 '--revision', args.revision, |
| 123 '--workdir', os.path.join(tempdir, 'remote_run_workdir'), | 127 '--workdir', os.path.join(tempdir, 'rw'), |
| 124 '--', | 128 '--', |
| 125 '--properties-file', properties_file, | 129 '--properties-file', properties_file, |
| 126 '--workdir', os.path.join(tempdir, 'work'), | 130 '--workdir', os.path.join(tempdir, 'w'), |
| 127 args.recipe, | 131 args.recipe, |
| 128 ] | 132 ] |
| 129 recipe_return_code = None | 133 recipe_return_code = None |
| 130 try: | 134 try: |
| 131 bs = logdog_bootstrap.bootstrap(rt, args, basedir, tempdir, properties, | 135 bs = logdog_bootstrap.bootstrap(rt, args, basedir, tempdir, properties, |
| 132 recipe_cmd) | 136 recipe_cmd) |
| 133 | 137 |
| 134 LOGGER.info('Bootstrapping through LogDog: %s', bs.cmd) | 138 LOGGER.info('Bootstrapping through LogDog: %s', bs.cmd) |
| 135 _ = _call(bs.cmd) | 139 _ = _call(bs.cmd) |
| 136 recipe_return_code = bs.get_result() | 140 recipe_return_code = bs.get_result() |
| (...skipping 16 matching lines...) Expand all Loading... |
| 153 | 157 |
| 154 if update_scripts.update_scripts(): | 158 if update_scripts.update_scripts(): |
| 155 # Re-execute with the updated remote_run.py. | 159 # Re-execute with the updated remote_run.py. |
| 156 return _call([sys.executable] + argv) | 160 return _call([sys.executable] + argv) |
| 157 | 161 |
| 158 return main(argv) | 162 return main(argv) |
| 159 | 163 |
| 160 | 164 |
| 161 if __name__ == '__main__': | 165 if __name__ == '__main__': |
| 162 sys.exit(shell_main(sys.argv)) | 166 sys.exit(shell_main(sys.argv)) |
| OLD | NEW |