Mercurial > hg
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')) |