Index: scripts/slave/slave_utils.py |
diff --git a/scripts/slave/slave_utils.py b/scripts/slave/slave_utils.py |
index 7aaaff4a6070b1ddd361e335b728be0d513e3935..2571bbacb290136e8a54eb1ebb3b36be221f1c6e 100644 |
--- a/scripts/slave/slave_utils.py |
+++ b/scripts/slave/slave_utils.py |
@@ -10,7 +10,6 @@ |
import os |
import re |
import shutil |
-import subprocess |
import sys |
import tempfile |
import time |
@@ -22,12 +21,6 @@ |
# These codes used to distinguish true errors from script warnings. |
ERROR_EXIT_CODE = 1 |
WARNING_EXIT_CODE = 88 |
- |
- |
-# Regex matching git comment lines containing svn revision info. |
-GIT_SVN_ID_RE = re.compile(r'^git-svn-id: .*@([0-9]+) .*$') |
-# Regex for the master branch commit position. |
-GIT_CR_POS_RE = re.compile(r'^Cr-Commit-Position: refs/heads/master@{#(\d+)}$') |
# Local errors. |
@@ -743,172 +736,3 @@ |
chromium_utils.RunCommand(zip_cmd) |
GSUtilCopy(local_archive, 'gs://%s/%s' % (bucket, archive)) |
return 'https://storage.cloud.google.com/%s/%s' % (bucket, archive) |
- |
- |
-def GetPerfDashboardRevisions( |
- build_properties, main_revision, blink_revision, point_id=None): |
- """Fills in the same revisions fields that process_log_utils does.""" |
- return GetPerfDashboardRevisionsWithProperties( |
- build_properties.get('got_webrtc_revision'), |
- build_properties.get('got_v8_revision'), |
- build_properties.get('version'), |
- build_properties.get('git_revision'), |
- main_revision, blink_revision, point_id) |
- |
- |
-def GetPerfDashboardRevisionsWithProperties( |
- got_webrtc_revision, got_v8_revision, version, git_revision, main_revision, |
- blink_revision, point_id=None): |
- """Fills in the same revisions fields that process_log_utils does.""" |
- |
- versions = {} |
- versions['rev'] = main_revision |
- versions['webkit_rev'] = blink_revision |
- versions['webrtc_rev'] = got_webrtc_revision |
- versions['v8_rev'] = got_v8_revision |
- versions['ver'] = version |
- versions['git_revision'] = git_revision |
- versions['point_id'] = point_id |
- # There are a lot of "bad" revisions to check for, so clean them all up here. |
- for key in versions.keys(): |
- if not versions[key] or versions[key] == 'undefined': |
- del versions[key] |
- return versions |
- |
- |
-def GetMainRevision(build_properties, build_dir, revision=None): |
- """Return revision to use as the numerical x-value in the perf dashboard. |
- |
- This will be used as the value of "rev" in the data passed to |
- results_dashboard.SendResults. |
- |
- In order or priority, this function could return: |
- 1. The value of the --revision flag (IF it can be parsed as an int). |
- 2. The value of "got_revision_cp" in build properties. |
- 3. An SVN number, git commit position, or git commit hash. |
- """ |
- if revision and revision.isdigit(): |
- return revision |
- commit_pos_num = _GetCommitPos(build_properties) |
- if commit_pos_num is not None: |
- return commit_pos_num |
- # TODO(sullivan,qyearsley): Don't fall back to _GetRevision if it returns |
- # a git commit, since this should be a numerical revision. Instead, abort |
- # and fail. |
- return GetRevision(os.path.dirname(os.path.abspath(build_dir))) |
- |
- |
-def GetBlinkRevision(build_dir, webkit_revision=None): |
- """ |
- TODO(eyaich): Blink's now folded into Chromium and doesn't have a separate |
- revision. Use main_revision and delete GetBlinkRevision and uses. |
- """ |
- if webkit_revision: |
- webkit_revision = webkit_revision |
- else: |
- try: |
- webkit_dir = chromium_utils.FindUpward( |
- os.path.abspath(build_dir), 'third_party', 'WebKit', 'Source') |
- webkit_revision = GetRevision(webkit_dir) |
- except Exception: |
- webkit_revision = None |
- return webkit_revision |
- |
- |
-def GetRevision(in_directory): |
- """Returns the SVN revision, git commit position, or git hash. |
- |
- Args: |
- in_directory: A directory in the repository to be checked. |
- |
- Returns: |
- An SVN revision as a string if the given directory is in a SVN repository, |
- or a git commit position number, or if that's not available, a git hash. |
- If all of that fails, an empty string is returned. |
- """ |
- import xml.dom.minidom |
- if not os.path.exists(os.path.join(in_directory, '.svn')): |
- if _IsGitDirectory(in_directory): |
- svn_rev = _GetGitCommitPosition(in_directory) |
- if svn_rev: |
- return svn_rev |
- return _GetGitRevision(in_directory) |
- else: |
- return '' |
- |
- # Note: Not thread safe: http://bugs.python.org/issue2320 |
- output = subprocess.Popen(['svn', 'info', '--xml'], |
- cwd=in_directory, |
- shell=(sys.platform == 'win32'), |
- stdout=subprocess.PIPE).communicate()[0] |
- try: |
- dom = xml.dom.minidom.parseString(output) |
- return dom.getElementsByTagName('entry')[0].getAttribute('revision') |
- except xml.parsers.expat.ExpatError: |
- return '' |
- return '' |
- |
- |
-def _GetCommitPos(build_properties): |
- """Extracts the commit position from the build properties, if its there.""" |
- if 'got_revision_cp' not in build_properties: |
- return None |
- commit_pos = build_properties['got_revision_cp'] |
- return int(re.search(r'{#(\d+)}', commit_pos).group(1)) |
- |
- |
-def _GetGitCommitPositionFromLog(log): |
- """Returns either the commit position or svn rev from a git log.""" |
- # Parse from the bottom up, in case the commit message embeds the message |
- # from a different commit (e.g., for a revert). |
- for r in [GIT_CR_POS_RE, GIT_SVN_ID_RE]: |
- for line in reversed(log.splitlines()): |
- m = r.match(line.strip()) |
- if m: |
- return m.group(1) |
- return None |
- |
- |
-def _GetGitCommitPosition(dir_path): |
- """Extracts the commit position or svn revision number of the HEAD commit.""" |
- git_exe = 'git.bat' if sys.platform.startswith('win') else 'git' |
- p = subprocess.Popen( |
- [git_exe, 'log', '-n', '1', '--pretty=format:%B', 'HEAD'], |
- cwd=dir_path, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
- (log, _) = p.communicate() |
- if p.returncode != 0: |
- return None |
- return _GetGitCommitPositionFromLog(log) |
- |
- |
-def _GetGitRevision(in_directory): |
- """Returns the git hash tag for the given directory. |
- |
- Args: |
- in_directory: The directory where git is to be run. |
- |
- Returns: |
- The git SHA1 hash string. |
- """ |
- git_exe = 'git.bat' if sys.platform.startswith('win') else 'git' |
- p = subprocess.Popen( |
- [git_exe, 'rev-parse', 'HEAD'], |
- cwd=in_directory, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) |
- (stdout, _) = p.communicate() |
- return stdout.strip() |
- |
- |
-def _IsGitDirectory(dir_path): |
- """Checks whether the given directory is in a git repository. |
- |
- Args: |
- dir_path: The directory path to be tested. |
- |
- Returns: |
- True if given directory is in a git repository, False otherwise. |
- """ |
- git_exe = 'git.bat' if sys.platform.startswith('win') else 'git' |
- with open(os.devnull, 'w') as devnull: |
- p = subprocess.Popen([git_exe, 'rev-parse', '--git-dir'], |
- cwd=dir_path, stdout=devnull, stderr=devnull) |
- return p.wait() == 0 |