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

Side by Side Diff: infra/bots/recipe_modules/vars/api.py

Issue 2219873003: [recipes] Smush the rest of builder_spec into appropriate places, other cleanup (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 4 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
« no previous file with comments | « infra/bots/recipe_modules/flavor/ios_flavor.py ('k') | infra/bots/recipes/swarm_trigger.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2016 The Chromium Authors. All rights reserved. 1 # Copyright 2016 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 # pylint: disable=W0201 6 # pylint: disable=W0201
7 7
8 8
9 from recipe_engine import recipe_api 9 from recipe_engine import recipe_api
10 import os
11 10
12 11
13 BOTO_CHROMIUM_SKIA_GM = 'chromium-skia-gm.boto' 12 BOTO_CHROMIUM_SKIA_GM = 'chromium-skia-gm.boto'
14 13
15 CONFIG_DEBUG = 'Debug' 14 CONFIG_DEBUG = 'Debug'
16 CONFIG_RELEASE = 'Release' 15 CONFIG_RELEASE = 'Release'
17 16
18 17
19 def device_cfg(builder_dict):
20 # Android.
21 if 'Android' in builder_dict.get('extra_config', ''):
22 if 'NoNeon' in builder_dict['extra_config']:
23 return 'arm_v7'
24 return {
25 'Arm64': 'arm64',
26 'x86': 'x86',
27 'x86_64': 'x86_64',
28 'Mips': 'mips',
29 'Mips64': 'mips64',
30 'MipsDSP2': 'mips_dsp2',
31 }.get(builder_dict['target_arch'], 'arm_v7_neon')
32 elif builder_dict.get('os') == 'Android':
33 return {
34 'AndroidOne': 'arm_v7_neon',
35 'GalaxyS3': 'arm_v7_neon',
36 'GalaxyS4': 'arm_v7_neon',
37 'NVIDIA_Shield': 'arm64',
38 'Nexus10': 'arm_v7_neon',
39 'Nexus5': 'arm_v7_neon',
40 'Nexus6': 'arm_v7_neon',
41 'Nexus7': 'arm_v7_neon',
42 'Nexus7v2': 'arm_v7_neon',
43 'Nexus9': 'arm64',
44 'NexusPlayer': 'x86',
45 }[builder_dict['model']]
46
47 # iOS.
48 if 'iOS' in builder_dict.get('os', ''):
49 return {
50 'iPad4': 'iPad4,1',
51 }[builder_dict['model']]
52
53 return None
54
55
56 def product_board(builder_dict):
57 if 'Android' in builder_dict.get('os', ''):
58 return {
59 'AndroidOne': 'sprout',
60 'GalaxyS3': 'm0', #'smdk4x12', Detected incorrectly by swarming?
61 'GalaxyS4': None, # TODO(borenet,kjlubick)
62 'NVIDIA_Shield': 'foster',
63 'Nexus10': 'manta',
64 'Nexus5': 'hammerhead',
65 'Nexus6': 'shamu',
66 'Nexus7': 'grouper',
67 'Nexus7v2': 'flo',
68 'Nexus9': 'flounder',
69 'NexusPlayer': 'fugu',
70 }[builder_dict['model']]
71 return None
72
73
74 def get_builder_spec(api, builder_name):
75 builder_dict = api.builder_name_schema.DictForBuilderName(builder_name)
76 rv = {
77 'builder_cfg': builder_dict,
78 }
79 device = device_cfg(builder_dict)
80 if device:
81 rv['device_cfg'] = device
82 board = product_board(builder_dict)
83 if board:
84 rv['product.board'] = board
85
86 role = builder_dict['role']
87 if role == api.builder_name_schema.BUILDER_ROLE_HOUSEKEEPER:
88 configuration = CONFIG_RELEASE
89 else:
90 configuration = builder_dict.get('configuration', CONFIG_DEBUG)
91 arch = (builder_dict.get('arch') or builder_dict.get('target_arch'))
92 if ('Win' in builder_dict.get('os', '') and arch == 'x86_64'):
93 configuration += '_x64'
94 rv['configuration'] = configuration
95 if configuration == 'Coverage':
96 rv['do_compile_steps'] = False
97 rv['do_test_steps'] = role == api.builder_name_schema.BUILDER_ROLE_TEST
98 rv['do_perf_steps'] = role == api.builder_name_schema.BUILDER_ROLE_PERF
99
100 # Do we upload perf results?
101 upload_perf_results = False
102 if (role == api.builder_name_schema.BUILDER_ROLE_PERF and
103 CONFIG_RELEASE in configuration):
104 upload_perf_results = True
105 rv['upload_perf_results'] = upload_perf_results
106
107 # Do we upload correctness results?
108 skip_upload_bots = [
109 'ASAN',
110 'Coverage',
111 'MSAN',
112 'TSAN',
113 'UBSAN',
114 'Valgrind',
115 ]
116 upload_dm_results = True
117 for s in skip_upload_bots:
118 if s in builder_name:
119 upload_dm_results = False
120 break
121 rv['upload_dm_results'] = upload_dm_results
122
123 return rv
124
125
126 class SkiaVarsApi(recipe_api.RecipeApi): 18 class SkiaVarsApi(recipe_api.RecipeApi):
127 19
128 def make_path(self, *path): 20 def make_path(self, *path):
129 """Return a Path object for the given path.""" 21 """Return a Path object for the given path."""
130 key = 'custom_%s' % '_'.join(path) 22 key = 'custom_%s' % '_'.join(path)
131 self.m.path.c.base_paths[key] = tuple(path) 23 self.m.path.c.base_paths[key] = tuple(path)
132 return self.m.path[key] 24 return self.m.path[key]
133 25
134 def gsutil_env(self, boto_file):
135 """Environment variables for gsutil."""
136 boto_path = None
137 if boto_file:
138 boto_path = self.m.path.join(self.home_dir, boto_file)
139 return {'AWS_CREDENTIAL_FILE': boto_path,
140 'BOTO_CONFIG': boto_path}
141
142 @property
143 def home_dir(self):
144 """Find the home directory."""
145 home_dir = os.path.expanduser('~')
146 if self._test_data.enabled:
147 home_dir = '[HOME]'
148 return home_dir
149
150 def get_builder_spec(self, builder_name):
151 """Return the builder_spec for the given builder name."""
152 return get_builder_spec(self.m, builder_name)
153
154 def setup(self): 26 def setup(self):
155 """Prepare the variables.""" 27 """Prepare the variables."""
156 # Setup 28 # Setup
157 self.builder_name = self.m.properties['buildername'] 29 self.builder_name = self.m.properties['buildername']
158 self.master_name = self.m.properties['mastername'] 30 self.master_name = self.m.properties['mastername']
159 self.slave_name = self.m.properties['slavename'] 31 self.slave_name = self.m.properties['slavename']
160 self.build_number = self.m.properties['buildnumber'] 32 self.build_number = self.m.properties['buildnumber']
161 33
162 self.slave_dir = self.m.path['slave_build'] 34 self.slave_dir = self.m.path['slave_build']
163 self.checkout_root = self.slave_dir 35 self.checkout_root = self.slave_dir
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 'SAN' in self.builder_name) or 87 'SAN' in self.builder_name) or
216 'RecreateSKPs' in self.builder_name): 88 'RecreateSKPs' in self.builder_name):
217 self.need_chromium_checkout = True 89 self.need_chromium_checkout = True
218 if 'RecreateSKPs' in self.builder_name: 90 if 'RecreateSKPs' in self.builder_name:
219 self.gclient_env['CPPFLAGS'] = ( 91 self.gclient_env['CPPFLAGS'] = (
220 '-DSK_ALLOW_CROSSPROCESS_PICTUREIMAGEFILTERS=1') 92 '-DSK_ALLOW_CROSSPROCESS_PICTUREIMAGEFILTERS=1')
221 93
222 # Some bots also require a checkout of PDFium. 94 # Some bots also require a checkout of PDFium.
223 self.need_pdfium_checkout = 'PDFium' in self.builder_name 95 self.need_pdfium_checkout = 'PDFium' in self.builder_name
224 96
225 # Obtain the spec for this builder. Use it to set more properties. 97 self.builder_cfg = self.m.builder_name_schema.DictForBuilderName(
226 self.builder_spec = get_builder_spec(self.m, self.builder_name) 98 self.builder_name)
99 self.role = self.builder_cfg['role']
100 if self.role == self.m.builder_name_schema.BUILDER_ROLE_HOUSEKEEPER:
101 self.configuration = CONFIG_RELEASE
102 else:
103 self.configuration = self.builder_cfg.get('configuration', CONFIG_DEBUG)
104 arch = (self.builder_cfg.get('arch') or self.builder_cfg.get('target_arch'))
105 if ('Win' in self.builder_cfg.get('os', '') and arch == 'x86_64'):
106 self.configuration += '_x64'
227 107
228 self.builder_cfg = self.builder_spec['builder_cfg']
229 self.role = self.builder_cfg['role']
230
231 self.configuration = self.builder_spec['configuration']
232 self.default_env.update({'SKIA_OUT': self.skia_out, 108 self.default_env.update({'SKIA_OUT': self.skia_out,
233 'BUILDTYPE': self.configuration}) 109 'BUILDTYPE': self.configuration})
234 self.do_compile_steps = self.builder_spec.get('do_compile_steps', True)
235 self.do_test_steps = self.builder_spec['do_test_steps']
236 self.do_perf_steps = self.builder_spec['do_perf_steps']
237 self.is_trybot = self.builder_cfg['is_trybot'] 110 self.is_trybot = self.builder_cfg['is_trybot']
238 self.issue = None 111 self.issue = None
239 self.patchset = None 112 self.patchset = None
240 self.rietveld = None 113 self.rietveld = None
241 if self.is_trybot: 114 if self.is_trybot:
242 self.issue = self.m.properties['issue'] 115 self.issue = self.m.properties['issue']
243 self.patchset = self.m.properties['patchset'] 116 self.patchset = self.m.properties['patchset']
244 self.rietveld = self.m.properties['rietveld'] 117 self.rietveld = self.m.properties['rietveld']
245 self.upload_dm_results = self.builder_spec['upload_dm_results']
246 self.upload_perf_results = self.builder_spec['upload_perf_results']
247 self.dm_dir = self.m.path.join( 118 self.dm_dir = self.m.path.join(
248 self.swarming_out_dir, 'dm') 119 self.swarming_out_dir, 'dm')
249 self.perf_data_dir = self.m.path.join(self.swarming_out_dir, 120 self.perf_data_dir = self.m.path.join(self.swarming_out_dir,
250 'perfdata', self.builder_name, 'data') 121 'perfdata', self.builder_name, 'data')
122
123 @property
124 def upload_dm_results(self):
125 # TODO(borenet): Move this into the swarm_test recipe.
126 skip_upload_bots = [
127 'ASAN',
128 'Coverage',
129 'MSAN',
130 'TSAN',
131 'UBSAN',
132 'Valgrind',
133 ]
134 upload_dm_results = True
135 for s in skip_upload_bots:
136 if s in self.m.properties['buildername']:
137 upload_dm_results = False
138 break
139 return upload_dm_results
140
141 @property
142 def upload_perf_results(self):
143 # TODO(borenet): Move this into the swarm_perf recipe.
144 return ('Release' in self.m.properties['buildername'])
OLDNEW
« no previous file with comments | « infra/bots/recipe_modules/flavor/ios_flavor.py ('k') | infra/bots/recipes/swarm_trigger.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698