comparison setup.py @ 7958:73fa2be69ea9

Fix how setup.py identifies the Mercurial version. There is a problem with setup.py where it will not identify the Mercurial version properly when not being ran in within a repository even if mercurial/__version__.py exists. To fix, use mercurial.__version__.version when available before defaulting to "unknown". (Using mercurial.util.version() is not an option due to a dependency issue where osutil can be referenced before it is built.)
author Jeremy Whitlock <jcscoobyrs@gmail.com>
date Thu, 02 Apr 2009 18:18:43 -0600
parents 9d36291f787a
children d6134b800797
comparison
equal deleted inserted replaced
7957:88a2687fbd38 7958:73fa2be69ea9
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'))