OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 | 5 |
6 import json | 6 import json |
7 import os | 7 import os |
8 import re | 8 import re |
9 import sys | 9 import sys |
10 | 10 |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 if self.running_in_swarming: | 192 if self.running_in_swarming: |
193 self.swarming_out_dir = self.m.properties['swarm_out_dir'] | 193 self.swarming_out_dir = self.m.properties['swarm_out_dir'] |
194 self.out_dir = self.slave_dir.join('out') | 194 self.out_dir = self.slave_dir.join('out') |
195 self.local_skp_dir = self.slave_dir.join('skps') | 195 self.local_skp_dir = self.slave_dir.join('skps') |
196 else: | 196 else: |
197 self.out_dir = self.m.path['checkout'].join('out', self.builder_name) | 197 self.out_dir = self.m.path['checkout'].join('out', self.builder_name) |
198 self.local_skp_dir = self.slave_dir.join('playback', 'skps') | 198 self.local_skp_dir = self.slave_dir.join('playback', 'skps') |
199 self.tmp_dir = self.m.path['slave_build'].join('tmp') | 199 self.tmp_dir = self.m.path['slave_build'].join('tmp') |
200 | 200 |
201 self.gsutil_env_chromium_skia_gm = self.gsutil_env(BOTO_CHROMIUM_SKIA_GM) | 201 self.gsutil_env_chromium_skia_gm = self.gsutil_env(BOTO_CHROMIUM_SKIA_GM) |
202 # TODO(borenet): This works on GCE instance because we fall back on | |
203 # service account auth. What about our local bots? | |
204 self.gsutil_env_skia_infra = self.gsutil_env(None) | |
205 | 202 |
206 self.device_dirs = None | 203 self.device_dirs = None |
207 self._ccache = None | 204 self._ccache = None |
208 self._checked_for_ccache = False | 205 self._checked_for_ccache = False |
209 self.configuration = self.builder_spec['configuration'] | 206 self.configuration = self.builder_spec['configuration'] |
210 self.default_env.update({'SKIA_OUT': self.out_dir, | 207 self.default_env.update({'SKIA_OUT': self.out_dir, |
211 'BUILDTYPE': self.configuration}) | 208 'BUILDTYPE': self.configuration}) |
212 self.default_env.update(self.builder_spec['env']) | 209 self.default_env.update(self.builder_spec['env']) |
213 self.build_targets = [str(t) for t in self.builder_spec['build_targets']] | 210 self.build_targets = [str(t) for t in self.builder_spec['build_targets']] |
214 if 'Android' in self.builder_name and self.running_in_swarming: | 211 if 'Android' in self.builder_name and self.running_in_swarming: |
215 # TODO(borenet): Make the app build work on Swarming and remove this. | 212 # TODO(borenet): Make the app build work on Swarming and remove this. |
216 self.build_targets = ['dm', 'nanobench'] | 213 self.build_targets = ['dm', 'nanobench'] |
| 214 self.do_compile_steps = self.builder_spec.get('do_compile_steps', True) |
217 self.do_test_steps = self.builder_spec['do_test_steps'] | 215 self.do_test_steps = self.builder_spec['do_test_steps'] |
218 self.do_perf_steps = self.builder_spec['do_perf_steps'] | 216 self.do_perf_steps = self.builder_spec['do_perf_steps'] |
219 self.is_trybot = self.builder_cfg['is_trybot'] | 217 self.is_trybot = self.builder_cfg['is_trybot'] |
220 self.upload_dm_results = self.builder_spec['upload_dm_results'] | 218 self.upload_dm_results = self.builder_spec['upload_dm_results'] |
221 self.upload_perf_results = self.builder_spec['upload_perf_results'] | 219 self.upload_perf_results = self.builder_spec['upload_perf_results'] |
222 if self.running_in_swarming: | 220 if self.running_in_swarming: |
223 self.dm_dir = self.m.path.join( | 221 self.dm_dir = self.m.path.join( |
224 self.swarming_out_dir, 'dm') | 222 self.swarming_out_dir, 'dm') |
225 self.perf_data_dir = self.m.path.join(self.swarming_out_dir, | 223 self.perf_data_dir = self.m.path.join(self.swarming_out_dir, |
226 'perfdata', self.builder_name, 'data') | 224 'perfdata', self.builder_name, 'data') |
227 else: | 225 else: |
228 self.dm_dir = self.slave_dir.join('dm') | 226 self.dm_dir = self.slave_dir.join('dm') |
229 self.perf_data_dir = self.slave_dir.join('perfdata', self.builder_name, | 227 self.perf_data_dir = self.slave_dir.join('perfdata', self.builder_name, |
230 'data') | 228 'data') |
231 self.dm_flags = self.builder_spec['dm_flags'] | 229 self.dm_flags = self.builder_spec['dm_flags'] |
232 self.nanobench_flags = self.builder_spec['nanobench_flags'] | 230 self.nanobench_flags = self.builder_spec['nanobench_flags'] |
233 | 231 |
234 self.flavor = self.get_flavor(self.builder_cfg) | 232 self.flavor = self.get_flavor(self.builder_cfg) |
235 | 233 |
236 def run_steps(self): | 234 def run_steps(self): |
237 """Compile, run tests, perf, etc.""" | 235 """Compile, run tests, perf, etc.""" |
238 self.compile_steps() | 236 if self.do_compile_steps: |
| 237 self.compile_steps() |
239 if self.do_test_steps: | 238 if self.do_test_steps: |
240 self.test_steps() | 239 self.test_steps() |
241 if self.do_perf_steps: | 240 if self.do_perf_steps: |
242 self.perf_steps() | 241 self.perf_steps() |
243 | 242 |
244 if self.do_test_steps or self.do_perf_steps: | 243 if self.do_test_steps or self.do_perf_steps: |
245 self.cleanup_steps() | 244 self.cleanup_steps() |
246 | 245 |
247 if self.failed: | 246 if self.failed: |
248 raise self.m.step.StepFailure('Failed build steps: %s' % | 247 raise self.m.step.StepFailure('Failed build steps: %s' % |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 env = dict(env or {}) | 387 env = dict(env or {}) |
389 env.update(self.default_env) | 388 env.update(self.default_env) |
390 try: | 389 try: |
391 return steptype(name=name, env=env, **kwargs) | 390 return steptype(name=name, env=env, **kwargs) |
392 except self.m.step.StepFailure as e: | 391 except self.m.step.StepFailure as e: |
393 if abort_on_failure: | 392 if abort_on_failure: |
394 raise # pragma: no cover | 393 raise # pragma: no cover |
395 if fail_build_on_failure: | 394 if fail_build_on_failure: |
396 self.failed.append(e) | 395 self.failed.append(e) |
397 | 396 |
398 def gsutil_upload(self, name, source, bucket, dest): | |
399 """Upload to Google Storage without using a .boto file.""" | |
400 self.run( | |
401 self.m.gsutil.upload, | |
402 name, | |
403 source=source, | |
404 bucket=bucket, | |
405 dest=dest, | |
406 args=['-R'], | |
407 env=self.gsutil_env_skia_infra, | |
408 abort_on_failure=False) | |
409 | |
410 def download_dir(self, version_file, gs_path_tmpl, tmp_dir, host_path, | 397 def download_dir(self, version_file, gs_path_tmpl, tmp_dir, host_path, |
411 test_expected_version, test_actual_version, | 398 test_expected_version, test_actual_version, |
412 running_in_swarming): | 399 running_in_swarming): |
413 """Download the given directory from Google Storage if necessary. | 400 """Download the given directory from Google Storage if necessary. |
414 | 401 |
415 Return the downloaded version. | 402 Return the downloaded version. |
416 """ | 403 """ |
417 actual_version_file = self.m.path.join(tmp_dir, version_file) | 404 actual_version_file = self.m.path.join(tmp_dir, version_file) |
418 # If we're running as a Swarming task, we should've received the test inputs | 405 # If we're running as a Swarming task, we should've received the test inputs |
419 # via the isolate server. Only download if we're not running in Swarming. | 406 # via the isolate server. Only download if we're not running in Swarming. |
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
869 # Don't bother to include role, which is always Test. | 856 # Don't bother to include role, which is always Test. |
870 # TryBots are uploaded elsewhere so they can use the same key. | 857 # TryBots are uploaded elsewhere so they can use the same key. |
871 blacklist = ['role', 'is_trybot'] | 858 blacklist = ['role', 'is_trybot'] |
872 | 859 |
873 flat = [] | 860 flat = [] |
874 for k in sorted(self.builder_cfg.keys()): | 861 for k in sorted(self.builder_cfg.keys()): |
875 if k not in blacklist: | 862 if k not in blacklist: |
876 flat.append(k) | 863 flat.append(k) |
877 flat.append(self.builder_cfg[k]) | 864 flat.append(self.builder_cfg[k]) |
878 return flat | 865 return flat |
OLD | NEW |