comparison setup.py @ 43437:93f74a7d3f07

merge with stable
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 05 Nov 2019 13:19:24 -0800
parents c3e10f705a6c
children 2e017696181f
comparison
equal deleted inserted replaced
43436:bfc68404cccd 43437:93f74a7d3f07
4 # 'python setup.py install', or 4 # 'python setup.py install', or
5 # 'python setup.py --help' for more options 5 # 'python setup.py --help' for more options
6 6
7 import os 7 import os
8 8
9 supportedpy = '~= 2.7' 9 # Mercurial will never work on Python 3 before 3.5 due to a lack
10 if os.environ.get('HGALLOWPYTHON3', ''): 10 # of % formatting on bytestrings, and can't work on 3.6.0 or 3.6.1
11 # Mercurial will never work on Python 3 before 3.5 due to a lack 11 # due to a bug in % formatting in bytestrings.
12 # of % formatting on bytestrings, and can't work on 3.6.0 or 3.6.1 12 # We cannot support Python 3.5.0, 3.5.1, 3.5.2 because of bug in
13 # due to a bug in % formatting in bytestrings. 13 # codecs.escape_encode() where it raises SystemError on empty bytestring
14 # We cannot support Python 3.5.0, 3.5.1, 3.5.2 because of bug in 14 # bug link: https://bugs.python.org/issue25270
15 # codecs.escape_encode() where it raises SystemError on empty bytestring 15 supportedpy = ','.join(
16 # bug link: https://bugs.python.org/issue25270 16 [
17 # 17 '>=2.7',
18 # TODO: when we actually work on Python 3, use this string as the 18 '!=3.0.*',
19 # actual supportedpy string. 19 '!=3.1.*',
20 supportedpy = ','.join( 20 '!=3.2.*',
21 [ 21 '!=3.3.*',
22 '>=2.7', 22 '!=3.4.*',
23 '!=3.0.*', 23 '!=3.5.0',
24 '!=3.1.*', 24 '!=3.5.1',
25 '!=3.2.*', 25 '!=3.5.2',
26 '!=3.3.*', 26 '!=3.6.0',
27 '!=3.4.*', 27 '!=3.6.1',
28 '!=3.5.0', 28 ]
29 '!=3.5.1', 29 )
30 '!=3.5.2',
31 '!=3.6.0',
32 '!=3.6.1',
33 ]
34 )
35 30
36 import sys, platform 31 import sys, platform
37 import sysconfig 32 import sysconfig
38 33
39 if sys.version_info[0] >= 3: 34 if sys.version_info[0] >= 3:
86 """.format( 81 """.format(
87 py=sys.version_info, pip=pip_message 82 py=sys.version_info, pip=pip_message
88 ) 83 )
89 printf(error, file=sys.stderr) 84 printf(error, file=sys.stderr)
90 sys.exit(1) 85 sys.exit(1)
91
92 # We don't yet officially support Python 3. But we want to allow developers to
93 # hack on. Detect and disallow running on Python 3 by default. But provide a
94 # backdoor to enable working on Python 3.
95 if sys.version_info[0] != 2:
96 badpython = True
97
98 # Allow Python 3 from source checkouts.
99 if os.path.isdir('.hg') or 'HGPYTHON3' in os.environ:
100 badpython = False
101
102 if badpython:
103 error = """
104 Python {py} detected.
105
106 Mercurial currently has beta support for Python 3 and use of Python 2.7 is
107 recommended for the best experience.
108
109 Please re-run with Python 2.7 for a faster, less buggy experience.
110
111 If you would like to beta test Mercurial with Python 3, this error can
112 be suppressed by defining the HGPYTHON3 environment variable when invoking
113 this command. No special environment variables or configuration changes are
114 necessary to run `hg` with Python 3.
115
116 See https://www.mercurial-scm.org/wiki/Python3 for more on Mercurial's
117 Python 3 support.
118 """.format(
119 py='.'.join('%d' % x for x in sys.version_info[0:2])
120 )
121
122 printf(error, file=sys.stderr)
123 sys.exit(1)
124 86
125 if sys.version_info[0] >= 3: 87 if sys.version_info[0] >= 3:
126 DYLIB_SUFFIX = sysconfig.get_config_vars()['EXT_SUFFIX'] 88 DYLIB_SUFFIX = sysconfig.get_config_vars()['EXT_SUFFIX']
127 else: 89 else:
128 # deprecated in Python 3 90 # deprecated in Python 3