Index: master.tryserver.nacl/master.cfg |
=================================================================== |
--- master.tryserver.nacl/master.cfg (revision 67605) |
+++ master.tryserver.nacl/master.cfg (working copy) |
@@ -1,597 +0,0 @@ |
-# -*- python -*- |
-# ex: set syntax=python: |
- |
-# Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-# This is the buildmaster config file for the 'chromium' bot. It must |
-# be installed as 'master.cfg' in your buildmaster's base directory |
-# (although the filename can be changed with the --basedir option to |
-# 'mktap buildbot master'). |
- |
-# It has one job: define a dictionary named BuildmasterConfig. This |
-# dictionary has a variety of keys to control different aspects of the |
-# buildmaster. They are documented in docs/config.xhtml . |
- |
-from buildbot.scheduler import Triggerable |
- |
-# Reload all the python files under master and common |
-import master |
-reload(master) |
-import common |
-reload(common) |
- |
-# These modules are beside this configuration file. They should be moved to |
-# scripts/master. |
-from builders_pools import BuildersPools |
-from try_job_http import TryJobHTTP |
-from try_job_svn import TryJobSubversion |
- |
-# These modules come from scripts/master, which must be in the PYTHONPATH. |
-import chromium_step |
-import try_job_status_update |
-from master.factory import commands |
-from master.factory import gyp_factory |
-from master.factory import nacl_factory |
-from master.factory import nacl_sdk_factory |
-from master.factory import o3d_factory |
-import master_utils |
-import slaves_list |
- |
-# These modules come from scripts/common, which must be in the PYTHONPATH. |
-import chromium_config as config |
-import chromium_utils |
- |
-ActiveMaster = config.Master.NativeClientTryServer |
- |
-MAIL_NOTIFIER = True |
-UPDATE_CODEREVIEW = ActiveMaster.is_production_host |
- |
-# This is the dictionary that the buildmaster pays attention to. We also use |
-# a shorter alias to save typing. |
-c = BuildmasterConfig = {} |
- |
- |
-####### CHANGESOURCES |
- |
-c['change_source'] = [ ] |
- |
- |
-####### BUILDERS |
- |
-c['builders'] = [] |
- |
-# FACTORIES |
- |
-m_win32 = {} |
-m_win64 = {} |
-m_mac = {} |
-m_linux = {} |
-m_arm = {} |
- |
-m_win32['nacl'] = nacl_factory.NativeClientFactory( |
- 'native_client', 'win32', use_supplement=True).NativeClientFactory |
-m_win64['nacl'] = nacl_factory.NativeClientFactory( |
- 'native_client', 'win64', use_supplement=True).NativeClientFactory |
-m_linux['nacl'] = nacl_factory.NativeClientFactory( |
- 'native_client', 'linux2', use_supplement=True).NativeClientFactory |
-m_mac['nacl'] = nacl_factory.NativeClientFactory( |
- 'native_client', 'darwin', use_supplement=True).NativeClientFactory |
-m_arm['nacl'] = nacl_factory.NativeClientFactory( |
- 'native_client', 'arm', use_supplement=True).NativeClientFactory |
- |
-m_win32['naclsdk'] = nacl_sdk_factory.NativeClientSDKFactory( |
- 'native_client', 'wincyg').NativeClientSDKFactory |
-m_linux['naclsdk'] = nacl_sdk_factory.NativeClientSDKFactory( |
- 'native_client', 'linux2').NativeClientSDKFactory |
-m_mac['naclsdk'] = nacl_sdk_factory.NativeClientSDKFactory( |
- 'native_client', 'darwin').NativeClientSDKFactory |
- |
-m_win32['gyp'] = gyp_factory.GYPFactory('trunk', |
- target_platform='win32').GYPFactory |
-m_mac['gyp'] = gyp_factory.GYPFactory('trunk', |
- target_platform='darwin').GYPFactory |
-m_linux['gyp'] = gyp_factory.GYPFactory('trunk', |
- target_platform='linux2').GYPFactory |
- |
-m_win32['o3d'] = o3d_factory.O3DFactory('trunk', |
- target_platform='win32').O3DFactory |
-m_mac['o3d'] = o3d_factory.O3DFactory('trunk', |
- target_platform='darwin').O3DFactory |
-m_linux['o3d'] = o3d_factory.O3DFactory('trunk', |
- target_platform='linux2').O3DFactory |
- |
- |
-def CreateBot(platform, password=config.Master.GetBotPassword(), |
- builder_name=None, target=None, project=None, |
- tests=None, options=None, mode=None, timeout=1200, |
- slave_names=None, factory_properties=None): |
- """Generates and register a builder along with its slave(s). |
- |
- Implicitly register slave_name or slave_names if they weren't registered yet. |
- If none of slave_name or slave_names is supplied, a slave name will be |
- constructed from the builder name.""" |
- if platform not in ('win32', 'win64', 'linux', 'mac', 'arm'): |
- raise Exception(platform + ' is not an known os type') |
- run_crash_handler = False |
- # Don't enable auto_reboot for people testing locally. |
- auto_reboot = ActiveMaster.is_production_host |
- if platform == 'win32': |
- factory = m_win32[project] |
- run_crash_handler = True |
- formats = ['msvs'] |
- elif platform == 'win64': |
- factory = m_win64[project] |
- run_crash_handler = True |
- formats = ['msvs'] |
- elif platform == 'linux': |
- factory = m_linux[project] |
- formats = ['scons', 'make'] |
- elif platform == 'mac': |
- factory = m_mac[project] |
- formats = ['xcode'] |
- elif platform == 'arm': |
- factory = m_arm[project] |
- formats = ['scons', 'linux'] |
- # Arm slaves have issue rebooting continuously. |
- auto_reboot = False |
- if project == 'nacl': |
- builder_factory = factory( |
- identifier=builder_name, slave_type='Trybot', target=target, |
- tests=tests, options=options, mode=mode, compile_timeout=timeout, |
- clobber=True, factory_properties=factory_properties) |
- elif project == 'naclsdk': |
- builder_factory = factory( |
- identifier=builder_name, slave_type='Trybot', target=target, |
- tests=tests, options=options, mode=mode, compile_timeout=timeout, |
- clobber=True, factory_properties=factory_properties, |
- official_release=False) |
- elif project == 'o3d': |
- builder_factory = factory( |
- identifier=builder_name, slave_type='Trybot', |
- tests=tests, options=options, mode=mode, compile_timeout=timeout, |
- clobber=True) |
- elif project == 'gyp': |
- builder_factory = factory(formats=formats) |
- else: |
- assert False |
- builder = { |
- 'name': builder_name, |
- # TODO(maruel): remove |
- 'builddir': builder_name.replace(' ', '-'), |
- 'factory': builder_factory, |
- 'auto_reboot': auto_reboot, |
- } |
- if slave_names: |
- builder['slavenames'] = slave_names |
- else: |
- builder['slavename'] = builder_name.replace(' ', '-') |
- c['builders'].append(builder) |
- |
- |
-# Try queues. |
-pools = BuildersPools('nacl') |
-number_slaves = 12 |
-slaves = slaves_list.SlavesList('slaves.cfg', 'NativeClientTryServer') |
- |
- |
-# A index to slave name mapper. |
-def GetSlaveName(builder_names, index): |
- s = [] |
- for b in builder_names: |
- s += slaves.GetSlavesName(builder=b) |
- # Fill up with dummy test slaves. |
- s.extend(['try-%s-%d' % (builder_names[0], i) |
- for i in range(1, number_slaves + 1 - len(s))]) |
- return s[index - 1] |
- |
- |
-projects = [ |
- { |
- 'name': 'nacl', |
- 'platforms': [ |
- { |
- 'name': 'hardy32_m32_n32_dbg', |
- 'core_platform': 'linux', |
- 'builder_names': ['hardy32'], |
- 'target': 'dbg-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'hardy32_m32_n32_opt', |
- 'core_platform': 'linux', |
- 'builder_names': ['hardy32'], |
- 'target': 'opt-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'lucid32_m32_n32_dbg', |
- 'core_platform': 'linux', |
- 'builder_names': ['lucid32'], |
- 'target': 'dbg-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'lucid32_m32_n32_opt', |
- 'core_platform': 'linux', |
- 'builder_names': ['lucid32'], |
- 'target': 'opt-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'hardy64_m32_n32_dbg', |
- 'core_platform': 'linux', |
- 'builder_names': ['hardy64'], |
- 'target': 'dbg-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'hardy64_m32_n32_opt', |
- 'core_platform': 'linux', |
- 'builder_names': ['hardy64'], |
- 'target': 'opt-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'lucid64_m32_n32_dbg', |
- 'core_platform': 'linux', |
- 'builder_names': ['lucid64'], |
- 'target': 'dbg-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'lucid64_m32_n32_opt', |
- 'core_platform': 'linux', |
- 'builder_names': ['lucid64'], |
- 'target': 'opt-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'hardy64_m64_n64_dbg', |
- 'core_platform': 'linux', |
- 'builder_names': ['hardy64'], |
- 'target': 'dbg-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'], |
- 'options': nacl_factory.hardy64_m64_n64_options, |
- }, |
- { |
- 'name': 'hardy64_m64_n64_opt', |
- 'core_platform': 'linux', |
- 'builder_names': ['hardy64'], |
- 'target': 'opt-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'], |
- 'options': nacl_factory.hardy64_m64_n64_options, |
- }, |
- { |
- 'name': 'lucid64_m64_n64_dbg', |
- 'core_platform': 'linux', |
- 'builder_names': ['lucid64'], |
- 'target': 'dbg-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'], |
- 'options': nacl_factory.generic_m64_n64_options, |
- }, |
- { |
- 'name': 'lucid64_m64_n64_opt', |
- 'core_platform': 'linux', |
- 'builder_names': ['lucid64'], |
- 'target': 'opt-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'], |
- 'options': nacl_factory.generic_m64_n64_options, |
- }, |
- { |
- 'name': 'mac_dbg', |
- 'core_platform': 'mac', |
- 'builder_names': ['mac'], |
- 'target': 'dbg-mac,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'mac_opt', |
- 'core_platform': 'mac', |
- 'builder_names': ['mac'], |
- 'target': 'opt-mac,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_selenium'], |
- 'options': nacl_factory.generic_m32_n32_options, |
- }, |
- { |
- 'name': 'win32_dbg', |
- 'core_platform': 'win32', |
- 'builder_names': ['win32'], |
- 'target': 'dbg-win,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'], |
- 'options': nacl_factory.win_m32_n32_options, |
- 'factory_properties': { 'vcvarsall': 'x86' }, |
- }, |
- { |
- 'name': 'win32_opt', |
- 'core_platform': 'win32', |
- 'builder_names': ['win32'], |
- 'target': 'opt-win,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'], |
- 'options': nacl_factory.win_m32_n32_options, |
- 'factory_properties': { 'vcvarsall': 'x86' }, |
- }, |
- { |
- 'name': 'win64_dbg', |
- 'core_platform': 'win64', |
- 'builder_names': ['win64'], |
- 'target': 'dbg-win,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'], |
- 'options': nacl_factory.win_m64_n64_options, |
- 'factory_properties': { 'vcvarsall': 'x64' }, |
- }, |
- { |
- 'name': 'win64_opt', |
- 'core_platform': 'win64', |
- 'builder_names': ['win64'], |
- 'target': 'opt-win,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests'], |
- 'options': nacl_factory.win_m64_n64_options, |
- 'factory_properties': { 'vcvarsall': 'x64' }, |
- }, |
- { |
- 'name': 'arm_dbg', |
- 'core_platform': 'arm', |
- # Use a single slave to prevent races on archive file. |
- 'raw_slave_names': ['jega198'], |
- 'target': 'dbg-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_trigger_arm_hw_dbg'], |
- 'options': nacl_factory.linux_marm_narm_options['opt-arm-try'], |
- 'factory_properties': { |
- 'archive_build': True, |
- 'archive_src': 'native_client/arm.tgz', |
- 'archive_dst_base': 'between_builders', |
- 'archive_dst': 'arm_try_dbg.tgz', |
- }, |
- }, |
- { |
- 'name': 'arm_opt', |
- 'core_platform': 'arm', |
- # Use a single slave to prevent races on archive file. |
- 'raw_slave_names': ['jega199'], |
- 'target': 'opt-linux,nacl,doc', |
- 'tests': ['nacl_small_tests', 'nacl_medium_tests', 'nacl_large_tests', |
- 'nacl_trigger_arm_hw_opt'], |
- 'options': nacl_factory.linux_marm_narm_options['opt-arm-try'], |
- 'factory_properties': { |
- 'archive_build': True, |
- 'archive_src': 'native_client/arm.tgz', |
- 'archive_dst_base': 'between_builders', |
- 'archive_dst': 'arm_try_opt.tgz', |
- }, |
- }, |
- ], |
- }, |
- { |
- 'name': 'naclsdk', |
- 'platforms': [ |
- { |
- 'name': 'linux', |
- 'core_platform': 'linux', |
- 'builder_names': ['hardy32', 'hardy64', 'lucid32', 'lucid64'], |
- 'target': 'nacl_client_sdk', |
- }, |
- { |
- 'name': 'mac', |
- 'core_platform': 'mac', |
- 'builder_names': ['mac'], |
- 'target': 'native_client_sdk', |
- }, |
- { |
- 'name': 'windows', |
- 'core_platform': 'win32', |
- 'builder_names': ['win32'], |
- 'target': 'native_client_sdk', |
- }, |
- ], |
- }, |
- { |
- 'name': 'gyp', |
- 'tests': [], |
- 'platforms': [ |
- { |
- 'name': 'linux', |
- 'builder_names': ['hardy32', 'hardy64', 'lucid32', 'lucid64'], |
- }, |
- { |
- 'name': 'mac', |
- }, |
- { |
- 'name': 'win', |
- 'core_platform': 'win32', |
- 'builder_names': ['win32'], |
- }, |
- ], |
- }, |
- { |
- 'name': 'o3d', |
- 'tests': [], |
- 'platforms': [ |
- { |
- 'name': 'linux', |
- 'mode': 'dbg-linux', |
- #'builder_names': ['hardy32', 'hardy64', 'lucid32', 'lucid64'], |
- 'builder_names': ['hardy32', 'hardy64'], |
- }, |
- { |
- 'name': 'mac', |
- 'mode': 'dbg-mac', |
- }, |
- { |
- 'name': 'd3d', |
- 'core_platform': 'win32', |
- 'builder_names': ['win32'], |
- 'mode': 'dbg-d3d', |
- }, |
- ], |
- }, |
-] |
- |
-for project in projects: |
- for platform in project['platforms']: |
- true_builder_names = platform.get('builder_names', [platform['name']]) |
- slave_names = [GetSlaveName(true_builder_names, x) |
- for x in range(1, number_slaves + 1)] |
- # This allows builders to pluck out particular slaves to use. |
- # It is used for the arm cross-compile builds to prevent race conditions |
- # by allowing only a single slave to write to a share archive URL. |
- slave_names = platform.get('raw_slave_names', slave_names) |
- name = project['name'] + '-' + platform['name'] |
- CreateBot(platform=platform.get('core_platform', platform['name']), |
- target=platform.get('target', project.get('target')), |
- tests=platform.get('tests', project.get('tests')), |
- mode=platform.get('mode'), |
- options=platform.get('options', project.get('options')), |
- factory_properties=platform.get( |
- 'factory_properties', project.get('factory_properties')), |
- slave_names=slave_names, |
- project=project['name'], |
- builder_name=name) |
- pools[project['name']].append(name) |
- |
- |
-# Arm board tests |
-for mode in ('dbg', 'opt'): |
- name = 'nacl-arm_hw_%s' % mode |
- f = m_arm['nacl'](name, clobber=True, |
- target='%s-linux,nacl' % mode, |
- tests=['nacl_small_tests', |
- 'nacl_medium_tests', |
- 'nacl_large_tests', |
- 'nacl_arm_hw', |
- 'nacl_selenium'], |
- options=nacl_factory.linux_marm_narm_options['%s-arm' % mode], |
- slave_type='Tester', |
- factory_properties={ |
- 'archive_build': False, |
- 'archive_url': ('http://chrome-web/buildbot/nacl_archive/' |
- 'between_builders/arm_try_%s.tgz' % mode) |
- }, |
- ) |
- # ARM slaves have issue rebooting so don't make them auto reboot. |
- c['builders'].append({ |
- 'name': name, |
- 'builddir': name, |
- 'factory': f, |
- 'slavenames': ['nacl-arm2', 'nacl-arm2c', 'nacl-arm2d', 'nacl-arm1d'], |
- }) |
- |
- |
-####### BUILDSLAVES |
- |
-# The 'slaves' list defines the set of allowable buildslaves. List all the |
-# slaves registered to a builder. Remove dupes. |
-c['slaves'] = master_utils.AutoSetupSlaves(c['builders'], |
- config.Master.GetBotPassword()) |
- |
- |
-####### SCHEDULERS |
- |
-# Configure the Schedulers; |
-# Main Tryscheduler for the try queue. groups is defined in the loop above. |
-c['schedulers'] = [] |
- |
-last_good_urls = { |
- 'nacl': config.Master.NativeClient.last_good_url, |
- 'naclsdk': None, |
- 'o3d': config.Master.O3D.last_good_url, |
- 'gyp': None, |
-} |
-code_review_sites = { |
- 'nacl': config.Master.NativeClient.code_review_site, |
- 'naclsdk': None, |
- 'o3d': config.Master.O3D.code_review_site, |
- 'gyp': config.Master.NativeClient.code_review_site, |
-} |
-c['schedulers'].append(TryJobHTTP( |
- name='try_job_http', |
- port=ActiveMaster.try_job_port, |
- last_good_urls=last_good_urls, |
- code_review_sites=code_review_sites, |
- pools=pools)) |
- |
-if ActiveMaster.svn_url: |
- c['schedulers'].append(TryJobSubversion( |
- name='try_job_svn', |
- svn_url=ActiveMaster.svn_url, |
- last_good_urls=last_good_urls, |
- code_review_sites=code_review_sites, |
- pools=pools)) |
- |
-for mode in ('dbg', 'opt'): |
- s = Triggerable( |
- name='arm_%s_hw_tests' % mode, |
- builderNames=['nacl-arm_hw_%s' % mode]) |
- c['schedulers'].append(s) |
- |
- |
-####### STATUS TARGETS |
- |
-# Adds common status and tools to this master. |
-master_utils.AutoSetupMaster(c, ActiveMaster, False) |
- |
-# Add more. |
- |
-if MAIL_NOTIFIER: |
- # Add a dumb MailNotifier first so it will be used for BuildSlave with |
- # notify_on_missing set when they go missing. |
- from buildbot.status import mail |
- c['status'].append(mail.MailNotifier( |
- fromaddr=ActiveMaster.from_address, |
- builders=[], |
- relayhost=config.Master.smtp, |
- lookup=master_utils.FilterDomain())) |
- |
- # Try job result emails. |
- from try_mail_notifier import TryMailNotifier |
- c['status'].append(TryMailNotifier( |
- fromaddr=ActiveMaster.from_address, |
- subject="try of %(reason)s @ r%(revision)s %(timestamp)s", |
- mode='all', |
- relayhost=config.Master.smtp, |
- lookup=master_utils.FilterDomain())) |
- |
-if UPDATE_CODEREVIEW: |
- c['status'].append(try_job_status_update.TryJobStatusUpdate( |
- important_steps=['compile'])) |
- |
- |
-# Keep last try jobs, the default is too low. Must keep at least a few days |
-# worth of try jobs. |
-c['buildHorizon'] = 2000 |
-c['logHorizon'] = 2000 |
-# Must be at least 2x the number of slaves. |
-c['eventHorizon'] = 100 |
-# Must be at least 2x the number of on-going builds. |
-c['buildCacheSize'] = 100 |
- |
- |
-####### PROJECT IDENTITY |
- |
-# The 'projectURL' string will be used to provide a link |
-# from buildbot HTML pages to your project's home page. |
-c['projectURL'] = 'http://go/ChromeTryServer' |
- |
-# Buildbot master url: |
-c['buildbotURL'] = 'http://buildbot.jail.google.com/buildbot/nacl-tryserver/' |