OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # | 2 # |
3 # Copyright 2016 Google Inc. | 3 # Copyright 2016 Google Inc. |
4 # | 4 # |
5 # Use of this source code is governed by a BSD-style license that can be | 5 # Use of this source code is governed by a BSD-style license that can be |
6 # found in the LICENSE file. | 6 # found in the LICENSE file. |
7 | 7 |
8 | 8 |
9 import contextlib | 9 import contextlib |
10 import math | 10 import math |
(...skipping 13 matching lines...) Expand all Loading... |
24 from flavor import ios_flavor | 24 from flavor import ios_flavor |
25 from flavor import valgrind_flavor | 25 from flavor import valgrind_flavor |
26 from flavor import xsan_flavor | 26 from flavor import xsan_flavor |
27 | 27 |
28 | 28 |
29 CONFIG_COVERAGE = 'Coverage' | 29 CONFIG_COVERAGE = 'Coverage' |
30 CONFIG_DEBUG = 'Debug' | 30 CONFIG_DEBUG = 'Debug' |
31 CONFIG_RELEASE = 'Release' | 31 CONFIG_RELEASE = 'Release' |
32 VALID_CONFIGS = (CONFIG_COVERAGE, CONFIG_DEBUG, CONFIG_RELEASE) | 32 VALID_CONFIGS = (CONFIG_COVERAGE, CONFIG_DEBUG, CONFIG_RELEASE) |
33 | 33 |
| 34 BUILD_PRODUCTS_WHITELIST = [ |
| 35 'dm', 'dm.exe', |
| 36 'nanobench', 'nanobench.exe', |
| 37 ] |
| 38 |
34 GM_ACTUAL_FILENAME = 'actual-results.json' | 39 GM_ACTUAL_FILENAME = 'actual-results.json' |
35 GM_EXPECTATIONS_FILENAME = 'expected-results.json' | 40 GM_EXPECTATIONS_FILENAME = 'expected-results.json' |
36 GM_IGNORE_TESTS_FILENAME = 'ignored-tests.txt' | 41 GM_IGNORE_TESTS_FILENAME = 'ignored-tests.txt' |
37 | 42 |
38 GOLD_UNINTERESTING_HASHES_URL = 'https://gold.skia.org/_/hashes' | 43 GOLD_UNINTERESTING_HASHES_URL = 'https://gold.skia.org/_/hashes' |
39 | 44 |
40 GS_GM_BUCKET = 'chromium-skia-gm' | 45 GS_GM_BUCKET = 'chromium-skia-gm' |
41 GS_SUMMARIES_BUCKET = 'chromium-skia-gm-summaries' | 46 GS_SUMMARIES_BUCKET = 'chromium-skia-gm-summaries' |
42 | 47 |
43 GS_SUBDIR_TMPL_SK_IMAGE = 'skimage/v%s' | 48 GS_SUBDIR_TMPL_SK_IMAGE = 'skimage/v%s' |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 """ | 152 """ |
148 self.name = bot_name | 153 self.name = bot_name |
149 self.skia_dir = os.path.abspath(os.path.join( | 154 self.skia_dir = os.path.abspath(os.path.join( |
150 os.path.dirname(os.path.realpath(__file__)), | 155 os.path.dirname(os.path.realpath(__file__)), |
151 os.pardir, os.pardir)) | 156 os.pardir, os.pardir)) |
152 self.swarm_out_dir = swarm_out_dir | 157 self.swarm_out_dir = swarm_out_dir |
153 os.chdir(self.skia_dir) | 158 os.chdir(self.skia_dir) |
154 self.build_dir = os.path.abspath(os.path.join(self.skia_dir, os.pardir)) | 159 self.build_dir = os.path.abspath(os.path.join(self.skia_dir, os.pardir)) |
155 self.spec = self.get_bot_spec(bot_name) | 160 self.spec = self.get_bot_spec(bot_name) |
156 self.bot_cfg = self.spec['builder_cfg'] | 161 self.bot_cfg = self.spec['builder_cfg'] |
157 if self.bot_cfg['role'] == 'Build': | 162 self.out_dir = os.path.join(os.pardir, 'out') |
158 self.out_dir = os.path.join(swarm_out_dir, 'out') | |
159 else: | |
160 self.out_dir = os.path.join(os.pardir, 'out') | |
161 self.configuration = self.spec['configuration'] | 163 self.configuration = self.spec['configuration'] |
162 self.default_env = { | 164 self.default_env = { |
163 'SKIA_OUT': self.out_dir, | 165 'SKIA_OUT': self.out_dir, |
164 'BUILDTYPE': self.configuration, | 166 'BUILDTYPE': self.configuration, |
165 'PATH': os.environ['PATH'], | 167 'PATH': os.environ['PATH'], |
166 } | 168 } |
167 self.default_env.update(self.spec['env']) | 169 self.default_env.update(self.spec['env']) |
168 self.build_targets = [str(t) for t in self.spec['build_targets']] | 170 self.build_targets = [str(t) for t in self.spec['build_targets']] |
169 self.is_trybot = self.bot_cfg['is_trybot'] | 171 self.is_trybot = self.bot_cfg['is_trybot'] |
170 self.upload_dm_results = self.spec['upload_dm_results'] | 172 self.upload_dm_results = self.spec['upload_dm_results'] |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 print '============' | 237 print '============' |
236 print 'CMD: %s' % cmd | 238 print 'CMD: %s' % cmd |
237 print 'CWD: %s' % cwd | 239 print 'CWD: %s' % cwd |
238 print 'ENV: %s' % _env | 240 print 'ENV: %s' % _env |
239 print '============' | 241 print '============' |
240 subprocess.check_call(cmd, env=_env, cwd=cwd) | 242 subprocess.check_call(cmd, env=_env, cwd=cwd) |
241 | 243 |
242 def compile_steps(self): | 244 def compile_steps(self): |
243 for t in self.build_targets: | 245 for t in self.build_targets: |
244 self.flavor.compile(t) | 246 self.flavor.compile(t) |
| 247 dst = os.path.join(self.swarm_out_dir, 'out', self.configuration) |
| 248 os.makedirs(dst) |
| 249 for f in BUILD_PRODUCTS_WHITELIST: |
| 250 path = os.path.join(self.out_dir, self.configuration, f) |
| 251 if os.path.exists(path): |
| 252 print 'Copying build product %s' % path |
| 253 shutil.copy(path, dst) |
245 | 254 |
246 def _run_once(self, fn, *args, **kwargs): | 255 def _run_once(self, fn, *args, **kwargs): |
247 if not fn.__name__ in self._already_ran: | 256 if not fn.__name__ in self._already_ran: |
248 self._already_ran[fn.__name__] = True | 257 self._already_ran[fn.__name__] = True |
249 fn(*args, **kwargs) | 258 fn(*args, **kwargs) |
250 | 259 |
251 def install(self): | 260 def install(self): |
252 """Copy the required executables and files to the device.""" | 261 """Copy the required executables and files to the device.""" |
253 self.device_dirs = self.flavor.get_device_dirs() | 262 self.device_dirs = self.flavor.get_device_dirs() |
254 | 263 |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
447 self.flavor.run(abandonGpuContext, env=self.default_env) | 456 self.flavor.run(abandonGpuContext, env=self.default_env) |
448 | 457 |
449 # Copy results to host. | 458 # Copy results to host. |
450 if self.upload_perf_results: | 459 if self.upload_perf_results: |
451 if not os.path.exists(self.perf_data_dir): | 460 if not os.path.exists(self.perf_data_dir): |
452 os.makedirs(self.perf_data_dir) | 461 os.makedirs(self.perf_data_dir) |
453 self.flavor.copy_directory_contents_to_host( | 462 self.flavor.copy_directory_contents_to_host( |
454 self.device_dirs.perf_data_dir, self.perf_data_dir) | 463 self.device_dirs.perf_data_dir, self.perf_data_dir) |
455 | 464 |
456 self.flavor.cleanup_steps() | 465 self.flavor.cleanup_steps() |
OLD | NEW |