diff options
author | tfarina <tfarina@chromium.org> | 2014-11-12 05:34:47 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-12 05:34:47 -0800 |
commit | a3d33c546f8a9037c6138acc8dfe68452459efde (patch) | |
tree | b4e33e53faf5f8d0d27c394b2c02fefc606b5403 | |
parent | 6a070dc06af4e9f305f9d08a69e34d18ade473cb (diff) |
Cleanup: Remove submit_try script.
It is probably broken, and by now nobody should be using it really
anyway.
BUG=None
R=borenet@google.com
Review URL: https://codereview.chromium.org/720603002
-rwxr-xr-x | tools/submit_try | 293 | ||||
-rw-r--r-- | tools/submit_try.bat | 1 |
2 files changed, 0 insertions, 294 deletions
diff --git a/tools/submit_try b/tools/submit_try deleted file mode 100755 index c687e632c7..0000000000 --- a/tools/submit_try +++ /dev/null @@ -1,293 +0,0 @@ -#!/usr/bin/python - -# Copyright (c) 2013 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. - - -""" -submit_try: Submit a try request. - -This is a thin wrapper around the try request utilities in depot_tools which -adds some validation and supports both git and svn. -""" - - -import httplib -import json -import os -import re -import shutil -import subprocess -import sys -import tempfile - -import retrieve_from_googlesource - - -# Alias which can be used to run a try on every builder. -ALL_BUILDERS = 'all' -# Alias which can be used to run a try on all compile builders. -COMPILE_BUILDERS = 'compile' -# Alias which can be used to run a try on all builders that are run in the CQ. -CQ_BUILDERS = 'cq' -# Alias which can be used to specify a regex to choose builders. -REGEX = 'regex' - -ALL_ALIASES = [ALL_BUILDERS, COMPILE_BUILDERS, REGEX, CQ_BUILDERS] - -LARGE_NUMBER_OF_BOTS = 5 - -GIT = 'git.bat' if os.name == 'nt' else 'git' - -# URL of the slaves.cfg file in the Skia buildbot sources. -SKIA_REPO = 'https://skia.googlesource.com/buildbot' -SLAVES_CFG_PATH = 'master/slaves.cfg' - -# All try builders have this suffix. -TRYBOT_SUFFIX = '-Trybot' - -# String for matching the svn url of the try server inside codereview.settings. -TRYSERVER_SVN_URL = 'TRYSERVER_SVN_URL: ' - -# Strings used for matching svn config properties. -URL_STR = 'URL' -REPO_ROOT_STR = 'Repository Root' - - -def FindDepotTools(): - """ Find depot_tools on the local machine and return its location. """ - which_cmd = 'where' if os.name == 'nt' else 'which' - cmd = [which_cmd, 'gcl'] - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) - if proc.wait() != 0: - raise Exception('Couldn\'t find depot_tools in PATH!') - gcl = proc.communicate()[0].split('\n')[0].rstrip() - depot_tools_dir = os.path.dirname(gcl) - return depot_tools_dir - - -def GetCheckoutRoot(): - """ Determine where the local checkout is rooted.""" - cmd = ['git', 'rev-parse', '--show-toplevel'] - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) - if proc.wait() != 0: - raise Exception('Couldn\'t find checkout root!') - return os.path.basename(proc.communicate()[0]) - - -def GetTryRepo(): - """Determine the TRYSERVER_SVN_URL from the codereview.settings file.""" - codereview_settings_file = os.path.join(os.path.dirname(__file__), os.pardir, - 'codereview.settings') - with open(codereview_settings_file) as f: - for line in f: - if line.startswith(TRYSERVER_SVN_URL): - return line[len(TRYSERVER_SVN_URL):].rstrip() - raise Exception('Couldn\'t determine the TRYSERVER_SVN_URL. Make sure it is ' - 'defined in the %s file.' % codereview_settings_file) - - -def RetrieveTrybotList(): - """Retrieve the list of known trybots from the checked-in buildbot - configuration.""" - # Retrieve the slaves.cfg file from the repository. - slaves_cfg_text = retrieve_from_googlesource.get(SKIA_REPO, SLAVES_CFG_PATH) - - # Execute the slaves.cfg file to obtain the list of slaves. - vars = {} - exec(slaves_cfg_text, vars) - slaves_cfg = vars['slaves'] - - # Pull the list of known builders from the slaves list. - trybots = set() - for slave in slaves_cfg: - for builder in slave['builder']: - if not builder.endswith(TRYBOT_SUFFIX): - trybots.add(builder) - - return list(trybots), vars['cq_trybots'] - - -def ValidateArgs(argv, trybots, cq_trybots, is_svn=True): - """ Parse and validate command-line arguments. If the arguments are valid, - returns a tuple of (<changelist name>, <list of trybots>). - - trybots: list of strings; A list of the known try builders. - cq_trybots: list of strings; Trybots who get run by the commit queue. - is_svn: bool; whether or not we're in an svn checkout. - """ - - class CollectedArgs(object): - def __init__(self, bots, changelist, revision): - self._bots = bots - self._changelist = changelist - self._revision = revision - - @property - def bots(self): - for bot in self._bots: - yield bot - - @property - def changelist(self): - return self._changelist - - @property - def revision(self): - return self._revision - - usage = ( -"""submit_try: Submit a try request. -submit_try %s--bot <buildername> [<buildername> ...] - --b, --bot Builder(s) or Alias on which to run the try. Required. - Allowed aliases: %s --h, --help Show this message. --r <revision#> Revision from which to run the try. --l, --list_bots List the available try builders and aliases and exit. -""" % ('<changelist> ' if is_svn else '', ALL_ALIASES)) - - def Error(msg=None): - if msg: - print msg - print usage - sys.exit(1) - - using_bots = None - changelist = None - revision = None - - while argv: - arg = argv.pop(0) - if arg == '-h' or arg == '--help': - Error() - elif arg == '-l' or arg == '--list_bots': - format_args = ['\n '.join(sorted(trybots))] + \ - ALL_ALIASES + \ - ['\n '.join(sorted(cq_trybots))] - print ( -""" -submit_try: Available builders:\n %s - -Can also use the following aliases to run on groups of builders- - %s: Will run against all trybots. - %s: Will run against all compile trybots. - %s: You will be prompted to enter a regex to select builders with. - %s: Will run against the same trybots as the commit queue:\n %s - -""" % tuple(format_args)) - sys.exit(0) - elif arg == '-b' or arg == '--bot': - if using_bots: - Error('--bot specified multiple times.') - if len(argv) < 1: - Error('You must specify a builder with "--bot".') - using_bots = [] - while argv and not argv[0].startswith('-'): - for bot in argv.pop(0).split(','): - if bot in ALL_ALIASES: - if using_bots: - Error('Cannot specify "%s" with additional builder names or ' - 'aliases.' % bot) - elif bot == COMPILE_BUILDERS: - using_bots = [t for t in trybots if t.startswith('Build')] - elif bot == CQ_BUILDERS: - using_bots = cq_trybots - elif bot == REGEX: - while True: - regex = raw_input("Enter your trybot regex: ") - p = re.compile(regex) - using_bots = [t for t in trybots if p.match(t)] - print '\n\nTrybots that match your regex:\n%s\n\n' % '\n'.join( - using_bots) - if raw_input('Re-enter regex? [y,n]: ') == 'n': - break - break - else: - if not bot in trybots: - Error('Unrecognized builder: %s' % bot) - using_bots.append(bot) - elif arg == '-r': - if len(argv) < 1: - Error('You must specify a revision with "-r".') - revision = argv.pop(0) - else: - if changelist or not is_svn: - Error('Unknown argument: %s' % arg) - changelist = arg - if is_svn and not changelist: - Error('You must specify a changelist name.') - if not using_bots: - Error('You must specify one or more builders using --bot.') - if len(using_bots) > LARGE_NUMBER_OF_BOTS: - are_you_sure = raw_input('Running a try on a large number of bots is very ' - 'expensive. You may be able to get enough ' - 'information by running on a smaller set of bots. ' - 'Are you sure you want to do this? [y,n]: ') - if are_you_sure != 'y': - Error() - return CollectedArgs(bots=using_bots, changelist=changelist, - revision=revision) - - -def SubmitTryRequest(trybots, revision=None): - """ Submits a try request on the given list of trybots. - - Args: - trybots: list of strings; the names of the try builders to run. - revision: optional string; the revision from which to run the try. - """ - botlist = ','.join(['%s%s' % (bot, TRYBOT_SUFFIX) for bot in trybots]) - # Find depot_tools. This is needed to import git_cl and trychange. - sys.path.append(FindDepotTools()) - import git_cl - import trychange - - cmd = [GIT, 'diff', git_cl.Changelist().GetUpstreamBranch(), - '--no-ext-diff'] - proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - git_data = proc.communicate() - if git_data[0] is None: - raise Exception('Failed to capture git diff!') - - temp_dir = tempfile.mkdtemp() - try: - diff_file = os.path.join(temp_dir, 'patch.diff') - with open(diff_file, 'wb') as f: - f.write(git_data[0]) - f.close() - - try_args = ['--use_svn', - '--svn_repo', GetTryRepo(), - '--root', GetCheckoutRoot(), - '--bot', botlist, - '--diff', diff_file, - ] - if revision: - try_args.extend(['-r', revision]) - - # Submit the try request. - trychange.TryChange(try_args, None, False) - finally: - shutil.rmtree(temp_dir) - - -def main(): - # Retrieve the list of active try builders from the build master. - trybots, cq_trybots = RetrieveTrybotList() - - # Determine if we're in an SVN checkout. - is_svn = os.path.isdir('.svn') - - # Parse and validate the command-line arguments. - args = ValidateArgs(sys.argv[1:], trybots=trybots, cq_trybots=cq_trybots, - is_svn=is_svn) - - # Submit the try request. - SubmitTryRequest(args.bots, args.revision) - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/tools/submit_try.bat b/tools/submit_try.bat deleted file mode 100644 index d1d5392868..0000000000 --- a/tools/submit_try.bat +++ /dev/null @@ -1 +0,0 @@ -python tools\submit_try %*
\ No newline at end of file |