summaryrefslogtreecommitdiffstats
path: root/build/util
diff options
context:
space:
mode:
authorevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-22 00:41:52 +0000
committerevan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-22 00:41:52 +0000
commit5193d537d7a68cb5bf50bacc9e42437d6faf66d5 (patch)
tree1143832c0529dd6c6584f6e2b79b3c681b3e110b /build/util
parent0a318c63fa078d29641b505c2f44ee76c7e773dc (diff)
downloadchromium_src-5193d537d7a68cb5bf50bacc9e42437d6faf66d5.zip
chromium_src-5193d537d7a68cb5bf50bacc9e42437d6faf66d5.tar.gz
chromium_src-5193d537d7a68cb5bf50bacc9e42437d6faf66d5.tar.bz2
webkit: expose webkit branch and revision number in about pages
- Change lastchange.py to work in other directories and to provide SVN URL. - Use lastchange.py in place where we generate WebKit versioning info. - Include branch@revision string in glue API. BUG=41264 TEST=compiles Review URL: http://codereview.chromium.org/6354014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72245 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'build/util')
-rwxr-xr-xbuild/util/lastchange.py67
1 files changed, 46 insertions, 21 deletions
diff --git a/build/util/lastchange.py b/build/util/lastchange.py
index 1846bab..a91a520 100755
--- a/build/util/lastchange.py
+++ b/build/util/lastchange.py
@@ -9,46 +9,71 @@ lastchange.py -- Chromium revision fetching utility.
import optparse
import os
-import re
import subprocess
import sys
+class VersionInfo(object):
+ def __init__(self, url, root, revision):
+ self.url = url
+ self.root = root
+ self.revision = revision
-def FetchSVNRevision(command):
+
+def FetchSVNRevision(command, directory):
"""
- Fetch the Subversion revision for the local tree.
+ Fetch the Subversion branch and revision for the a given directory
+ by running the given command (e.g. "svn info").
Errors are swallowed.
+
+ Returns:
+ a VersionInfo object or None on error.
"""
try:
proc = subprocess.Popen(command,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
+ cwd=directory,
shell=(sys.platform=='win32'))
except OSError:
# command is apparently either not installed or not executable.
return None
- if proc:
- svn_re = re.compile('^Revision:\s+(\d+)', re.M)
- match = svn_re.search(proc.stdout.read())
- if match:
- return match.group(1)
- return None
+ if not proc:
+ return None
+
+ attrs = {}
+ for line in proc.stdout:
+ line = line.strip()
+ if not line:
+ continue
+ key, val = line.split(': ', 1)
+ attrs[key] = val
+
+ try:
+ url = attrs['URL']
+ root = attrs['Repository Root']
+ revision = attrs['Revision']
+ except KeyError:
+ return None
+
+ return VersionInfo(url, root, revision)
-def FetchChange(default_lastchange):
+def FetchVersionInfo(default_lastchange, directory=None):
"""
- Returns the last change, from some appropriate revision control system.
+ Returns the last change (in the form of a branch, revision tuple),
+ from some appropriate revision control system.
"""
- change = FetchSVNRevision(['svn', 'info'])
- if not change and sys.platform in ('linux2',):
- change = FetchSVNRevision(['git', 'svn', 'info'])
- if not change:
+ version_info = FetchSVNRevision(['svn', 'info'], directory)
+ if not version_info and sys.platform in ('linux2',):
+ version_info = FetchSVNRevision(['git', 'svn', 'info'], directory)
+ if not version_info:
if default_lastchange and os.path.exists(default_lastchange):
- change = open(default_lastchange, 'r').read().strip()
+ revision = open(default_lastchange, 'r').read().strip()
+ version_info = VersionInfo(None, None, revision)
else:
- change = '0'
- return change
+ version_info = VersionInfo('', '', '0')
+ return version_info
def WriteIfChanged(file_name, contents):
@@ -90,12 +115,12 @@ def main(argv=None):
parser.print_help()
sys.exit(2)
- change = FetchChange(opts.default_lastchange)
+ version_info = FetchVersionInfo(opts.default_lastchange)
if opts.revision_only:
- print change
+ print version_info.revision
else:
- contents = "LASTCHANGE=%s\n" % change
+ contents = "LASTCHANGE=%s\n" % version_info.revision
if out_file:
WriteIfChanged(out_file, contents)
else: