# HG changeset patch # User Matt Mackall # Date 1236352547 21600 # Node ID f0a7accf1d68bde04884ea04de72cab01980042b # Parent 6542be5df71969ab4b2942539bfb86d3cca07f17 setup.py: fix version detection for tarball - don't do version detection if there's no .hg directory - shrink try: clause - don't write __version__.py if version is unknown (we might overwrite the real version) diff -r 6542be5df719 -r f0a7accf1d68 setup.py --- a/setup.py Wed Mar 04 19:04:21 2009 -0600 +++ b/setup.py Fri Mar 06 09:15:47 2009 -0600 @@ -97,7 +97,10 @@ except ImportError: pass -try: +def getversion(): + if not os.path.exists('.hg'): + return None # not in a repository + # execute hg out of this directory with a custom environment which # includes the pure Python modules in mercurial/pure pypath = os.environ.get('PYTHONPATH', '') @@ -105,23 +108,31 @@ os.environ['PYTHONPATH'] = os.pathsep.join(['mercurial', purepath, pypath]) os.environ['HGRCPATH'] = '' # do not read any config file cmd = '%s hg id -it' % sys.executable - l = os.popen(cmd).read().split() + + try: + l = os.popen(cmd).read().split() + except OSError, e: + print "warning: could not establish Mercurial version: %s" % e + os.environ['PYTHONPATH'] = pypath + while len(l) > 1 and l[-1][0].isalpha(): # remove non-numbered tags l.pop() - version = l and l[-1] or 'unknown' # latest tag or revision number - if version.endswith('+'): - version += time.strftime('%Y%m%d') + if l: + version = l[-1] # latest tag or revision number + if version.endswith('+'): + version += time.strftime('%Y%m%d') + return version -except OSError, e: - print "warning: could not establish Mercurial version: %s" % e +version = getversion() +if version: + f = file("mercurial/__version__.py", "w") + f.write('# this file is autogenerated by setup.py\n') + f.write('version = "%s"\n' % version) + f.close() +else: version = "unknown" -f = file("mercurial/__version__.py", "w") -f.write('# this file is autogenerated by setup.py\n') -f.write('version = "%s"\n' % version) -f.close() - class install_package_data(install_data): def finalize_options(self): self.set_undefined_options('install',