setup.py
changeset 8493 4c030ada58d2
parent 7826 f0a7accf1d68
child 8494 97184c58d0b8
equal deleted inserted replaced
8426:2ff17c4de1da 8493:4c030ada58d2
    95     extra['console'] = ['hg']
    95     extra['console'] = ['hg']
    96 
    96 
    97 except ImportError:
    97 except ImportError:
    98     pass
    98     pass
    99 
    99 
   100 def getversion():
   100 if os.path.exists('.hg'):
   101     if not os.path.exists('.hg'):
       
   102         return None # not in a repository
       
   103 
       
   104     # execute hg out of this directory with a custom environment which
   101     # execute hg out of this directory with a custom environment which
   105     # includes the pure Python modules in mercurial/pure
   102     # includes the pure Python modules in mercurial/pure
   106     pypath = os.environ.get('PYTHONPATH', '')
   103     pypath = os.environ.get('PYTHONPATH', '')
   107     purepath = os.path.join('mercurial', 'pure')
   104     purepath = os.path.join('mercurial', 'pure')
   108     os.environ['PYTHONPATH'] = os.pathsep.join(['mercurial', purepath, pypath])
   105     os.environ['PYTHONPATH'] = os.pathsep.join(['mercurial', purepath, pypath])
   109     os.environ['HGRCPATH'] = '' # do not read any config file
   106     os.environ['HGRCPATH'] = '' # do not read any config file
   110     cmd = '%s hg id -it' % sys.executable
   107     cmd = '%s hg id -it' % sys.executable
       
   108     version = None
   111 
   109 
   112     try:
   110     try:
   113         l = os.popen(cmd).read().split()
   111         l = os.popen(cmd).read().split()
   114     except OSError, e:
   112     except OSError, e:
   115         print "warning: could not establish Mercurial version: %s" % e
   113         print "warning: could not establish Mercurial version: %s" % e
   120         l.pop()
   118         l.pop()
   121     if l:
   119     if l:
   122         version = l[-1] # latest tag or revision number
   120         version = l[-1] # latest tag or revision number
   123         if version.endswith('+'):
   121         if version.endswith('+'):
   124             version += time.strftime('%Y%m%d')
   122             version += time.strftime('%Y%m%d')
   125         return version
   123 
   126 
   124     if version:
   127 version = getversion()
   125         f = file("mercurial/__version__.py", "w")
   128 if version:
   126         f.write('# this file is autogenerated by setup.py\n')
   129     f = file("mercurial/__version__.py", "w")
   127         f.write('version = "%s"\n' % version)
   130     f.write('# this file is autogenerated by setup.py\n')
   128         f.close()
   131     f.write('version = "%s"\n' % version)
   129 
   132     f.close()
   130 try:
   133 else:
   131     from mercurial import __version__
   134     version = "unknown"
   132     version = __version__.version
       
   133 except ImportError:
       
   134     version = 'unknown'
   135 
   135 
   136 class install_package_data(install_data):
   136 class install_package_data(install_data):
   137     def finalize_options(self):
   137     def finalize_options(self):
   138         self.set_undefined_options('install',
   138         self.set_undefined_options('install',
   139                                    ('install_lib', 'install_dir'))
   139                                    ('install_lib', 'install_dir'))