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