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

Patch in some other useful scripts from trunk.

parent d508beb0
No related branches found
No related tags found
No related merge requests found
"""@file llversion.py
@brief Utility for parsing llcommon/llversion${server}.h
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$
......@@ -79,8 +79,8 @@ def get_svn_status_matching(regular_expression):
status, output = commands.getstatusoutput('svn info %s' % get_src_root())
m = regular_expression.search(output)
if not m:
print "Failed to parse svn info output, resultfollows:"
print output
print >> sys.stderr, "Failed to parse svn info output, result follows:"
print >> sys.stderr, output
raise Exception, "No matching svn status in "+src_root
return m.group(1)
......@@ -92,4 +92,25 @@ def get_svn_revision():
last_rev_re = re.compile('Last Changed Rev: (\d+)')
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'))
......@@ -37,8 +37,6 @@ add_indra_lib_path()
import getopt, os, re, commands
from indra.util import llversion
hg = os.path.expandvars("${HG}")
if not hg or hg == "${HG}": hg = "hg"
svn = os.path.expandvars("${SVN}")
if not svn or svn == "${SVN}": svn = "svn"
......@@ -154,8 +152,6 @@ re_map['indra/newview/English.lproj/InfoPlist.strings'] = \
version_re = re.compile('(\d+).(\d+).(\d+).(\d+)')
svn_branch_re = re.compile('^URL:\s+\S+/([^/\s]+)$', re.MULTILINE)
svn_revision_re = re.compile('^Last Changed Rev: (\d+)$', re.MULTILINE)
hg_branch_re = re.compile('^.*_([^_\s]*)\s*$', re.MULTILINE)
hg_revision_re = re.compile('^changeset:\s+(\d+):', re.MULTILINE)
def main():
script_path = os.path.dirname(__file__)
......@@ -245,33 +241,17 @@ def main():
if update_server:
server_version = new_version
else:
# Assume we're updating just the build number
cl = '%s info "%s"' % (svn, src_root)
status, output = _getstatusoutput(cl)
branch_match = None
revision_match = None
if status == 0:
branch_match = svn_branch_re.search(output)
revision_match = svn_revision_re.search(output)
if llversion.using_svn():
revision = llversion.get_svn_revision()
branch = llversion.get_svn_branch()
elif llversion.using_hg():
revision = llversion.get_hg_changeset()
branch = llversion.get_hg_repo()
else:
cl = '%s log --limit 1' % hg
status, output = _getstatusoutput(cl)
if status == 0:
branch_match = hg_branch_re.search(os.path.expandvars("${PARABUILD_BUILD_NAME}"))
revision_match = hg_revision_re.search(output)
if verbose:
print
print "svn info output:"
print "----------------"
print output
if not branch_match or not revision_match:
print "Failed to execute svn info, output follows:"
print output
print >>sys.stderr, "ERROR: could not determine revision and branch"
return -1
branch = branch_match.group(1)
revision = revision_match.group(1)
if skip_on_branch_re and skip_on_branch_re.match(branch):
print "Release Candidate Build, leaving version files untouched."
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