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