Index: commit-queue/projects.py |
=================================================================== |
--- commit-queue/projects.py (revision 249146) |
+++ commit-queue/projects.py (working copy) |
@@ -1,778 +0,0 @@ |
-# Copyright (c) 2012 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. |
-"""Define the supported projects.""" |
- |
-import json |
-import logging |
-import os |
-import re |
-import sys |
-import urllib2 |
- |
-import find_depot_tools # pylint: disable=W0611 |
-import checkout |
- |
-import async_push |
-import context |
-import errors |
-import pending_manager |
-from post_processors import chromium_copyright |
-from verification import presubmit_check |
-from verification import project_base |
-from verification import reviewer_lgtm |
-from verification import tree_status |
-from verification import trigger_experimental_try_job |
-from verification import try_job_steps |
-from verification import try_job_on_rietveld |
-from verification import try_server |
- |
- |
-ROOT_DIR = os.path.dirname(os.path.abspath(__file__)) |
-INTERNAL_DIR = os.path.abspath( |
- os.path.join(ROOT_DIR, os.pardir, 'commit-queue-internal')) |
- |
-# These come from commit-queue in the internal repo. |
-if os.path.isdir(INTERNAL_DIR): |
- sys.path.insert(0, INTERNAL_DIR) |
- import chromium_committers # pylint: disable=F0401 |
- import gyp_committers # pylint: disable=F0401 |
- import nacl_committers # pylint: disable=F0401 |
- import skia_committers # pylint: disable=F0401 |
-else: |
- print >> sys.stderr, ( |
- 'Failed to find commit-queue-internal; will fail to start!') |
- chromium_committers = None |
- gyp_committers = None |
- nacl_committers = None |
- skia_committers = None |
- |
- |
-# It's tricky here because 'chrome' is remapped to 'svn' on src.chromium.org but |
-# the other repositories keep their repository name. So don't list it here. |
-SVN_HOST_ALIASES = [ |
- 'svn://svn.chromium.org', |
- 'svn://chrome-svn', |
- 'svn://chrome-svn.corp', |
- 'svn://chrome-svn.corp.google.com' |
-] |
- |
-CHROME_SVN_BASES = [item + '/chrome' for item in SVN_HOST_ALIASES] + [ |
- 'http://src.chromium.org/svn', |
- 'https://src.chromium.org/svn', |
- 'http://src.chromium.org/chrome', |
- 'https://src.chromium.org/chrome', |
-] |
- |
-BLINK_SVN_BASES = [item + '/blink' for item in SVN_HOST_ALIASES] + [ |
- 'http://src.chromium.org/blink', |
- 'https://src.chromium.org/blink', |
-] |
- |
-# Steps that are never considered to determine the try job success. |
-IGNORED_STEPS = ( |
- 'svnkill', 'update_scripts', 'taskkill', 'cleanup_temp', 'process_dumps') |
- |
-# To be used in a regexp to match the branch part of an git url. |
-BRANCH_MATCH = r'\@[a-zA-Z0-9\-_\.]+' |
- |
- |
-def _read_lines(filepath, what): |
- try: |
- return open(filepath).readlines() |
- except IOError: |
- raise errors.ConfigurationError('Put the %s in %s' % (what, filepath)) |
- |
- |
-def _get_chromium_committers(): |
- """Gets the list of all allowed committers.""" |
- if not chromium_committers: |
- # Fake values. |
- entries = ['georges'] |
- else: |
- entries = chromium_committers.get_list() |
- logging.info('Found %d committers' % len(entries)) |
- return ['^%s$' % re.escape(i) for i in entries] |
- |
- |
-def _get_skia_committers(): |
- """Gets the list of all allowed committers.""" |
- if not skia_committers: |
- # Fake values. |
- entries = ['georges'] |
- else: |
- entries = skia_committers.get_list() |
- logging.info('Found %d committers' % len(entries)) |
- return ['^%s$' % re.escape(i) for i in entries] |
- |
- |
-def _get_nacl_committers(): |
- """Gets the list of all allowed committers.""" |
- if not nacl_committers: |
- # Fake values. |
- entries = ['georges'] |
- else: |
- entries = nacl_committers.get_list() |
- logging.info('Found %d committers' % len(entries)) |
- return ['^%s$' % re.escape(i) for i in entries] |
- |
- |
-def _get_gyp_committers(): |
- """Gets the list of all allowed committers.""" |
- if not gyp_committers: |
- # Fake values. |
- entries = ['georges'] |
- else: |
- entries = gyp_committers.get_list() |
- logging.info('Found %d committers' % len(entries)) |
- return ['^%s$' % re.escape(i) for i in entries] |
- |
- |
-def _chromium_lkgr(): |
- try: |
- return int( |
- urllib2.urlopen('https://chromium-status.appspot.com/lkgr').read()) |
- except (ValueError, IOError): |
- return None |
- |
- |
-def _nacl_lkgr(): |
- try: |
- return int( |
- urllib2.urlopen('https://nativeclient-status.appspot.com/lkgr').read()) |
- except (ValueError, IOError): |
- return None |
- |
- |
-def _chromium_status_pwd(root_dir): |
- filepath = os.path.join(root_dir, '.chromium_status_pwd') |
- return _read_lines(filepath, 'chromium-status password')[0].strip() |
- |
- |
-def _gen_blink(user, root_dir, rietveld_obj, no_try): |
- """Generates a PendingManager commit queue for blink/trunk.""" |
- local_checkout = checkout.SvnCheckout( |
- root_dir, |
- 'blink', |
- user, |
- None, |
- 'svn://svn.chromium.org/blink/trunk', |
- []) |
- context_obj = context.Context( |
- rietveld_obj, |
- local_checkout, |
- async_push.AsyncPush( |
- 'https://chromium-status.appspot.com/cq', |
- _chromium_status_pwd(root_dir))) |
- |
- project_bases = [ |
- '^%s/trunk(|/.*)$' % re.escape(base) for base in BLINK_SVN_BASES] |
- project_bases.append( |
- r'^https?\:\/\/chromium.googlesource.com\/chromium\/blink(?:\.git)?%s$' % |
- BRANCH_MATCH) |
- verifiers_no_patch = [ |
- project_base.ProjectBaseUrlVerifier(project_bases), |
- reviewer_lgtm.ReviewerLgtmVerifier( |
- _get_chromium_committers(), |
- [re.escape(user)]), |
- ] |
- verifiers = [] |
- prereq_builder = 'blink_presubmit' |
- prereq_tests = ['presubmit'] |
- step_verifiers = [ |
- try_job_steps.TryJobSteps(builder_name=prereq_builder, |
- steps=prereq_tests)] |
- if not no_try: |
- blink_tests = [ |
- 'blink_heap_unittests', |
- 'blink_platform_unittests', |
- 'webkit_lint', |
- 'webkit_python_tests', |
- 'webkit_tests', |
- 'webkit_unit_tests', |
- 'wtf_unittests', |
- ] |
- |
- # A "compile-only" bot runs the webkit_lint tests (which are fast) |
- # in order to pick up the default build targets. We don't use the |
- # "compile" step because that will build all the chromium targets, not |
- # just the blink-specific ones. |
- compile_only = [ 'webkit_lint' ] |
- |
- builders_and_tests = { |
- 'mac_layout': compile_only, |
- 'win_layout': compile_only, |
- |
- 'linux_blink': blink_tests, |
- 'linux_blink_rel': blink_tests, |
- 'mac_blink_rel': blink_tests, |
- 'win_blink_rel': blink_tests, |
- } |
- |
- step_verifiers += [ |
- try_job_steps.TryJobSteps(builder_name=b, prereq_builder=prereq_builder, |
- prereq_tests=prereq_tests, steps=s) |
- for b, s in builders_and_tests.iteritems() |
- ] |
- |
- verifiers.append(try_job_on_rietveld.TryRunnerRietveld( |
- context_obj, |
- 'http://build.chromium.org/p/tryserver.chromium/', |
- user, |
- step_verifiers, |
- IGNORED_STEPS, |
- 'src')) |
- |
- verifiers.append(tree_status.TreeStatusVerifier( |
- 'https://blink-status.appspot.com')) |
- return pending_manager.PendingManager( |
- context_obj, |
- verifiers_no_patch, |
- verifiers) |
- |
- |
-def _gen_chromium(user, root_dir, rietveld_obj, no_try): |
- """Generates a PendingManager commit queue for chrome/trunk/src.""" |
- local_checkout = checkout.SvnCheckout( |
- root_dir, |
- 'chromium', |
- user, |
- None, |
- 'svn://svn.chromium.org/chrome/trunk/src', |
- [chromium_copyright.process]) |
- context_obj = context.Context( |
- rietveld_obj, |
- local_checkout, |
- async_push.AsyncPush( |
- 'https://chromium-status.appspot.com/cq', |
- _chromium_status_pwd(root_dir))) |
- |
- project_bases = [ |
- '^%s/trunk/src(|/.*)$' % re.escape(base) for base in CHROME_SVN_BASES] |
- |
- aliases = ( |
- # Old path. |
- 'git.chromium.org/git/chromium', |
- # New path. |
- 'git.chromium.org/chromium/src', |
- 'chromium.googlesource.com/chromium/src', |
- 'chromium.googlesource.com/a/chromium/src', |
- ) |
- project_bases.extend( |
- r'^https?\:\/\/%s(?:\.git)?%s$' % (re.escape(i), BRANCH_MATCH) |
- for i in aliases) |
- verifiers_no_patch = [ |
- project_base.ProjectBaseUrlVerifier(project_bases), |
- reviewer_lgtm.ReviewerLgtmVerifier( |
- _get_chromium_committers(), |
- [re.escape(user)]), |
- ] |
- verifiers = [] |
- prereq_builder = 'chromium_presubmit' |
- prereq_tests = ['presubmit'] |
- step_verifiers = [ |
- try_job_steps.TryJobSteps(builder_name=prereq_builder, |
- steps=prereq_tests)] |
- if not no_try: |
- # To add tests to this list, they MUST be in |
- # /chrome/trunk/tools/build/masters/master.chromium/master_gatekeeper_cfg.py |
- # or somehow close the tree whenever they break. |
- standard_tests = [ |
- 'base_unittests', |
- 'browser_tests', |
- 'cacheinvalidation_unittests', |
- 'check_deps', |
- 'check_deps2git', |
- 'content_browsertests', |
- 'content_unittests', |
- 'crypto_unittests', |
- #'gfx_unittests', |
- # Broken in release. |
- #'url_unittests', |
- 'gpu_unittests', |
- 'ipc_tests', |
- 'interactive_ui_tests', |
- 'jingle_unittests', |
- 'media_unittests', |
- 'net_unittests', |
- 'ppapi_unittests', |
- 'printing_unittests', |
- 'sql_unittests', |
- 'sync_unit_tests', |
- 'unit_tests', |
- #'webkit_unit_tests', |
- ] |
- # Use a smaller set of tests for *_aura, since there's a lot of overlap with |
- # the corresponding *_rel builders. |
- # Note: *_aura are Release builders even if their names convey otherwise. |
- linux_aura_tests = [ |
- 'app_list_unittests', |
- 'aura_unittests', |
- 'browser_tests', |
- 'compositor_unittests', |
- 'content_browsertests', |
- 'content_unittests', |
- 'events_unittests', |
- 'interactive_ui_tests', |
- 'unit_tests', |
- ] |
- builders_and_tests = { |
- # TODO(maruel): Figure out a way to run 'sizes' where people can |
- # effectively update the perf expectation correctly. This requires a |
- # clobber=True build running 'sizes'. 'sizes' is not accurate with |
- # incremental build. Reference: |
- # http://chromium.org/developers/tree-sheriffs/perf-sheriffs. |
- # TODO(maruel): An option would be to run 'sizes' but not count a failure |
- # of this step as a try job failure. |
- 'android_dbg': ['slave_steps'], |
- 'android_clang_dbg': ['slave_steps'], |
- 'android_aosp': ['compile'], |
- 'ios_dbg_simulator': [ |
- 'compile', |
- 'base_unittests', |
- 'components_unittests', |
- 'content_unittests', |
- 'crypto_unittests', |
- 'url_unittests', |
- 'net_unittests', |
- 'sql_unittests', |
- 'ui_unittests', |
- ], |
- 'ios_rel_device': ['compile'], |
- 'ios_rel_device_ninja': ['compile'], |
- 'linux_aura': linux_aura_tests, |
- 'linux_clang': ['compile'], |
- 'linux_chromeos_clang': ['compile'], |
- # Note: It is a Release builder even if its name convey otherwise. |
- 'linux_chromeos': standard_tests + [ |
- 'app_list_unittests', |
- 'aura_unittests', |
- 'ash_unittests', |
- 'chromeos_unittests', |
- 'components_unittests', |
- 'dbus_unittests', |
- 'device_unittests', |
- 'events_unittests', |
- 'google_apis_unittests', |
- 'sandbox_linux_unittests', |
- ], |
- 'linux_rel': standard_tests + [ |
- 'cc_unittests', |
- 'chromedriver_unittests', |
- 'components_unittests', |
- 'google_apis_unittests', |
- 'nacl_integration', |
- 'remoting_unittests', |
- 'sandbox_linux_unittests', |
- 'sync_integration_tests', |
- 'telemetry_perf_unittests', |
- 'telemetry_unittests', |
- ], |
- 'mac': ['compile'], |
- 'mac_rel': standard_tests + [ |
- 'app_list_unittests', |
- 'cc_unittests', |
- 'chromedriver_unittests', |
- 'components_unittests', |
- 'google_apis_unittests', |
- 'message_center_unittests', |
- 'nacl_integration', |
- 'remoting_unittests', |
- 'sync_integration_tests', |
- 'telemetry_perf_unittests', |
- 'telemetry_unittests', |
- ], |
- 'win': ['compile'], |
- 'win_rel': standard_tests + [ |
- 'app_list_unittests', |
- 'ash_unittests', |
- 'aura_unittests', |
- 'cc_unittests', |
- 'chrome_elf_unittests', |
- 'chromedriver_unittests', |
- 'components_unittests', |
- 'compositor_unittests', |
- 'events_unittests', |
- 'google_apis_unittests', |
- 'installer_util_unittests', |
- 'mini_installer_test', |
- 'nacl_integration', |
- 'remoting_unittests', |
- 'sync_integration_tests', |
- 'telemetry_perf_unittests', |
- 'telemetry_unittests', |
- 'views_unittests', |
- ], |
- 'win_x64_rel': [ |
- 'base_unittests', |
- ], |
- } |
- |
- swarm_enabled_tests = ( |
- 'base_unittests', |
- 'browser_tests', |
- 'interactive_ui_tests', |
- 'net_unittests', |
- 'unit_tests', |
- ) |
- |
- # pylint: disable=W0612 |
- swarm_test_map = dict( |
- (test, test + '_swarm') for test in swarm_enabled_tests) |
- |
- # Commenting out the items below will make the CQ not use swarm for its |
- # execution. Uncomment to make the CQ use Swarming again. |
- swarm_enabled_builders_and_tests = { |
- ('linux_rel', 'linux_swarm_triggered'): swarm_test_map, |
- ('mac_rel', 'mac_swarm_triggered'): swarm_test_map, |
- ('win_rel', 'win_swarm_triggered'): swarm_test_map, |
- } |
- |
- step_verifiers += [ |
- try_job_steps.TryJobSteps( |
- builder_name=b, prereq_builder=prereq_builder, |
- prereq_tests=prereq_tests, steps=s) |
- for b, s in builders_and_tests.iteritems() |
- if b not in swarm_enabled_builders_and_tests |
- ] + [ |
- try_job_steps.TryJobTriggeredSteps( |
- builder_name='android_dbg_triggered_tests', |
- trigger_name='android_dbg', |
- prereq_builder=prereq_builder, |
- prereq_tests=prereq_tests, |
- steps={'slave_steps': 'slave_steps'}), |
- ] |
- |
- # Add the swarm enabled builders with swarm accepted tests. |
- for (builder, triggered), builder_swarm_enabled_tests in ( |
- swarm_enabled_builders_and_tests.iteritems()): |
- regular_tests = list(set(builders_and_tests[builder]) - |
- set(builder_swarm_enabled_tests)) |
- |
- step_verifiers.append( |
- try_job_steps.TryJobTriggeredOrNormalSteps( |
- builder_name=triggered, |
- trigger_name=builder, |
- prereq_builder=prereq_builder, |
- prereq_tests=prereq_tests, |
- steps=builder_swarm_enabled_tests, |
- trigger_bot_steps=regular_tests, |
- use_triggered_bot=False)) |
- |
- # Experimental recipe-based Chromium trybots. To avoid possible capacity |
- # problems, only enable for a small percentage of try runs. |
- # |
- # Note how we pass revision=None . In presence of safesync_url |
- # this makes a difference: no revision uses safesync_url, |
- # while HEAD ignores it and always fetches latest revision. |
- verifiers.append( |
- trigger_experimental_try_job.TriggerExperimentalTryJobVerifier( |
- context_obj, |
- percentage=0.25, |
- revision=None, |
- try_job_description={ |
- 'linux_chromium_rel': ['defaulttests'], |
- 'mac_chromium_rel': ['defaulttests'], |
- })) |
- |
- verifiers.append(try_job_on_rietveld.TryRunnerRietveld( |
- context_obj, |
- 'http://build.chromium.org/p/tryserver.chromium/', |
- user, |
- step_verifiers, |
- IGNORED_STEPS, |
- 'src')) |
- |
- verifiers.append(tree_status.TreeStatusVerifier( |
- 'https://chromium-status.appspot.com')) |
- return pending_manager.PendingManager( |
- context_obj, |
- verifiers_no_patch, |
- verifiers) |
- |
- |
-def _skia_status_pwd(root_dir): |
- filepath = os.path.join(root_dir, '.skia_status_pwd') |
- return _read_lines(filepath, 'skia-status password')[0].strip() |
- |
- |
-def _gen_skia(user, root_dir, rietveld_obj, no_try): |
- """Generates a PendingManager commit queue for Skia. |
- |
- Adds the following verifiers to the PendingManager: |
- * ProjectBaseUrlVerifier |
- * ReviewerLgtmVerifier |
- * PresubmitCheckVerifier |
- * TreeStatusVerifier |
- * TryRunnerRietveld (runs compile trybots) |
- """ |
- naked_url = '://skia.googlecode.com/svn/trunk' |
- local_checkout = checkout.SvnCheckout( |
- root_dir, |
- 'skia', |
- user, |
- None, |
- 'https' + naked_url) |
- context_obj = context.Context( |
- rietveld_obj, |
- local_checkout, |
- async_push.AsyncPush( |
- 'https://skia-tree-status.appspot.com/cq', |
- _skia_status_pwd(root_dir)), |
- server_hooks_missing=True) |
- |
- project_bases = [ |
- '^%s(|/.*)$' % re.escape(base + naked_url) for base in ('http', 'https') |
- ] |
- project_bases.append( |
- r'^https?\:\/\/skia.googlesource.com\/skia(?:\.git)?%s$' % |
- BRANCH_MATCH) |
- verifiers_no_patch = [ |
- project_base.ProjectBaseUrlVerifier(project_bases), |
- reviewer_lgtm.ReviewerLgtmVerifier( |
- _get_skia_committers(), |
- [re.escape(user)]), |
- ] |
- verifiers = [ |
- presubmit_check.PresubmitCheckVerifier(context_obj), |
- tree_status.TreeStatusVerifier( |
- 'https://skia-tree-status.appspot.com') |
- ] |
- |
- if not no_try: |
- # TODO(skia-infrastructure-team): Use skia.org instead of the below when it |
- # is ready. |
- try_server_url = 'http://108.170.219.164:10117/' |
- |
- # Get the required build steps and builder names from the try server. |
- compile_required_build_steps = json.load( |
- urllib2.urlopen( |
- try_server_url + 'json/cq_required_steps'))['cq_required_steps'] |
- builder_names = list( |
- json.load(urllib2.urlopen(try_server_url + 'json/cqtrybots'))) |
- |
- step_verifiers = [] |
- for builder_name in builder_names: |
- step_verifiers.append( |
- try_job_steps.TryJobSteps( |
- builder_name=builder_name, |
- steps=compile_required_build_steps)) |
- verifiers.append(try_job_on_rietveld.TryRunnerRietveld( |
- context_obj=context_obj, |
- try_server_url=try_server_url, |
- commit_user=user, |
- step_verifiers=step_verifiers, |
- ignored_steps=[], |
- solution='src')) |
- |
- return pending_manager.PendingManager( |
- context_obj, |
- verifiers_no_patch, |
- verifiers) |
- |
- |
-def _gen_nacl(user, root_dir, rietveld_obj, no_try): |
- """Generates a PendingManager commit queue for Native Client.""" |
- offset = 'trunk/src/native_client' |
- local_checkout = checkout.SvnCheckout( |
- root_dir, |
- 'nacl', |
- user, |
- None, |
- 'svn://svn.chromium.org/native_client/' + offset) |
- context_obj = context.Context( |
- rietveld_obj, |
- local_checkout, |
- async_push.AsyncPush( |
- 'https://nativeclient-status.appspot.com/cq', |
- _chromium_status_pwd(root_dir))) |
- |
- host_aliases = SVN_HOST_ALIASES + [ |
- 'http://src.chromium.org', 'https://src.chromium.org'] |
- svn_bases = [i + '/native_client' for i in host_aliases] |
- project_bases = [ |
- '^%s/%s(|/.*)$' % (re.escape(base), offset) for base in svn_bases |
- ] |
- aliases = ( |
- 'git.chromium.org/native_client/src/native_client', |
- 'chromium.googlesource.com/native_client/src/native_client', |
- ) |
- project_bases.extend( |
- r'^https?\:\/\/%s(?:\.git)?%s$' % (re.escape(i), BRANCH_MATCH) |
- for i in aliases) |
- verifiers_no_patch = [ |
- project_base.ProjectBaseUrlVerifier(project_bases), |
- reviewer_lgtm.ReviewerLgtmVerifier( |
- _get_nacl_committers(), |
- [re.escape(user)]), |
- ] |
- verifiers = [ |
- presubmit_check.PresubmitCheckVerifier(context_obj), |
- ] |
- if not no_try: |
- # Grab the list of all the builders here. The commit queue needs to know |
- # which builders were triggered. TODO: makes this more automatic. |
- url = 'http://build.chromium.org/p/tryserver.nacl/json/builders' |
- builders_and_tests = dict( |
- (key, []) for key in json.load(urllib2.urlopen(url)) |
- if (key.startswith('nacl-') and |
- 'toolchain' not in key and |
- 'valgrind' not in key and |
- 'perf_panda' not in key and |
- 'arm_hw' not in key and |
- 'shared' not in key and |
- 'coverage' not in key) |
- ) |
- verifiers.append(try_server.TryRunnerSvn( |
- context_obj, |
- 'http://build.chromium.org/p/tryserver.nacl/', |
- user, |
- builders_and_tests, |
- IGNORED_STEPS, |
- 'native_client', |
- ['--root', 'native_client'], |
- _nacl_lkgr)) |
- |
- verifiers.append(tree_status.TreeStatusVerifier( |
- 'https://nativeclient-status.appspot.com')) |
- return pending_manager.PendingManager( |
- context_obj, |
- verifiers_no_patch, |
- verifiers) |
- |
- |
-def _gen_gyp(user, root_dir, rietveld_obj, no_try): |
- """Generates a PendingManager commit queue for GYP.""" |
- naked_url = '://gyp.googlecode.com/svn/trunk' |
- local_checkout = checkout.SvnCheckout( |
- root_dir, |
- 'gyp', |
- user, |
- None, |
- 'https' + naked_url) |
- context_obj = context.Context( |
- rietveld_obj, |
- local_checkout, |
- async_push.AsyncPush( |
- 'https://chromium-status.appspot.com/cq/receiver', |
- _chromium_status_pwd(root_dir))) |
- |
- project_bases = [ |
- '^%s(|/.*)$' % re.escape(base + naked_url) for base in ('http', 'https') |
- ] |
- verifiers_no_patch = [ |
- project_base.ProjectBaseUrlVerifier(project_bases), |
- reviewer_lgtm.ReviewerLgtmVerifier( |
- _get_gyp_committers(), |
- [re.escape(user)]), |
- ] |
- verifiers = [] |
- if not no_try: |
- # Grab the list of all the builders here. The commit queue needs to know |
- # which builders were triggered. TODO: makes this more automatic. |
- # GYP is using the Nacl try server. |
- url = 'http://build.chromium.org/p/tryserver.nacl/json/builders' |
- builders_and_tests = dict( |
- (key, []) for key in json.load(urllib2.urlopen(url)) |
- if key.startswith('gyp-') |
- ) |
- verifiers.append(try_server.TryRunnerSvn( |
- context_obj, |
- 'http://build.chromium.org/p/tryserver.nacl/', |
- user, |
- builders_and_tests, |
- IGNORED_STEPS, |
- 'gyp', |
- ['--root', 'gyp'], |
- lambda: None)) |
- |
- verifiers.append(tree_status.TreeStatusVerifier( |
- 'https://gyp-status.appspot.com/status')) |
- return pending_manager.PendingManager( |
- context_obj, |
- verifiers_no_patch, |
- verifiers) |
- |
- |
-def _gen_tools(user, root_dir, rietveld_obj, _no_try): |
- """Generates a PendingManager commit queue for everything under |
- chrome/trunk/tools. |
- |
- These don't have a try server but have presubmit checks. |
- """ |
- # Ignore no_try. |
- path = 'tools' |
- project_bases = [ |
- '^%s/trunk/%s(|/.*)$' % (re.escape(base), path) |
- for base in CHROME_SVN_BASES |
- ] |
- aliases = ( |
- # Old path. |
- 'git.chromium.org/git/chromium/tools', |
- # New path. |
- 'git.chromium.org/chromium/tools', |
- 'chromium.googlesource.com/chromium/tools', |
- 'chromium.googlesource.com/a/chromium/tools', |
- ) |
- project_bases.extend( |
- r'^https?\:\/\/%s\/([a-z0-9\-_]+)(?:\.git)?%s$' % ( |
- re.escape(i), BRANCH_MATCH) for i in aliases) |
- return _internal_simple(path, project_bases, user, root_dir, rietveld_obj) |
- |
- |
-def _gen_chromium_deps(user, root_dir, rietveld_obj, _no_try): |
- """Generates a PendingManager commit queue for |
- chrome/trunk/deps/. |
- """ |
- # Ignore no_try. |
- path = 'deps' |
- project_bases = [ |
- '^%s/trunk/%s(|/.*)$' % (re.escape(base), path) |
- for base in CHROME_SVN_BASES |
- ] |
- return _internal_simple(path, project_bases, user, root_dir, rietveld_obj) |
- |
- |
-def _internal_simple(path, project_bases, user, root_dir, rietveld_obj): |
- """Generates a PendingManager commit queue for chrome/trunk/tools/build.""" |
- local_checkout = checkout.SvnCheckout( |
- root_dir, |
- os.path.basename(path), |
- user, |
- None, |
- 'svn://svn.chromium.org/chrome/trunk/' + path, |
- [chromium_copyright.process]) |
- context_obj = context.Context( |
- rietveld_obj, |
- local_checkout, |
- async_push.AsyncPush( |
- 'https://chromium-status.appspot.com/cq', |
- _chromium_status_pwd(root_dir))) |
- |
- verifiers_no_patch = [ |
- project_base.ProjectBaseUrlVerifier(project_bases), |
- reviewer_lgtm.ReviewerLgtmVerifier( |
- _get_chromium_committers(), |
- [re.escape(user)]), |
- ] |
- verifiers = [ |
- presubmit_check.PresubmitCheckVerifier(context_obj, timeout=900), |
- ] |
- |
- return pending_manager.PendingManager( |
- context_obj, |
- verifiers_no_patch, |
- verifiers) |
- |
- |
-def supported_projects(): |
- """List the projects that can be managed by the commit queue.""" |
- return sorted( |
- x[5:] for x in dir(sys.modules[__name__]) if x.startswith('_gen_')) |
- |
- |
-def load_project(project, user, root_dir, rietveld_obj, no_try): |
- """Loads the specified project.""" |
- assert os.path.isabs(root_dir) |
- return getattr(sys.modules[__name__], '_gen_' + project)( |
- user, root_dir, rietveld_obj, no_try) |