summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMerov Linden <merov@lindenlab.com>2011-02-11 16:56:28 -0800
committerMerov Linden <merov@lindenlab.com>2011-02-11 16:56:28 -0800
commit10cf492ef1730e869389b704345a6604ed363427 (patch)
tree01ad1b0ca4a6d7535c85e0789ffbb112fc5b2e19
parent896bc12a2b9564a770e3eef584c9ec234f39bb3b (diff)
STORM-937 : Use subprocess instead os commands in python, suppress crufty svn code
-rw-r--r--indra/lib/python/indra/util/llversion.py57
-rwxr-xr-xscripts/update_version_files.py22
2 files changed, 25 insertions, 54 deletions
diff --git a/indra/lib/python/indra/util/llversion.py b/indra/lib/python/indra/util/llversion.py
index 2718a85f41..ba6f567b60 100644
--- a/indra/lib/python/indra/util/llversion.py
+++ b/indra/lib/python/indra/util/llversion.py
@@ -1,7 +1,9 @@
-"""@file llversion.py
-@brief Utility for parsing llcommon/llversion${server}.h
- for the version string and channel string
- Utility that parses hg or svn info for branch and revision
+#!/usr/bin/env python
+"""\
+@file llversion.py
+@brief Parses llcommon/llversionserver.h and llcommon/llversionviewer.h
+ for the version string and channel string.
+ Parses hg info for branch and revision.
$LicenseInfo:firstyear=2006&license=mit$
@@ -27,7 +29,7 @@ THE SOFTWARE.
$/LicenseInfo$
"""
-import re, sys, os, commands
+import re, sys, os, subprocess
# Methods for gathering version information from
# llversionviewer.h and llversionserver.h
@@ -73,29 +75,13 @@ def get_viewer_channel():
def get_server_channel():
return get_channel('server')
-# Methods for gathering subversion information
-def get_svn_status_matching(regular_expression):
- # Get the subversion info from the working source tree
- status, output = commands.getstatusoutput('svn info %s' % get_src_root())
- m = regular_expression.search(output)
- if not m:
- 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)
-
-def get_svn_branch():
- branch_re = re.compile('URL: (\S+)')
- return get_svn_status_matching(branch_re)
-
-def get_svn_revision():
- last_rev_re = re.compile('Last Changed Rev: (\d+)')
- return get_svn_status_matching(last_rev_re)
-
+# Methods for gathering hg information
def get_hg_repo():
- status, output = commands.getstatusoutput('hg showconfig paths.default')
+ child = subprocess.Popen(["hg","showconfig","paths.default"], stdout=subprocess.PIPE)
+ output, error = child.communicate()
+ status = child.returncode
if status:
- print >> sys.stderr, output
+ print >> sys.stderr, error
sys.exit(1)
if not output:
print >> sys.stderr, 'ERROR: cannot find repo we cloned from'
@@ -103,24 +89,19 @@ def get_hg_repo():
return output
def get_hg_changeset():
- # The right thing to do:
- # status, output = commands.getstatusoutput('hg id -i')
- # if status:
- # print >> sys.stderr, output
- # sys.exit(1)
-
- # The temporary hack:
- status, output = commands.getstatusoutput('hg parents --template "{rev}"')
+ # The right thing to do would be to use the *global* revision id:
+ # "hg id -i"
+ # For the moment though, we use the parent revision:
+ child = subprocess.Popen(["hg","parents","--template","{rev}"], stdout=subprocess.PIPE)
+ output, error = child.communicate()
+ status = child.returncode
if status:
- print >> sys.stderr, output
+ print >> sys.stderr, error
sys.exit(1)
lines = output.splitlines()
if len(lines) > 1:
print >> sys.stderr, 'ERROR: working directory has %d parents' % len(lines)
return lines[0]
-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 c2fa8a8d31..87036dc1c0 100755
--- a/scripts/update_version_files.py
+++ b/scripts/update_version_files.py
@@ -59,9 +59,6 @@ add_indra_lib_path()
import getopt, os, re, commands
from indra.util import llversion
-svn = os.path.expandvars("${SVN}")
-if not svn or svn == "${SVN}": svn = "svn"
-
def usage():
print "Usage:"
print sys.argv[0] + """ [options]
@@ -90,7 +87,7 @@ Options:
Print this message and exit.
Common Uses:
- # Update server and viewer build numbers to the current SVN revision:
+ # Update server and viewer build numbers to the current hg revision:
update_version_files.py
# Update build numbers unless we are on a release branch:
@@ -102,7 +99,7 @@ Common Uses:
# Update just the viewer version number explicitly:
update_version_files.py --viewer --version=1.18.1.6
- # Update just the server build number to the current SVN revision:
+ # Update just the server build number to the current hg revision:
update_version_files.py --server
# Update the viewer channel
@@ -174,9 +171,7 @@ re_map['indra/newview/English.lproj/InfoPlist.strings'] = \
'CFBundleGetInfoString = "Second Life version %(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s'))
-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)
+version_re = re.compile('(\d+).(\d+).(\d+).(\d+)')
def main():
script_path = os.path.dirname(__file__)
@@ -271,13 +266,7 @@ def main():
server_version = new_version
else:
- if llversion.using_svn():
- if new_revision:
- revision = new_revision
- else:
- revision = llversion.get_svn_revision()
- branch = llversion.get_svn_branch()
- elif llversion.using_hg():
+ if llversion.using_hg():
if new_revision:
revision = new_revision
else:
@@ -349,5 +338,6 @@ def main():
print "File %(filename)s not present, skipping..." % locals()
return 0
-main()
+if __name__ == '__main__':
+ sys.exit(main())