diff options
| -rw-r--r-- | indra/lib/python/indra/util/llversion.py | 57 | ||||
| -rwxr-xr-x | scripts/update_version_files.py | 22 | 
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()) | 
