OLD | NEW |
1 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2011 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 class to build the chromium master BuildFactory's. | 5 """Utility class to build the chromium master BuildFactory's. |
6 | 6 |
7 Based on gclient_factory.py and adds chromium-specific steps.""" | 7 Based on gclient_factory.py and adds chromium-specific steps.""" |
8 | 8 |
9 import os | 9 import os |
10 import re | 10 import re |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 if config.Master.trunk_internal_url: | 169 if config.Master.trunk_internal_url: |
170 PYAUTO_DEPS.append(('src/chrome/test/data/plugin', | 170 PYAUTO_DEPS.append(('src/chrome/test/data/plugin', |
171 config.Master.trunk_internal_url + | 171 config.Master.trunk_internal_url + |
172 '/data/chrome_plugin_tests')) | 172 '/data/chrome_plugin_tests')) |
173 PYAUTO_DEPS.append(('src/chrome/test/data/pyauto_private', | 173 PYAUTO_DEPS.append(('src/chrome/test/data/pyauto_private', |
174 config.Master.trunk_internal_url + | 174 config.Master.trunk_internal_url + |
175 '/data/pyauto_private')) | 175 '/data/pyauto_private')) |
176 | 176 |
177 def __init__(self, build_dir, target_platform=None, pull_internal=True, | 177 def __init__(self, build_dir, target_platform=None, pull_internal=True, |
178 full_checkout=False, additional_svn_urls=None, name=None, | 178 full_checkout=False, additional_svn_urls=None, name=None, |
179 custom_deps_list=None): | 179 custom_deps_list=None, nohooks_on_update=False): |
180 if full_checkout: | 180 if full_checkout: |
181 needed_components = None | 181 needed_components = None |
182 else: | 182 else: |
183 needed_components = self.NEEDED_COMPONENTS | 183 needed_components = self.NEEDED_COMPONENTS |
184 main = gclient_factory.GClientSolution(config.Master.trunk_url_src, | 184 main = gclient_factory.GClientSolution(config.Master.trunk_url_src, |
185 needed_components=needed_components, | 185 needed_components=needed_components, |
186 name=name, | 186 name=name, |
187 custom_deps_list=custom_deps_list, | 187 custom_deps_list=custom_deps_list, |
188 custom_vars_list=[self.CUSTOM_VARS_WEBKIT_MIRROR, | 188 custom_vars_list=[self.CUSTOM_VARS_WEBKIT_MIRROR, |
189 self.CUSTOM_VARS_GOOGLECODE_URL, | 189 self.CUSTOM_VARS_GOOGLECODE_URL, |
190 self.CUSTOM_VARS_SOURCEFORGE_URL]) | 190 self.CUSTOM_VARS_SOURCEFORGE_URL]) |
191 internal_custom_deps_list = [main] | 191 internal_custom_deps_list = [main] |
192 if config.Master.trunk_internal_url_src and pull_internal: | 192 if config.Master.trunk_internal_url_src and pull_internal: |
193 internal = gclient_factory.GClientSolution( | 193 internal = gclient_factory.GClientSolution( |
194 config.Master.trunk_internal_url_src, | 194 config.Master.trunk_internal_url_src, |
195 needed_components=self.NEEDED_COMPONENTS_INTERNAL) | 195 needed_components=self.NEEDED_COMPONENTS_INTERNAL) |
196 internal_custom_deps_list.append(internal) | 196 internal_custom_deps_list.append(internal) |
197 | 197 |
198 additional_svn_urls = additional_svn_urls or [] | 198 additional_svn_urls = additional_svn_urls or [] |
199 for svn_url in additional_svn_urls: | 199 for svn_url in additional_svn_urls: |
200 solution = gclient_factory.GClientSolution(svn_url) | 200 solution = gclient_factory.GClientSolution(svn_url) |
201 internal_custom_deps_list.append(solution) | 201 internal_custom_deps_list.append(solution) |
202 | 202 |
203 gclient_factory.GClientFactory.__init__(self, build_dir, | 203 gclient_factory.GClientFactory.__init__(self, build_dir, |
204 internal_custom_deps_list, | 204 internal_custom_deps_list, |
205 target_platform=target_platform) | 205 target_platform=target_platform, |
| 206 nohooks_on_update=nohooks_on_update) |
206 | 207 |
207 def _AddTests(self, factory_cmd_obj, tests, mode=None, | 208 def _AddTests(self, factory_cmd_obj, tests, mode=None, |
208 factory_properties=None): | 209 factory_properties=None): |
209 """Add the tests listed in 'tests' to the factory_cmd_obj.""" | 210 """Add the tests listed in 'tests' to the factory_cmd_obj.""" |
210 factory_properties = factory_properties or {} | 211 factory_properties = factory_properties or {} |
211 tests = (tests or [])[:] | 212 tests = (tests or [])[:] |
212 | 213 |
213 # This function is too crowded, try to simplify it a little. | 214 # This function is too crowded, try to simplify it a little. |
214 def R(test): | 215 def R(test): |
215 if gclient_factory.ShouldRunTest(tests, test): | 216 if gclient_factory.ShouldRunTest(tests, test): |
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 | 524 |
524 test_parity_platform = factory_properties.get('test_parity_platform') | 525 test_parity_platform = factory_properties.get('test_parity_platform') |
525 if test_parity_platform: | 526 if test_parity_platform: |
526 chromium_cmd_obj.AddSendTestParityStep(test_parity_platform) | 527 chromium_cmd_obj.AddSendTestParityStep(test_parity_platform) |
527 | 528 |
528 # Append any post steps needed by the BuildFactory. | 529 # Append any post steps needed by the BuildFactory. |
529 self.PostBuildFactory(factory, target=target, slave_type=slave_type, | 530 self.PostBuildFactory(factory, target=target, slave_type=slave_type, |
530 factory_properties=factory_properties) | 531 factory_properties=factory_properties) |
531 return factory | 532 return factory |
532 | 533 |
| 534 def ChromiumAnnotationFactory(self, annotation_script, |
| 535 branch='master', |
| 536 target='Release', |
| 537 slave_type='AnnotatedBuilderTester', |
| 538 clobber=False, |
| 539 compile_timeout=6000, |
| 540 build_url=None, |
| 541 project=None, |
| 542 factory_properties=None, options=None, |
| 543 tests=None, |
| 544 gclient_deps=None): |
| 545 """Annotation-driven Chromium buildbot factory. |
| 546 |
| 547 Line a ChromiumFactory, but non-sync steps (compile, run tests) |
| 548 are specified in a script that uses @@@BUILD_STEP descriptive |
| 549 text@@@ style annotations. |
| 550 |
| 551 Note new slave type AnnotatedBuilderTester; we don't want a |
| 552 compile step added. |
| 553 TODO(jrg): is a new slave type the right direction? |
| 554 """ |
| 555 # Setup factory. |
| 556 factory_properties = factory_properties or {} |
| 557 options = options or {} |
| 558 factory = self.BuildFactory(target, clobber, |
| 559 None, None, # tests_for_build, mode, |
| 560 slave_type, options, compile_timeout, build_url, |
| 561 project, factory_properties, |
| 562 gclient_deps=gclient_deps) |
| 563 |
| 564 # Get the factory command object to create new steps to the factory. |
| 565 chromium_cmd_obj = chromium_commands.ChromiumCommands(factory, |
| 566 target, |
| 567 self._build_dir, |
| 568 self._target_platform) |
| 569 |
| 570 # Add the main build. |
| 571 chromium_cmd_obj.AddAnnotationStep('build', annotation_script) |
| 572 |
| 573 return factory |
| 574 |
| 575 |
533 def ReliabilityTestsFactory(self, platform='win'): | 576 def ReliabilityTestsFactory(self, platform='win'): |
534 """Create a BuildFactory to run a reliability slave.""" | 577 """Create a BuildFactory to run a reliability slave.""" |
535 factory = BuildFactory({}) | 578 factory = BuildFactory({}) |
536 cmd_obj = chromium_commands.ChromiumCommands(factory, | 579 cmd_obj = chromium_commands.ChromiumCommands(factory, |
537 'Release', '', | 580 'Release', '', |
538 self._target_platform) | 581 self._target_platform) |
539 cmd_obj.AddUpdateScriptStep() | 582 cmd_obj.AddUpdateScriptStep() |
540 cmd_obj.AddReliabilityTests(platform=platform) | 583 cmd_obj.AddReliabilityTests(platform=platform) |
541 return factory | 584 return factory |
542 | 585 |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
778 if 'cros_deps' not in [s.name for s in self._solutions]: | 821 if 'cros_deps' not in [s.name for s in self._solutions]: |
779 self._solutions.append(gclient_factory.GClientSolution( | 822 self._solutions.append(gclient_factory.GClientSolution( |
780 config.Master.trunk_url + '/src/tools/cros.DEPS', name='cros_deps')) | 823 config.Master.trunk_url + '/src/tools/cros.DEPS', name='cros_deps')) |
781 if 'asan.DEPS' not in [s.name for s in self._solutions]: | 824 if 'asan.DEPS' not in [s.name for s in self._solutions]: |
782 self._solutions.append(gclient_factory.GClientSolution( | 825 self._solutions.append(gclient_factory.GClientSolution( |
783 'http://src.chromium.org/svn/trunk/deps/asan.DEPS', | 826 'http://src.chromium.org/svn/trunk/deps/asan.DEPS', |
784 'asan.DEPS')) | 827 'asan.DEPS')) |
785 return self.ChromiumFactory(target, clobber, tests, mode, slave_type, | 828 return self.ChromiumFactory(target, clobber, tests, mode, slave_type, |
786 options, compile_timeout, build_url, project, | 829 options, compile_timeout, build_url, project, |
787 factory_properties) | 830 factory_properties) |
OLD | NEW |