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

Side by Side Diff: scripts/master/factory/gclient_factory.py

Issue 11379003: Add Windows ASAN bots. (Closed) Base URL: http://git.chromium.org/chromium/tools/build.git@neuter
Patch Set: Change the window Builder's category to avoid closing the tree Created 8 years 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 | « scripts/master/factory/commands.py ('k') | 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 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 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 """Utility classes to generate and manage a BuildFactory to be passed to a 5 """Utility classes to generate and manage a BuildFactory to be passed to a
6 builder dictionary as the 'factory' member, for each builder in c['builders']. 6 builder dictionary as the 'factory' member, for each builder in c['builders'].
7 7
8 Specifically creates a base BuildFactory that will execute a gclient checkout 8 Specifically creates a base BuildFactory that will execute a gclient checkout
9 first.""" 9 first."""
10 10
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 no_gclient_branch=no_gclient_branch) 204 no_gclient_branch=no_gclient_branch)
205 elif not delay_compile_step: 205 elif not delay_compile_step:
206 self.AddUpdateStep(gclient_spec, factory_properties, factory, 206 self.AddUpdateStep(gclient_spec, factory_properties, factory,
207 slave_type, sudo_for_remove, gclient_deps=gclient_deps) 207 slave_type, sudo_for_remove, gclient_deps=gclient_deps)
208 return factory 208 return factory
209 209
210 def BuildFactory(self, target='Release', clobber=False, tests=None, mode=None, 210 def BuildFactory(self, target='Release', clobber=False, tests=None, mode=None,
211 slave_type='BuilderTester', options=None, 211 slave_type='BuilderTester', options=None,
212 compile_timeout=1200, build_url=None, project=None, 212 compile_timeout=1200, build_url=None, project=None,
213 factory_properties=None, gclient_deps=None, 213 factory_properties=None, gclient_deps=None,
214 target_arch=None): 214 target_arch=None, skip_archive_steps=False):
215 factory_properties = factory_properties or {} 215 factory_properties = factory_properties or {}
216 if options and '--build-tool=ninja' in options: 216 if options and '--build-tool=ninja' in options:
217 factory_properties['gclient_env']['GYP_GENERATORS'] = 'ninja' 217 factory_properties['gclient_env']['GYP_GENERATORS'] = 'ninja'
218 if '--compiler=goma-clang' in options: 218 if '--compiler=goma-clang' in options:
219 # Ninja needs CC and CXX set at gyp time. 219 # Ninja needs CC and CXX set at gyp time.
220 factory_properties['gclient_env']['CC'] = 'clang' 220 factory_properties['gclient_env']['CC'] = 'clang'
221 factory_properties['gclient_env']['CXX'] = 'clang++' 221 factory_properties['gclient_env']['CXX'] = 'clang++'
222 222
223 # Create the spec for the solutions 223 # Create the spec for the solutions
224 gclient_spec = self.BuildGClientSpec(tests) 224 gclient_spec = self.BuildGClientSpec(tests)
225 225
226 # Initialize the factory with the basic steps. 226 # Initialize the factory with the basic steps.
227 factory = self.BaseFactory(gclient_spec, 227 factory = self.BaseFactory(gclient_spec,
228 factory_properties=factory_properties, 228 factory_properties=factory_properties,
229 slave_type=slave_type, 229 slave_type=slave_type,
230 gclient_deps=gclient_deps) 230 gclient_deps=gclient_deps)
231 231
232 # Get the factory command object to create new steps to the factory. 232 # Get the factory command object to create new steps to the factory.
233 factory_cmd_obj = commands.FactoryCommands(factory, target, 233 factory_cmd_obj = commands.FactoryCommands(factory, target,
234 self._build_dir, 234 self._build_dir,
235 self._target_platform, 235 self._target_platform,
236 target_arch) 236 target_arch)
237 237
238 # Update clang if necessary. 238 # Update clang if necessary.
239 gclient_env = factory_properties.get('gclient_env', {}) 239 gclient_env = factory_properties.get('gclient_env', {})
240 if ('clang=1' in gclient_env.get('GYP_DEFINES', '') or 240 if ('clang=1' in gclient_env.get('GYP_DEFINES', '') or
241 'asan=1' in gclient_env.get('GYP_DEFINES', '')): 241 (self._target_platform != 'win32' and
242 factory_properties.get('asan'))):
242 factory_cmd_obj.AddUpdateClangStep() 243 factory_cmd_obj.AddUpdateClangStep()
243 244
244 # Add a step to cleanup temporary files and data left from a previous run 245 # Add a step to cleanup temporary files and data left from a previous run
245 # to prevent the drives from becoming full over time. 246 # to prevent the drives from becoming full over time.
246 factory_cmd_obj.AddTempCleanupStep() 247 factory_cmd_obj.AddTempCleanupStep()
247 248
248 # Add the compile step if needed. 249 # Add the compile step if needed.
249 if slave_type in ['BuilderTester', 'Builder', 'Trybot', 'Indexer']: 250 if slave_type in ['BuilderTester', 'Builder', 'Trybot', 'Indexer']:
250 factory_cmd_obj.AddCompileStep( 251 factory_cmd_obj.AddCompileStep(
251 project or self._project, 252 project or self._project,
252 clobber, 253 clobber,
253 mode=mode, 254 mode=mode,
254 options=options, 255 options=options,
255 timeout=compile_timeout, 256 timeout=compile_timeout,
256 env=factory_properties.get('compile_env')) 257 env=factory_properties.get('compile_env'))
257 258
258 # Archive the full output directory if the machine is a builder. 259 if not skip_archive_steps:
259 if slave_type == 'Builder': 260 # Archive the full output directory if the machine is a builder.
260 factory_cmd_obj.AddZipBuild(halt_on_failure=True, 261 if slave_type == 'Builder':
261 factory_properties=factory_properties) 262 factory_cmd_obj.AddZipBuild(halt_on_failure=True,
263 factory_properties=factory_properties)
262 264
263 # Download the full output directory if the machine is a tester. 265 # Download the full output directory if the machine is a tester.
264 if slave_type == 'Tester': 266 if slave_type == 'Tester':
265 factory_cmd_obj.AddExtractBuild(build_url, 267 factory_cmd_obj.AddExtractBuild(build_url,
266 factory_properties=factory_properties) 268 factory_properties=factory_properties)
267 269
268 return factory 270 return factory
269 271
270 # pylint: disable=R0201 272 # pylint: disable=R0201
271 def TriggerFactory(self, factory, slave_type, factory_properties): 273 def TriggerFactory(self, factory, slave_type, factory_properties):
272 """Add post steps on a build created by BuildFactory.""" 274 """Add post steps on a build created by BuildFactory."""
273 # Trigger any schedulers waiting on the build to complete. 275 # Trigger any schedulers waiting on the build to complete.
274 factory_properties = factory_properties or {} 276 factory_properties = factory_properties or {}
275 if factory_properties.get('trigger') is None: 277 if factory_properties.get('trigger') is None:
276 return 278 return
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 primary_repo=primary_repo, 345 primary_repo=primary_repo,
344 gclient_jobs=gclient_jobs) 346 gclient_jobs=gclient_jobs)
345 347
346 if slave_type in ('AnnotatedTrybot', 'CrosTrybot', 'Trybot'): 348 if slave_type in ('AnnotatedTrybot', 'CrosTrybot', 'Trybot'):
347 factory_cmd_obj.AddApplyIssueStep( 349 factory_cmd_obj.AddApplyIssueStep(
348 timeout=timeout, 350 timeout=timeout,
349 server=config.Master.TryServer.code_review_site) 351 server=config.Master.TryServer.code_review_site)
350 352
351 if not self._nohooks_on_update: 353 if not self._nohooks_on_update:
352 factory_cmd_obj.AddRunHooksStep(env=env, timeout=timeout) 354 factory_cmd_obj.AddRunHooksStep(env=env, timeout=timeout)
OLDNEW
« no previous file with comments | « scripts/master/factory/commands.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698