Mercurial > hg
comparison setup.py @ 28398:712298942c82
setup: remove support for 2to3
We want to run unaltered source on multiple Python versions. We
won't be using 2to3 for Python 3 support.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 27 Feb 2016 21:11:24 -0800 |
parents | 8da94662afe5 |
children | 121d25719e92 |
comparison
equal
deleted
inserted
replaced
28397:98a1a9547bb1 | 28398:712298942c82 |
---|---|
81 DistutilsError, | 81 DistutilsError, |
82 DistutilsExecError, | 82 DistutilsExecError, |
83 ) | 83 ) |
84 from distutils.sysconfig import get_python_inc, get_config_var | 84 from distutils.sysconfig import get_python_inc, get_config_var |
85 from distutils.version import StrictVersion | 85 from distutils.version import StrictVersion |
86 | |
87 convert2to3 = '--c2to3' in sys.argv | |
88 if convert2to3: | |
89 try: | |
90 from distutils.command.build_py import build_py_2to3 as build_py | |
91 from lib2to3.refactor import get_fixers_from_package as getfixers | |
92 except ImportError: | |
93 if sys.version_info[0] < 3: | |
94 raise SystemExit("--c2to3 is only compatible with python3.") | |
95 raise | |
96 sys.path.append('contrib') | |
97 elif sys.version_info[0] >= 3: | |
98 raise SystemExit("setup.py with python3 needs --c2to3 (experimental)") | |
99 | 86 |
100 scripts = ['hg'] | 87 scripts = ['hg'] |
101 if os.name == 'nt': | 88 if os.name == 'nt': |
102 # We remove hg.bat if we are able to build hg.exe. | 89 # We remove hg.bat if we are able to build hg.exe. |
103 scripts.append('contrib/win32/hg.bat') | 90 scripts.append('contrib/win32/hg.bat') |
233 version = 'unknown' | 220 version = 'unknown' |
234 | 221 |
235 class hgbuild(build): | 222 class hgbuild(build): |
236 # Insert hgbuildmo first so that files in mercurial/locale/ are found | 223 # Insert hgbuildmo first so that files in mercurial/locale/ are found |
237 # when build_py is run next. | 224 # when build_py is run next. |
238 sub_commands = [('build_mo', None), | 225 sub_commands = [('build_mo', None)] + build.sub_commands |
239 | |
240 # We also need build_ext before build_py. Otherwise, when 2to3 is | |
241 # called (in build_py), it will not find osutil & friends, | |
242 # thinking that those modules are global and, consequently, making | |
243 # a mess, now that all module imports are global. | |
244 | |
245 ('build_ext', build.has_ext_modules), | |
246 ] + build.sub_commands | |
247 | 226 |
248 class hgbuildmo(build): | 227 class hgbuildmo(build): |
249 | 228 |
250 description = "build translations (.mo files)" | 229 description = "build translations (.mo files)" |
251 | 230 |
280 pure = ispypy | 259 pure = ispypy |
281 | 260 |
282 global_options = Distribution.global_options + \ | 261 global_options = Distribution.global_options + \ |
283 [('pure', None, "use pure (slow) Python " | 262 [('pure', None, "use pure (slow) Python " |
284 "code instead of C extensions"), | 263 "code instead of C extensions"), |
285 ('c2to3', None, "(experimental!) convert " | |
286 "code with 2to3"), | |
287 ] | 264 ] |
288 | 265 |
289 def has_ext_modules(self): | 266 def has_ext_modules(self): |
290 # self.ext_modules is emptied in hgbuildpy.finalize_options which is | 267 # self.ext_modules is emptied in hgbuildpy.finalize_options which is |
291 # too late for some cases | 268 # too late for some cases |
326 self.scripts.remove('contrib/win32/hg.bat') | 303 self.scripts.remove('contrib/win32/hg.bat') |
327 | 304 |
328 return build_scripts.run(self) | 305 return build_scripts.run(self) |
329 | 306 |
330 class hgbuildpy(build_py): | 307 class hgbuildpy(build_py): |
331 if convert2to3: | |
332 fixer_names = sorted(set(getfixers("lib2to3.fixes") + | |
333 getfixers("hgfixes"))) | |
334 | |
335 def finalize_options(self): | 308 def finalize_options(self): |
336 build_py.finalize_options(self) | 309 build_py.finalize_options(self) |
337 | 310 |
338 if self.distribution.pure: | 311 if self.distribution.pure: |
339 self.distribution.ext_modules = [] | 312 self.distribution.ext_modules = [] |