summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan O'Sullivan <bos@lindenlab.com>2009-09-01 11:18:33 -0700
committerBryan O'Sullivan <bos@lindenlab.com>2009-09-01 11:18:33 -0700
commit5f3a7fa6f3ba45d875ec437c5df9e712f3c6b5a2 (patch)
tree5cb49ddb7ec2c7beada8432cc06a65c862b802c6
parentd508beb044c8078e1466edb1337458139b1cac10 (diff)
Patch in some other useful scripts from trunk.
-rw-r--r--indra/lib/python/indra/util/llversion.py29
-rwxr-xr-xscripts/update_version_files.py38
2 files changed, 34 insertions, 33 deletions
diff --git a/indra/lib/python/indra/util/llversion.py b/indra/lib/python/indra/util/llversion.py
index 770b861ddc..c48ab679f4 100644
--- a/indra/lib/python/indra/util/llversion.py
+++ b/indra/lib/python/indra/util/llversion.py
@@ -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'))
diff --git a/scripts/update_version_files.py b/scripts/update_version_files.py
index 977b66253a..ee1ce69a15 100755
--- a/scripts/update_version_files.py
+++ b/scripts/update_version_files.py
@@ -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