Patch in some other useful scripts from trunk.

meow-7.2.2
Bryan O'Sullivan 2009-09-01 11:18:33 -07:00
parent d508beb044
commit 5f3a7fa6f3
2 changed files with 33 additions and 32 deletions

View File

@ -1,7 +1,7 @@
"""@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'))

View File

@ -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