Skip to content
Snippets Groups Projects
Commit ff11d748 authored by Bryan O'Sullivan's avatar Bryan O'Sullivan
Browse files

Add Mercurial-specific build version info.

Pilfered from billc.
parent 3fbdf433
No related branches found
No related tags found
No related merge requests found
"""@file llversion.py """@file llversion.py
@brief Utility for parsing llcommon/llversion${server}.h @brief Utility for parsing llcommon/llversion${server}.h
for the version string and channel string for the version string and channel string
Utility that parses svn info for branch and revision Utility that parses hg or svn info for branch and revision
$LicenseInfo:firstyear=2006&license=mit$ $LicenseInfo:firstyear=2006&license=mit$
...@@ -79,8 +79,8 @@ def get_svn_status_matching(regular_expression): ...@@ -79,8 +79,8 @@ def get_svn_status_matching(regular_expression):
status, output = commands.getstatusoutput('svn info %s' % get_src_root()) status, output = commands.getstatusoutput('svn info %s' % get_src_root())
m = regular_expression.search(output) m = regular_expression.search(output)
if not m: if not m:
print "Failed to parse svn info output, resultfollows:" print >> sys.stderr, "Failed to parse svn info output, result follows:"
print output print >> sys.stderr, output
raise Exception, "No matching svn status in "+src_root raise Exception, "No matching svn status in "+src_root
return m.group(1) return m.group(1)
...@@ -92,4 +92,25 @@ def get_svn_revision(): ...@@ -92,4 +92,25 @@ def get_svn_revision():
last_rev_re = re.compile('Last Changed Rev: (\d+)') last_rev_re = re.compile('Last Changed Rev: (\d+)')
return get_svn_status_matching(last_rev_re) return get_svn_status_matching(last_rev_re)
def get_hg_repo():
status, output = commands.getstatusoutput('hg showconfig paths.default')
if status:
print >> sys.stderr, output
sys.exit(1)
if not output:
print >> sys.stderr, 'ERROR: cannot find repo we cloned from'
sys.exit(1)
return output
def get_hg_changeset():
status, output = commands.getstatusoutput('hg id -i')
if status:
print >> sys.stderr, output
sys.exit(1)
return output
def using_svn():
return os.path.isdir(os.path.join(get_src_root(), '.svn'))
def using_hg():
return os.path.isdir(os.path.join(get_src_root(), '.hg'))
...@@ -241,23 +241,17 @@ def main(): ...@@ -241,23 +241,17 @@ def main():
if update_server: if update_server:
server_version = new_version server_version = new_version
else: else:
# Assume we're updating just the build number
cl = '%s info "%s"' % (svn, src_root) if llversion.using_svn():
status, output = _getstatusoutput(cl) revision = llversion.get_svn_revision()
if verbose: branch = llversion.get_svn_branch()
print elif llversion.using_hg():
print "svn info output:" revision = llversion.get_hg_changeset()
print "----------------" branch = llversion.get_hg_repo()
print output else:
print >>sys.stderr, "ERROR: could not determine revision and branch"
branch_match = svn_branch_re.search(output)
revision_match = svn_revision_re.search(output)
if not branch_match or not revision_match:
print "Failed to execute svn info, output follows:"
print output
return -1 return -1
branch = branch_match.group(1)
revision = revision_match.group(1)
if skip_on_branch_re and skip_on_branch_re.match(branch): if skip_on_branch_re and skip_on_branch_re.match(branch):
print "Release Candidate Build, leaving version files untouched." print "Release Candidate Build, leaving version files untouched."
return 0 return 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment