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

Side by Side Diff: scripts/slave/remote_run.py

Issue 2049053002: remote_run: use tempfile.gettempdir() for workdirs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 help='factory properties in b64 gz JSON format') 75 help='factory properties in b64 gz JSON format')
76 parser.add_argument('--leak', action='store_true', 76 parser.add_argument('--leak', action='store_true',
77 help='Refrain from cleaning up generated artifacts.') 77 help='Refrain from cleaning up generated artifacts.')
78 parser.add_argument('--verbose', action='store_true') 78 parser.add_argument('--verbose', action='store_true')
79 79
80 group = parser.add_argument_group('LogDog Bootstrap') 80 group = parser.add_argument_group('LogDog Bootstrap')
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 basedir = os.getcwd() 85 # Keep CIPD directory between builds.
86 cipd_path = os.path.join(basedir, '.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='.remote_run', leak=args.leak) as rt:
92 # Use base directory inside system temporary directory - if we use slave
93 # one (cwd), the paths get too long. Recipes which need different paths
94 # or persistent directories should do so explicitly.
95 basedir = tempfile.gettempdir()
96
92 # Explicitly clean up possibly leaked temporary directories 97 # Explicitly clean up possibly leaked temporary directories
93 # from previous runs. 98 # from previous runs.
94 rt.cleanup(basedir) 99 rt.cleanup(basedir)
95 100
96 tempdir = rt.tempdir(basedir) 101 tempdir = rt.tempdir(basedir)
97 LOGGER.info('Using temporary directory: [%s].', tempdir) 102 LOGGER.info('Using temporary directory: [%s].', tempdir)
98 103
99 build_data_dir = rt.tempdir(basedir) 104 build_data_dir = rt.tempdir(basedir)
100 LOGGER.info('Using build data directory: [%s].', build_data_dir) 105 LOGGER.info('Using build data directory: [%s].', build_data_dir)
101 106
102 properties = copy.copy(args.factory_properties) 107 properties = copy.copy(args.factory_properties)
103 properties.update(args.build_properties) 108 properties.update(args.build_properties)
104 properties['build_data_dir'] = build_data_dir 109 properties['build_data_dir'] = build_data_dir
105 LOGGER.info('Using properties: %r', properties) 110 LOGGER.info('Using properties: %r', properties)
106 properties_file = os.path.join(tempdir, 'remote_run_properties.json') 111 properties_file = os.path.join(tempdir, 'remote_run_properties.json')
107 with open(properties_file, 'w') as f: 112 with open(properties_file, 'w') as f:
108 json.dump(properties, f) 113 json.dump(properties, f)
109 114
110 monitoring_utils.write_build_monitoring_event(build_data_dir, properties) 115 monitoring_utils.write_build_monitoring_event(build_data_dir, properties)
111 116
112 recipe_cmd = [ 117 recipe_cmd = [
113 sys.executable, 118 sys.executable,
114 os.path.join(cipd_path, 'recipes.py'), 119 os.path.join(cipd_path, 'recipes.py'),
115 'remote_run', 120 'remote_run',
116 '--repository', args.repository, 121 '--repository', args.repository,
117 '--revision', args.revision, 122 '--revision', args.revision,
118 '--workdir', os.path.join(tempdir, 'remote_run_workdir'), 123 '--workdir', os.path.join(tempdir, 'remote_run_workdir'),
119 '--', 124 '--',
120 '--properties-file', properties_file, 125 '--properties-file', properties_file,
121 '--workdir', os.path.join(tempdir, 'run_workdir'), 126 '--workdir', os.path.join(tempdir, 'work'),
122 args.recipe, 127 args.recipe,
123 ] 128 ]
124 recipe_return_code = None 129 recipe_return_code = None
125 try: 130 try:
126 cmd = logdog_bootstrap.bootstrap(rt, args, basedir, tempdir, properties, 131 cmd = logdog_bootstrap.bootstrap(rt, args, basedir, tempdir, properties,
127 recipe_cmd) 132 recipe_cmd)
128 133
129 LOGGER.info('Bootstrapping through LogDog: %s', cmd) 134 LOGGER.info('Bootstrapping through LogDog: %s', cmd)
130 rc = _call(cmd) 135 rc = _call(cmd)
131 logdog_bootstrap.assert_not_bootstrap_return_code(rc) 136 logdog_bootstrap.assert_not_bootstrap_return_code(rc)
(...skipping 18 matching lines...) Expand all
150 155
151 if update_scripts.update_scripts(): 156 if update_scripts.update_scripts():
152 # Re-execute with the updated remote_run.py. 157 # Re-execute with the updated remote_run.py.
153 return _call([sys.executable] + argv) 158 return _call([sys.executable] + argv)
154 159
155 return main(argv) 160 return main(argv)
156 161
157 162
158 if __name__ == '__main__': 163 if __name__ == '__main__':
159 sys.exit(shell_main(sys.argv)) 164 sys.exit(shell_main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698