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

Side by Side Diff: scripts/slave/recipe_modules/skia/api.py

Issue 1920283002: Modify Skia recipes to allow running XSAN on Swarming. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@master
Patch Set: Changes based on code review. Created 4 years, 7 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
OLDNEW
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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 def is_ios(builder_cfg): 75 def is_ios(builder_cfg):
76 return ('iOS' in builder_cfg.get('extra_config', '') or 76 return ('iOS' in builder_cfg.get('extra_config', '') or
77 builder_cfg.get('os') == 'iOS') 77 builder_cfg.get('os') == 'iOS')
78 78
79 79
80 def is_valgrind(builder_cfg): 80 def is_valgrind(builder_cfg):
81 return 'Valgrind' in builder_cfg.get('extra_config', '') 81 return 'Valgrind' in builder_cfg.get('extra_config', '')
82 82
83 83
84 def is_xsan(builder_cfg): 84 def is_xsan(builder_cfg):
85 return (builder_cfg.get('extra_config') == 'ASAN' or 85 return ('ASAN' in builder_cfg.get('extra_config', '') or
86 builder_cfg.get('extra_config') == 'MSAN' or 86 'MSAN' in builder_cfg.get('extra_config', '') or
87 builder_cfg.get('extra_config') == 'TSAN') 87 'TSAN' in builder_cfg.get('extra_config', ''))
88 88
89 89
90 class SkiaApi(recipe_api.RecipeApi): 90 class SkiaApi(recipe_api.RecipeApi):
91 91
92 def get_flavor(self, builder_cfg): 92 def get_flavor(self, builder_cfg):
93 """Return a flavor utils object specific to the given builder.""" 93 """Return a flavor utils object specific to the given builder."""
94 if is_appurify(builder_cfg): 94 if is_appurify(builder_cfg):
95 return appurify_flavor.AppurifyFlavorUtils(self) 95 return appurify_flavor.AppurifyFlavorUtils(self)
96 elif is_android(builder_cfg): 96 elif is_android(builder_cfg):
97 return android_flavor.AndroidFlavorUtils(self) 97 return android_flavor.AndroidFlavorUtils(self)
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 184
185 # We run through this recipe in one of two ways: 185 # We run through this recipe in one of two ways:
186 # 1. Normal bot: run all of the steps. 186 # 1. Normal bot: run all of the steps.
187 # 2. Running as a Swarming task: perform the given task only, with 187 # 2. Running as a Swarming task: perform the given task only, with
188 # adaptations for running within Swarming, eg. copying build results 188 # adaptations for running within Swarming, eg. copying build results
189 # into the correct output directory. 189 # into the correct output directory.
190 self.running_in_swarming = running_in_swarming 190 self.running_in_swarming = running_in_swarming
191 191
192 # Some bots also require a checkout of chromium. 192 # Some bots also require a checkout of chromium.
193 self._need_chromium_checkout = 'CommandBuffer' in self.builder_name 193 self._need_chromium_checkout = 'CommandBuffer' in self.builder_name
194 if (self.running_in_swarming and
195 self.is_compile_bot and
196 'SAN' in self.builder_name):
197 self._need_chromium_checkout = True
194 198
195 # Check out the Skia code. 199 # Check out the Skia code.
196 self.checkout_steps() 200 self.checkout_steps()
197 201
198 # Obtain the spec for this builder from the Skia repo. Use it to set more 202 # Obtain the spec for this builder from the Skia repo. Use it to set more
199 # properties. 203 # properties.
200 self.builder_spec = self.get_builder_spec(self.skia_dir, self.builder_name) 204 self.builder_spec = self.get_builder_spec(self.skia_dir, self.builder_name)
201 205
202 self.builder_cfg = self.builder_spec['builder_cfg'] 206 self.builder_cfg = self.builder_spec['builder_cfg']
203 self.role = self.builder_cfg['role'] 207 self.role = self.builder_cfg['role']
204 208
205 # Set some important variables. 209 # Set some important variables.
206 self.resource_dir = self.skia_dir.join('resources') 210 self.resource_dir = self.skia_dir.join('resources')
207 self.images_dir = self.slave_dir.join('images') 211 self.images_dir = self.slave_dir.join('images')
208 self.skia_out = self.skia_dir.join('out', self.builder_name) 212 self.skia_out = self.skia_dir.join('out', self.builder_name)
209 if self.running_in_swarming: 213 if self.running_in_swarming:
210 self.swarming_out_dir = self.m.properties['swarm_out_dir'] 214 self.swarming_out_dir = self.make_path(self.m.properties['swarm_out_dir'])
211 self.local_skp_dir = self.slave_dir.join('skps') 215 self.local_skp_dir = self.slave_dir.join('skps')
212 if not self.is_compile_bot: 216 if not self.is_compile_bot:
213 self.skia_out = self.slave_dir.join('out') 217 self.skia_out = self.slave_dir.join('out')
214 else: 218 else:
215 self.local_skp_dir = self.slave_dir.join('playback', 'skps') 219 self.local_skp_dir = self.slave_dir.join('playback', 'skps')
216 self.tmp_dir = self.m.path['slave_build'].join('tmp') 220 self.tmp_dir = self.m.path['slave_build'].join('tmp')
217 221
218 self.gsutil_env_chromium_skia_gm = self.gsutil_env(BOTO_CHROMIUM_SKIA_GM) 222 self.gsutil_env_chromium_skia_gm = self.gsutil_env(BOTO_CHROMIUM_SKIA_GM)
219 223
220 self.device_dirs = None 224 self.device_dirs = None
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 if self.running_in_swarming: 346 if self.running_in_swarming:
343 checkout_kwargs['env'] = self.default_env 347 checkout_kwargs['env'] = self.default_env
344 update_step = self.m.gclient.checkout(gclient_config=gclient_cfg, 348 update_step = self.m.gclient.checkout(gclient_config=gclient_cfg,
345 cwd=self.checkout_root, 349 cwd=self.checkout_root,
346 **checkout_kwargs) 350 **checkout_kwargs)
347 351
348 self.got_revision = update_step.presentation.properties['got_revision'] 352 self.got_revision = update_step.presentation.properties['got_revision']
349 self.m.tryserver.maybe_apply_issue() 353 self.m.tryserver.maybe_apply_issue()
350 354
351 if self._need_chromium_checkout: 355 if self._need_chromium_checkout:
352 self.m.gclient.runhooks() 356 self.m.gclient.runhooks(cwd=self.checkout_root)
353 357
354 def copy_build_products(self, src, dst): 358 def copy_build_products(self, src, dst):
355 """Copy whitelisted build products from src to dst.""" 359 """Copy whitelisted build products from src to dst."""
356 self.m.python.inline( 360 self.m.python.inline(
357 name='copy build products', 361 name='copy build products',
358 program='''import errno 362 program='''import errno
359 import glob 363 import glob
360 import os 364 import os
361 import shutil 365 import shutil
362 import sys 366 import sys
(...skipping 21 matching lines...) Expand all
384 infra_step=True) 388 infra_step=True)
385 389
386 def compile_steps(self, clobber=False): 390 def compile_steps(self, clobber=False):
387 """Run the steps to build Skia.""" 391 """Run the steps to build Skia."""
388 try: 392 try:
389 for target in self.build_targets: 393 for target in self.build_targets:
390 self.flavor.compile(target) 394 self.flavor.compile(target)
391 if self.running_in_swarming: 395 if self.running_in_swarming:
392 self.copy_build_products( 396 self.copy_build_products(
393 self.flavor.out_dir, 397 self.flavor.out_dir,
394 self.m.path.join(self.swarming_out_dir, 'out', self.configuration)) 398 self.swarming_out_dir.join('out', self.configuration))
399 self.flavor.copy_extra_build_products(self.swarming_out_dir)
395 finally: 400 finally:
396 if 'Win' in self.builder_cfg.get('os', ''): 401 if 'Win' in self.builder_cfg.get('os', ''):
397 self.m.python.inline( 402 self.m.python.inline(
398 name='cleanup', 403 name='cleanup',
399 program='''import psutil 404 program='''import psutil
400 for p in psutil.process_iter(): 405 for p in psutil.process_iter():
401 try: 406 try:
402 if p.name in ('mspdbsrv.exe', 'vctip.exe', 'cl.exe', 'link.exe'): 407 if p.name in ('mspdbsrv.exe', 'vctip.exe', 'cl.exe', 'link.exe'):
403 p.kill() 408 p.kill()
404 except psutil._error.AccessDenied: 409 except psutil._error.AccessDenied:
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
888 # Don't bother to include role, which is always Test. 893 # Don't bother to include role, which is always Test.
889 # TryBots are uploaded elsewhere so they can use the same key. 894 # TryBots are uploaded elsewhere so they can use the same key.
890 blacklist = ['role', 'is_trybot'] 895 blacklist = ['role', 'is_trybot']
891 896
892 flat = [] 897 flat = []
893 for k in sorted(self.builder_cfg.keys()): 898 for k in sorted(self.builder_cfg.keys()):
894 if k not in blacklist: 899 if k not in blacklist:
895 flat.append(k) 900 flat.append(k)
896 flat.append(self.builder_cfg[k]) 901 flat.append(self.builder_cfg[k])
897 return flat 902 return flat
OLDNEW
« no previous file with comments | « masters/master.client.skia.fyi/slaves.cfg ('k') | scripts/slave/recipe_modules/skia/default_flavor.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698