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