Mercurial > hg
annotate setup.py @ 46266:e8b0c519dfb3
test: split tests/test-merge-combination.t into multiple parts
That test is quite slow, lets split it in smaller bits.
Differential Revision: https://phab.mercurial-scm.org/D9768
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 14 Jan 2021 11:46:30 +0100 |
parents | 63c923fd7fa8 |
children | 2ef575c62f10 |
rev | line source |
---|---|
575 | 1 # |
2 # This is the mercurial setup script. | |
0
9117c6561b0b
Add back links from file revisions to changeset revisions
mpm@selenic.com
parents:
diff
changeset
|
3 # |
4816
c10d3bc05a8d
setup.py not executable: change instructions at beginning of file
Christian Ebert <blacktrash@gmx.net>
parents:
4628
diff
changeset
|
4 # 'python setup.py install', or |
c10d3bc05a8d
setup.py not executable: change instructions at beginning of file
Christian Ebert <blacktrash@gmx.net>
parents:
4628
diff
changeset
|
5 # 'python setup.py --help' for more options |
33591
ee11d18fcd3c
setup: fix mistake that prevented Python 3 from being excluded
Augie Fackler <augie@google.com>
parents:
33589
diff
changeset
|
6 import os |
ee11d18fcd3c
setup: fix mistake that prevented Python 3 from being excluded
Augie Fackler <augie@google.com>
parents:
33589
diff
changeset
|
7 |
43349
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
8 # Mercurial will never work on Python 3 before 3.5 due to a lack |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
9 # of % formatting on bytestrings, and can't work on 3.6.0 or 3.6.1 |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
10 # due to a bug in % formatting in bytestrings. |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
11 # We cannot support Python 3.5.0, 3.5.1, 3.5.2 because of bug in |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
12 # codecs.escape_encode() where it raises SystemError on empty bytestring |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
13 # bug link: https://bugs.python.org/issue25270 |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
14 supportedpy = ','.join( |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
15 [ |
44830
91e509a12dbc
setup: raise minimum Python version to 2.7.4
Manuel Jacob <me@manueljacob.de>
parents:
44742
diff
changeset
|
16 '>=2.7.4', |
43349
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
17 '!=3.0.*', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
18 '!=3.1.*', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
19 '!=3.2.*', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
20 '!=3.3.*', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
21 '!=3.4.*', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
22 '!=3.5.0', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
23 '!=3.5.1', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
24 '!=3.5.2', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
25 '!=3.6.0', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
26 '!=3.6.1', |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
27 ] |
c3e10f705a6c
setup: allow py3 install without env vars
Ian Moody <moz-ian@perix.co.uk>
parents:
43076
diff
changeset
|
28 ) |
33587
e0bbe32d8b55
setup: explicitly declare supported Python versions
Augie Fackler <augie@google.com>
parents:
33119
diff
changeset
|
29 |
14295
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
30 import sys, platform |
42457
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
31 import sysconfig |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
32 |
11532
f3732ab1149f
setup.py: Adjustments to make setup.py run in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11468
diff
changeset
|
33 if sys.version_info[0] >= 3: |
20696
77ab0abb08a0
setup: handle more invalid python3 syntax
Augie Fackler <raf@durin42.com>
parents:
20687
diff
changeset
|
34 printf = eval('print') |
77ab0abb08a0
setup: handle more invalid python3 syntax
Augie Fackler <raf@durin42.com>
parents:
20687
diff
changeset
|
35 libdir_escape = 'unicode_escape' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
36 |
35246
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35229
diff
changeset
|
37 def sysstr(s): |
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35229
diff
changeset
|
38 return s.decode('latin-1') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
39 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
40 |
11532
f3732ab1149f
setup.py: Adjustments to make setup.py run in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11468
diff
changeset
|
41 else: |
20696
77ab0abb08a0
setup: handle more invalid python3 syntax
Augie Fackler <raf@durin42.com>
parents:
20687
diff
changeset
|
42 libdir_escape = 'string_escape' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
43 |
20696
77ab0abb08a0
setup: handle more invalid python3 syntax
Augie Fackler <raf@durin42.com>
parents:
20687
diff
changeset
|
44 def printf(*args, **kwargs): |
77ab0abb08a0
setup: handle more invalid python3 syntax
Augie Fackler <raf@durin42.com>
parents:
20687
diff
changeset
|
45 f = kwargs.get('file', sys.stdout) |
77ab0abb08a0
setup: handle more invalid python3 syntax
Augie Fackler <raf@durin42.com>
parents:
20687
diff
changeset
|
46 end = kwargs.get('end', '\n') |
27348
83a8219fb790
setup.py: use bytes literals
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27269
diff
changeset
|
47 f.write(b' '.join(args) + end) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
48 |
35246
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35229
diff
changeset
|
49 def sysstr(s): |
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35229
diff
changeset
|
50 return s |
11532
f3732ab1149f
setup.py: Adjustments to make setup.py run in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11468
diff
changeset
|
51 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
52 |
33588
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
53 # Attempt to guide users to a modern pip - this means that 2.6 users |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
54 # should have a chance of getting a 4.2 release, and when we ratchet |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
55 # the version requirement forward again hopefully everyone will get |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
56 # something that works for them. |
44830
91e509a12dbc
setup: raise minimum Python version to 2.7.4
Manuel Jacob <me@manueljacob.de>
parents:
44742
diff
changeset
|
57 if sys.version_info < (2, 7, 4, 'final'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
58 pip_message = ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
59 'This may be due to an out of date pip. ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
60 'Make sure you have pip >= 9.0.1.' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
61 ) |
33588
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
62 try: |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
63 import pip |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
64 |
33588
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
65 pip_version = tuple([int(x) for x in pip.__version__.split('.')[:3]]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
66 if pip_version < (9, 0, 1): |
33588
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
67 pip_message = ( |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
68 'Your pip version is out of date, please install ' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
69 'pip >= 9.0.1. pip {} detected.'.format(pip.__version__) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
70 ) |
33588
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
71 else: |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
72 # pip is new enough - it must be something else |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
73 pip_message = '' |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
74 except Exception: |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
75 pass |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
76 error = """ |
44830
91e509a12dbc
setup: raise minimum Python version to 2.7.4
Manuel Jacob <me@manueljacob.de>
parents:
44742
diff
changeset
|
77 Mercurial does not support Python older than 2.7.4. |
33588
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
78 Python {py} detected. |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
79 {pip} |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
80 """.format( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
81 py=sys.version_info, pip=pip_message |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
82 ) |
33588
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
83 printf(error, file=sys.stderr) |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
84 sys.exit(1) |
025017423e53
setup: add extra logic to try and recommend a new pip on bad Python
Augie Fackler <augie@google.com>
parents:
33587
diff
changeset
|
85 |
44874
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
86 import ssl |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
87 |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
88 try: |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
89 ssl.SSLContext |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
90 except AttributeError: |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
91 error = """ |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
92 The `ssl` module does not have the `SSLContext` class. This indicates an old |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
93 Python version which does not support modern security features (which were |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
94 added to Python 2.7 as part of "PEP 466"). Please make sure you have installed |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
95 at least Python 2.7.9 or a Python version with backports of these security |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
96 features. |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
97 """ |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
98 printf(error, file=sys.stderr) |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
99 sys.exit(1) |
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44852
diff
changeset
|
100 |
44893
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
101 # ssl.HAS_TLSv1* are preferred to check support but they were added in Python |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
102 # 3.7. Prior to CPython commit 6e8cda91d92da72800d891b2fc2073ecbc134d98 |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
103 # (backported to the 3.7 branch), ssl.PROTOCOL_TLSv1_1 / ssl.PROTOCOL_TLSv1_2 |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
104 # were defined only if compiled against a OpenSSL version with TLS 1.1 / 1.2 |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
105 # support. At the mentioned commit, they were unconditionally defined. |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
106 _notset = object() |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
107 has_tlsv1_1 = getattr(ssl, 'HAS_TLSv1_1', _notset) |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
108 if has_tlsv1_1 is _notset: |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
109 has_tlsv1_1 = getattr(ssl, 'PROTOCOL_TLSv1_1', _notset) is not _notset |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
110 has_tlsv1_2 = getattr(ssl, 'HAS_TLSv1_2', _notset) |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
111 if has_tlsv1_2 is _notset: |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
112 has_tlsv1_2 = getattr(ssl, 'PROTOCOL_TLSv1_2', _notset) is not _notset |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
113 if not (has_tlsv1_1 or has_tlsv1_2): |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
114 error = """ |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
115 The `ssl` module does not advertise support for TLS 1.1 or TLS 1.2. |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
116 Please make sure that your Python installation was compiled against an OpenSSL |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
117 version enabling these features (likely this requires the OpenSSL version to |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
118 be at least 1.0.1). |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
119 """ |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
120 printf(error, file=sys.stderr) |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
121 sys.exit(1) |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44874
diff
changeset
|
122 |
42457
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
123 if sys.version_info[0] >= 3: |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
124 DYLIB_SUFFIX = sysconfig.get_config_vars()['EXT_SUFFIX'] |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
125 else: |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
126 # deprecated in Python 3 |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
127 DYLIB_SUFFIX = sysconfig.get_config_vars()['SO'] |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
128 |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
129 # Solaris Python packaging brain damage |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
130 try: |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
131 import hashlib |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
132 |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
133 sha = hashlib.sha1() |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
134 except ImportError: |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
135 try: |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
136 import sha |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
137 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
138 sha.sha # silence unused import warning |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
139 except ImportError: |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
140 raise SystemExit( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
141 "Couldn't import standard hashlib (incomplete Python install)." |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
142 ) |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
143 |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
144 try: |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
145 import zlib |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
146 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
147 zlib.compressobj # silence unused import warning |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
148 except ImportError: |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
149 raise SystemExit( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
150 "Couldn't import standard zlib (incomplete Python install)." |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
151 ) |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
152 |
14295
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
153 # The base IronPython distribution (as of 2.7.1) doesn't support bz2 |
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
154 isironpython = False |
10761
16a13fdb4b36
setup: fail if bz2 is not available
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10521
diff
changeset
|
155 try: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
156 isironpython = ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
157 platform.python_implementation().lower().find("ironpython") != -1 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
158 ) |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
159 except AttributeError: |
14295
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
160 pass |
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
161 |
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
162 if isironpython: |
15492
36f076d03b34
setup: make script executable with python3
Simon Heimberg <simohe@besonet.ch>
parents:
15460
diff
changeset
|
163 sys.stderr.write("warning: IronPython detected (no bz2 support)\n") |
14295
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
164 else: |
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
165 try: |
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
166 import bz2 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
167 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
168 bz2.BZ2Compressor # silence unused import warning |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
169 except ImportError: |
14295
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
170 raise SystemExit( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
171 "Couldn't import standard bz2 (incomplete Python install)." |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
172 ) |
10761
16a13fdb4b36
setup: fail if bz2 is not available
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10521
diff
changeset
|
173 |
24192
390410a6545d
setup.py: do not install c extensions on pypy
Joan Massich <mailsik@gmail.com>
parents:
24191
diff
changeset
|
174 ispypy = "PyPy" in sys.version |
390410a6545d
setup.py: do not install c extensions on pypy
Joan Massich <mailsik@gmail.com>
parents:
24191
diff
changeset
|
175 |
29020
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
176 import ctypes |
40966
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
177 import errno |
33591
ee11d18fcd3c
setup: fix mistake that prevented Python 3 from being excluded
Augie Fackler <augie@google.com>
parents:
33589
diff
changeset
|
178 import stat, subprocess, time |
21038
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
179 import re |
6251
87053f0b0fad
setup.py: use a simplified custom version of CCompiler.has_function
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6245
diff
changeset
|
180 import shutil |
87053f0b0fad
setup.py: use a simplified custom version of CCompiler.has_function
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6245
diff
changeset
|
181 import tempfile |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
182 |
31289
718a57e95a89
setup: use setuptools on Windows (issue5400)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30907
diff
changeset
|
183 # We have issues with setuptools on some platforms and builders. Until |
718a57e95a89
setup: use setuptools on Windows (issue5400)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30907
diff
changeset
|
184 # those are resolved, setuptools is opt-in except for platforms where |
718a57e95a89
setup: use setuptools on Windows (issue5400)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30907
diff
changeset
|
185 # we don't have issues. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
186 issetuptools = os.name == 'nt' or 'FORCE_SETUPTOOLS' in os.environ |
33600
47829b89c8c6
setup: silence warning of unknown option python_requires on distutils
Yuya Nishihara <yuya@tcha.org>
parents:
33599
diff
changeset
|
187 if issetuptools: |
26600
e8497889edab
setup: import setup from setuptools if FORCE_SETUPTOOLS is set
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents:
26421
diff
changeset
|
188 from setuptools import setup |
e8497889edab
setup: import setup from setuptools if FORCE_SETUPTOOLS is set
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents:
26421
diff
changeset
|
189 else: |
e8497889edab
setup: import setup from setuptools if FORCE_SETUPTOOLS is set
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents:
26421
diff
changeset
|
190 from distutils.core import setup |
30408
ce9a3033c118
setup: test setproctitle before building osutil
Jun Wu <quark@fb.com>
parents:
30346
diff
changeset
|
191 from distutils.ccompiler import new_compiler |
26600
e8497889edab
setup: import setup from setuptools if FORCE_SETUPTOOLS is set
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents:
26421
diff
changeset
|
192 from distutils.core import Command, Extension |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
193 from distutils.dist import Distribution |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
194 from distutils.command.build import build |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
195 from distutils.command.build_ext import build_ext |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
196 from distutils.command.build_py import build_py |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
197 from distutils.command.build_scripts import build_scripts |
32647
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32506
diff
changeset
|
198 from distutils.command.install import install |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
199 from distutils.command.install_data import install_data |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
200 from distutils.command.install_lib import install_lib |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
201 from distutils.command.install_scripts import install_scripts |
46233
172b294b6d65
setup: don't import distutils prior to checking FORCE_SETUPTOOLS
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46136
diff
changeset
|
202 from distutils import log |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
203 from distutils.spawn import spawn, find_executable |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
204 from distutils import file_util |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
205 from distutils.errors import ( |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
206 CCompilerError, |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
207 DistutilsError, |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
208 DistutilsExecError, |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
209 ) |
21038
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
210 from distutils.sysconfig import get_python_inc, get_config_var |
13594
64a458707fd4
setup.py: use StrictVersion instead of manual comparison
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
13583
diff
changeset
|
211 from distutils.version import StrictVersion |
157
2653740d8118
Install the templates where they can be found by hgweb.py
mpm@selenic.com
parents:
155
diff
changeset
|
212 |
40446
b6bc2293cdf3
setup: explain to distutils how we write rc versions
"Paul Morelle <paul.morelle@octobus.net"
parents:
40397
diff
changeset
|
213 # Explain to distutils.StrictVersion how our release candidates are versionned |
b6bc2293cdf3
setup: explain to distutils how we write rc versions
"Paul Morelle <paul.morelle@octobus.net"
parents:
40397
diff
changeset
|
214 StrictVersion.version_re = re.compile(r'^(\d+)\.(\d+)(\.(\d+))?-?(rc(\d+))?$') |
b6bc2293cdf3
setup: explain to distutils how we write rc versions
"Paul Morelle <paul.morelle@octobus.net"
parents:
40397
diff
changeset
|
215 |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
216 # Can we build the documentation? |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
217 try: |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
218 import docutils |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
219 except ImportError: |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
220 docutils = None |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
221 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
222 |
35229
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
223 def write_if_changed(path, content): |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
224 """Write content to a file iff the content hasn't changed.""" |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
225 if os.path.exists(path): |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
226 with open(path, 'rb') as fh: |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
227 current = fh.read() |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
228 else: |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
229 current = b'' |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
230 |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
231 if current != content: |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
232 with open(path, 'wb') as fh: |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
233 fh.write(content) |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
234 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
235 |
6513
66e87c11447d
Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
6389
diff
changeset
|
236 scripts = ['hg'] |
66e87c11447d
Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
6389
diff
changeset
|
237 if os.name == 'nt': |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
238 # We remove hg.bat if we are able to build hg.exe. |
6513
66e87c11447d
Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
6389
diff
changeset
|
239 scripts.append('contrib/win32/hg.bat') |
3893 | 240 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
241 |
31559
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
242 def cancompile(cc, code): |
6251
87053f0b0fad
setup.py: use a simplified custom version of CCompiler.has_function
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6245
diff
changeset
|
243 tmpdir = tempfile.mkdtemp(prefix='hg-install-') |
6373
7010e4557963
setup.py: hide compiler error messages while searching for inotify
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6251
diff
changeset
|
244 devnull = oldstderr = None |
6251
87053f0b0fad
setup.py: use a simplified custom version of CCompiler.has_function
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6245
diff
changeset
|
245 try: |
31559
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
246 fname = os.path.join(tmpdir, 'testcomp.c') |
25089
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
247 f = open(fname, 'w') |
31559
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
248 f.write(code) |
25089
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
249 f.close() |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
250 # Redirect stderr to /dev/null to hide any error messages |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
251 # from the compiler. |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
252 # This will have to be changed if we ever have to check |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
253 # for a function on Windows. |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
254 devnull = open('/dev/null', 'w') |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
255 oldstderr = os.dup(sys.stderr.fileno()) |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
256 os.dup2(devnull.fileno(), sys.stderr.fileno()) |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
257 objects = cc.compile([fname], output_dir=tmpdir) |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
258 cc.link_executable(objects, os.path.join(tmpdir, "a.out")) |
6251
87053f0b0fad
setup.py: use a simplified custom version of CCompiler.has_function
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6245
diff
changeset
|
259 return True |
25089
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
260 except Exception: |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
261 return False |
6251
87053f0b0fad
setup.py: use a simplified custom version of CCompiler.has_function
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6245
diff
changeset
|
262 finally: |
6373
7010e4557963
setup.py: hide compiler error messages while searching for inotify
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6251
diff
changeset
|
263 if oldstderr is not None: |
7010e4557963
setup.py: hide compiler error messages while searching for inotify
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6251
diff
changeset
|
264 os.dup2(oldstderr, sys.stderr.fileno()) |
7010e4557963
setup.py: hide compiler error messages while searching for inotify
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6251
diff
changeset
|
265 if devnull is not None: |
7010e4557963
setup.py: hide compiler error messages while searching for inotify
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6251
diff
changeset
|
266 devnull.close() |
6251
87053f0b0fad
setup.py: use a simplified custom version of CCompiler.has_function
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6245
diff
changeset
|
267 shutil.rmtree(tmpdir) |
87053f0b0fad
setup.py: use a simplified custom version of CCompiler.has_function
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6245
diff
changeset
|
268 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
269 |
31559
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
270 # simplified version of distutils.ccompiler.CCompiler.has_function |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
271 # that actually removes its temporary files. |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
272 def hasfunction(cc, funcname): |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
273 code = 'int main(void) { %s(); }\n' % funcname |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
274 return cancompile(cc, code) |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31316
diff
changeset
|
275 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
276 |
31560
5a0460219649
setup: add a function to test header files
Jun Wu <quark@fb.com>
parents:
31559
diff
changeset
|
277 def hasheader(cc, headername): |
5a0460219649
setup: add a function to test header files
Jun Wu <quark@fb.com>
parents:
31559
diff
changeset
|
278 code = '#include <%s>\nint main(void) { return 0; }\n' % headername |
5a0460219649
setup: add a function to test header files
Jun Wu <quark@fb.com>
parents:
31559
diff
changeset
|
279 return cancompile(cc, code) |
5a0460219649
setup: add a function to test header files
Jun Wu <quark@fb.com>
parents:
31559
diff
changeset
|
280 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
281 |
1283
f5faab34f32e
Support for the distutils extention 'py2exe' added.
Volker.Kleinfeld@gmx.de
parents:
575
diff
changeset
|
282 # py2exe needs to be installed to work |
f5faab34f32e
Support for the distutils extention 'py2exe' added.
Volker.Kleinfeld@gmx.de
parents:
575
diff
changeset
|
283 try: |
1294
372971e1c40d
Clean up whitespace damage.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1284
diff
changeset
|
284 import py2exe |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
285 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
286 py2exe.Distribution # silence unused import warning |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
287 py2exeloaded = True |
15527
9926aab3d0b5
setup: fix py2exe generation broken by c3a6ec304055 (issue3116)
Pascal Quantin <pascal.quantin@gmail.com>
parents:
15523
diff
changeset
|
288 # import py2exe's patched Distribution class |
9926aab3d0b5
setup: fix py2exe generation broken by c3a6ec304055 (issue3116)
Pascal Quantin <pascal.quantin@gmail.com>
parents:
15523
diff
changeset
|
289 from distutils.core import Distribution |
1284
59d07a6bd513
Fix Volker's modifications to setup.py for non-Windows systems.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1283
diff
changeset
|
290 except ImportError: |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
291 py2exeloaded = False |
1283
f5faab34f32e
Support for the distutils extention 'py2exe' added.
Volker.Kleinfeld@gmx.de
parents:
575
diff
changeset
|
292 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
293 |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
294 def runcmd(cmd, env, cwd=None): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
295 p = subprocess.Popen( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
296 cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env, cwd=cwd |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
297 ) |
32886
19b0fd4b5570
plan9: drop py26 hacks
Matt Harbison <matt_harbison@yahoo.com>
parents:
32782
diff
changeset
|
298 out, err = p.communicate() |
33111
87ee783f7299
setup: update runcmd() to also return the exit status
Adam Simpkins <simpkins@fb.com>
parents:
33110
diff
changeset
|
299 return p.returncode, out, err |
13636
4bfff063aed6
setup: fix mac build broken by e42d18538e1d
Jon M. Dugan <jdugan@x1024.net>
parents:
13594
diff
changeset
|
300 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
301 |
33113
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
302 class hgcommand(object): |
33114
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
303 def __init__(self, cmd, env): |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
304 self.cmd = cmd |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
305 self.env = env |
9615
f51d1822d6fd
setup: refactor the version string to a subset of tag+tagdist-hash+date
Gilles Moris <gilles.moris@free.fr>
parents:
9539
diff
changeset
|
306 |
33113
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
307 def run(self, args): |
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
308 cmd = self.cmd + args |
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
309 returncode, out, err = runcmd(cmd, self.env) |
33598
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
310 err = filterhgerr(err) |
33113
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
311 if err or returncode != 0: |
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
312 printf("stderr from '%s':" % (' '.join(cmd)), file=sys.stderr) |
33598
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
313 printf(err, file=sys.stderr) |
44603
bda050bc9987
py3: make setup.py's hgcommand() consistently return bytes
Martin von Zweigbergk <martinvonz@google.com>
parents:
44378
diff
changeset
|
314 return b'' |
33113
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
315 return out |
8548
3ccbe42ff72f
setup: read .hg_archival.txt for version info (issue1670)
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
8547
diff
changeset
|
316 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
317 |
33598
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
318 def filterhgerr(err): |
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
319 # If root is executing setup.py, but the repository is owned by |
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
320 # another user (as in "sudo python setup.py install") we will get |
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
321 # trust warnings since the .hg/hgrc file is untrusted. That is |
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
322 # fine, we don't want to load it anyway. Python may warn about |
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
323 # a missing __init__.py in mercurial/locale, we also ignore that. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
324 err = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
325 e |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
326 for e in err.splitlines() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
327 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
328 not e.startswith(b'not trusting file') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
329 and not e.startswith(b'warning: Not importing') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
330 and not e.startswith(b'obsolete feature not enabled') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
331 and not e.startswith(b'*** failed to import extension') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
332 and not e.startswith(b'devel-warn:') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
333 and not ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
334 e.startswith(b'(third party extension') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
335 and e.endswith(b'or newer of Mercurial; disabling)') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
336 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
337 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
338 ] |
33598
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
339 return b'\n'.join(b' ' + e for e in err) |
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
340 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
341 |
33114
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
342 def findhg(): |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
343 """Try to figure out how we should invoke hg for examining the local |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
344 repository contents. |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
345 |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
346 Returns an hgcommand object.""" |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
347 # By default, prefer the "hg" command in the user's path. This was |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
348 # presumably the hg command that the user used to create this repository. |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
349 # |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
350 # This repository may require extensions or other settings that would not |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
351 # be enabled by running the hg script directly from this local repository. |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
352 hgenv = os.environ.copy() |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
353 # Use HGPLAIN to disable hgrc settings that would change output formatting, |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
354 # and disable localization for the same reasons. |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
355 hgenv['HGPLAIN'] = '1' |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
356 hgenv['LANGUAGE'] = 'C' |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
357 hgcmd = ['hg'] |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
358 # Run a simple "hg log" command just to see if using hg from the user's |
40980
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
359 # path works and can successfully interact with this repository. Windows |
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
360 # gives precedence to hg.exe in the current directory, so fall back to the |
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
361 # python invocation of local hg, where pythonXY.dll can always be found. |
33114
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
362 check_cmd = ['log', '-r.', '-Ttest'] |
44202
a7f8160cc4e4
setup: don't skip the search for global hg.exe if there is no local instance
Matt Harbison <matt_harbison@yahoo.com>
parents:
44115
diff
changeset
|
363 if os.name != 'nt' or not os.path.exists("hg.exe"): |
40980
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
364 try: |
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
365 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv) |
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
366 except EnvironmentError: |
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
367 retcode = -1 |
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
368 if retcode == 0 and not filterhgerr(err): |
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40967
diff
changeset
|
369 return hgcommand(hgcmd, hgenv) |
33114
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
370 |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
371 # Fall back to trying the local hg installation. |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
372 hgenv = localhgenv() |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
373 hgcmd = [sys.executable, 'hg'] |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
374 try: |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
375 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv) |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
376 except EnvironmentError: |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
377 retcode = -1 |
33598
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
378 if retcode == 0 and not filterhgerr(err): |
33114
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
379 return hgcommand(hgcmd, hgenv) |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
380 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
381 raise SystemExit( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
382 'Unable to find a working hg binary to extract the ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
383 'version from the repository tags' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
384 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
385 |
33114
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
386 |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
387 def localhgenv(): |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
388 """Get an environment dictionary to use for invoking or importing |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
389 mercurial from the local repository.""" |
33112
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
390 # Execute hg out of this directory with a custom environment which takes |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
391 # care to not use any hgrc files and do no localization. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
392 env = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
393 'HGMODULEPOLICY': 'py', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
394 'HGRCPATH': '', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
395 'LANGUAGE': 'C', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
396 'PATH': '', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
397 } # make pypi modules that use os.environ['PATH'] happy |
33112
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
398 if 'LD_LIBRARY_PATH' in os.environ: |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
399 env['LD_LIBRARY_PATH'] = os.environ['LD_LIBRARY_PATH'] |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
400 if 'SystemRoot' in os.environ: |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
401 # SystemRoot is required by Windows to load various DLLs. See: |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
402 # https://bugs.python.org/issue13524#msg148850 |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
403 env['SystemRoot'] = os.environ['SystemRoot'] |
33117 | 404 return env |
33112
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
405 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
406 |
33112
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33111
diff
changeset
|
407 version = '' |
15367
b357a972d6cd
setup: set env global earlier (3073)
Matt Mackall <mpm@selenic.com>
parents:
15215
diff
changeset
|
408 |
8547
548fd7a05373
setup.py: subprocess instead of os.popen, sys.stderr.write instead of print
Christian Ebert <blacktrash@gmx.net>
parents:
8494
diff
changeset
|
409 if os.path.isdir('.hg'): |
33114
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33113
diff
changeset
|
410 hg = findhg() |
33113
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
411 cmd = ['log', '-r', '.', '--template', '{tags}\n'] |
35246
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35229
diff
changeset
|
412 numerictags = [t for t in sysstr(hg.run(cmd)).split() if t[0:1].isdigit()] |
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35229
diff
changeset
|
413 hgid = sysstr(hg.run(['id', '-i'])).strip() |
33110
6fdc1518983e
setup: fail if we cannot determine the version number
Adam Simpkins <simpkins@fb.com>
parents:
33103
diff
changeset
|
414 if not hgid: |
6fdc1518983e
setup: fail if we cannot determine the version number
Adam Simpkins <simpkins@fb.com>
parents:
33103
diff
changeset
|
415 # Bail out if hg is having problems interacting with this repository, |
6fdc1518983e
setup: fail if we cannot determine the version number
Adam Simpkins <simpkins@fb.com>
parents:
33103
diff
changeset
|
416 # rather than falling through and producing a bogus version number. |
6fdc1518983e
setup: fail if we cannot determine the version number
Adam Simpkins <simpkins@fb.com>
parents:
33103
diff
changeset
|
417 # Continuing with an invalid version number will break extensions |
6fdc1518983e
setup: fail if we cannot determine the version number
Adam Simpkins <simpkins@fb.com>
parents:
33103
diff
changeset
|
418 # that define minimumhgversion. |
6fdc1518983e
setup: fail if we cannot determine the version number
Adam Simpkins <simpkins@fb.com>
parents:
33103
diff
changeset
|
419 raise SystemExit('Unable to determine hg version from local repository') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
420 if numerictags: # tag(s) found |
17709
b7fff47bb128
setup: calculate version more correctly
Bryan O'Sullivan <bryano@fb.com>
parents:
17606
diff
changeset
|
421 version = numerictags[-1] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
422 if hgid.endswith('+'): # propagate the dirty status to the tag |
9615
f51d1822d6fd
setup: refactor the version string to a subset of tag+tagdist-hash+date
Gilles Moris <gilles.moris@free.fr>
parents:
9539
diff
changeset
|
423 version += '+' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
424 else: # no tag found |
33113
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
425 ltagcmd = ['parents', '--template', '{latesttag}'] |
35246
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35229
diff
changeset
|
426 ltag = sysstr(hg.run(ltagcmd)) |
33113
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
427 changessincecmd = ['log', '-T', 'x\n', '-r', "only(.,'%s')" % ltag] |
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33112
diff
changeset
|
428 changessince = len(hg.run(changessincecmd).splitlines()) |
23647
eb55e09202c8
setup: use changes since latest tag instead of just distance
Siddharth Agarwal <sid0@fb.com>
parents:
23646
diff
changeset
|
429 version = '%s+%s-%s' % (ltag, changessince, hgid) |
9615
f51d1822d6fd
setup: refactor the version string to a subset of tag+tagdist-hash+date
Gilles Moris <gilles.moris@free.fr>
parents:
9539
diff
changeset
|
430 if version.endswith('+'): |
f51d1822d6fd
setup: refactor the version string to a subset of tag+tagdist-hash+date
Gilles Moris <gilles.moris@free.fr>
parents:
9539
diff
changeset
|
431 version += time.strftime('%Y%m%d') |
f51d1822d6fd
setup: refactor the version string to a subset of tag+tagdist-hash+date
Gilles Moris <gilles.moris@free.fr>
parents:
9539
diff
changeset
|
432 elif os.path.exists('.hg_archival.txt'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
433 kw = dict( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
434 [[t.strip() for t in l.split(':', 1)] for l in open('.hg_archival.txt')] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
435 ) |
9615
f51d1822d6fd
setup: refactor the version string to a subset of tag+tagdist-hash+date
Gilles Moris <gilles.moris@free.fr>
parents:
9539
diff
changeset
|
436 if 'tag' in kw: |
27637
b502138f5faa
cleanup: remove superfluous space after space after equals (python)
timeless <timeless@mozdev.org>
parents:
27374
diff
changeset
|
437 version = kw['tag'] |
9615
f51d1822d6fd
setup: refactor the version string to a subset of tag+tagdist-hash+date
Gilles Moris <gilles.moris@free.fr>
parents:
9539
diff
changeset
|
438 elif 'latesttag' in kw: |
23646
9641643fac71
setup: use changessincelatesttag from archive if present
Siddharth Agarwal <sid0@fb.com>
parents:
23392
diff
changeset
|
439 if 'changessincelatesttag' in kw: |
9641643fac71
setup: use changessincelatesttag from archive if present
Siddharth Agarwal <sid0@fb.com>
parents:
23392
diff
changeset
|
440 version = '%(latesttag)s+%(changessincelatesttag)s-%(node).12s' % kw |
9641643fac71
setup: use changessincelatesttag from archive if present
Siddharth Agarwal <sid0@fb.com>
parents:
23392
diff
changeset
|
441 else: |
9641643fac71
setup: use changessincelatesttag from archive if present
Siddharth Agarwal <sid0@fb.com>
parents:
23392
diff
changeset
|
442 version = '%(latesttag)s+%(latesttagdistance)s-%(node).12s' % kw |
8547
548fd7a05373
setup.py: subprocess instead of os.popen, sys.stderr.write instead of print
Christian Ebert <blacktrash@gmx.net>
parents:
8494
diff
changeset
|
443 else: |
9615
f51d1822d6fd
setup: refactor the version string to a subset of tag+tagdist-hash+date
Gilles Moris <gilles.moris@free.fr>
parents:
9539
diff
changeset
|
444 version = kw.get('node', '')[:12] |
7632 | 445 |
8548
3ccbe42ff72f
setup: read .hg_archival.txt for version info (issue1670)
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
8547
diff
changeset
|
446 if version: |
35229
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
447 versionb = version |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
448 if not isinstance(versionb, bytes): |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
449 versionb = versionb.encode('ascii') |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
450 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
451 write_if_changed( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
452 'mercurial/__version__.py', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
453 b''.join( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
454 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
455 b'# this file is autogenerated by setup.py\n' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
456 b'version = b"%s"\n' % versionb, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
457 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
458 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
459 ) |
8493
4c030ada58d2
Fix how setup.py identifies the Mercurial version.
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
7826
diff
changeset
|
460 |
4c030ada58d2
Fix how setup.py identifies the Mercurial version.
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
7826
diff
changeset
|
461 try: |
28431
a7e3b72cf756
setup: show how to set the module policy for imports
timeless <timeless@mozdev.org>
parents:
28430
diff
changeset
|
462 oldpolicy = os.environ.get('HGMODULEPOLICY', None) |
a7e3b72cf756
setup: show how to set the module policy for imports
timeless <timeless@mozdev.org>
parents:
28430
diff
changeset
|
463 os.environ['HGMODULEPOLICY'] = 'py' |
8493
4c030ada58d2
Fix how setup.py identifies the Mercurial version.
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
7826
diff
changeset
|
464 from mercurial import __version__ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
465 |
8493
4c030ada58d2
Fix how setup.py identifies the Mercurial version.
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
7826
diff
changeset
|
466 version = __version__.version |
4c030ada58d2
Fix how setup.py identifies the Mercurial version.
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
7826
diff
changeset
|
467 except ImportError: |
38721
dbbe45ae5ad1
setup: allow to run setup.py with python 3 without a mercurial checkout
Mike Hommey <mh@glandium.org>
parents:
38207
diff
changeset
|
468 version = b'unknown' |
28431
a7e3b72cf756
setup: show how to set the module policy for imports
timeless <timeless@mozdev.org>
parents:
28430
diff
changeset
|
469 finally: |
a7e3b72cf756
setup: show how to set the module policy for imports
timeless <timeless@mozdev.org>
parents:
28430
diff
changeset
|
470 if oldpolicy is None: |
a7e3b72cf756
setup: show how to set the module policy for imports
timeless <timeless@mozdev.org>
parents:
28430
diff
changeset
|
471 del os.environ['HGMODULEPOLICY'] |
a7e3b72cf756
setup: show how to set the module policy for imports
timeless <timeless@mozdev.org>
parents:
28430
diff
changeset
|
472 else: |
a7e3b72cf756
setup: show how to set the module policy for imports
timeless <timeless@mozdev.org>
parents:
28430
diff
changeset
|
473 os.environ['HGMODULEPOLICY'] = oldpolicy |
7632 | 474 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
475 |
15460
f9f0731dbc56
setup: subclass build command
Simon Heimberg <simohe@besonet.ch>
parents:
15459
diff
changeset
|
476 class hgbuild(build): |
f9f0731dbc56
setup: subclass build command
Simon Heimberg <simohe@besonet.ch>
parents:
15459
diff
changeset
|
477 # Insert hgbuildmo first so that files in mercurial/locale/ are found |
f9f0731dbc56
setup: subclass build command
Simon Heimberg <simohe@besonet.ch>
parents:
15459
diff
changeset
|
478 # when build_py is run next. |
28398
712298942c82
setup: remove support for 2to3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28041
diff
changeset
|
479 sub_commands = [('build_mo', None)] + build.sub_commands |
15460
f9f0731dbc56
setup: subclass build command
Simon Heimberg <simohe@besonet.ch>
parents:
15459
diff
changeset
|
480 |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
481 def run(self): |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
482 if os.name == 'nt': |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
483 pass |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
484 elif docutils is None: |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
485 log.warn('not building optional documentation') |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
486 else: |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
487 self.run_command('build_doc') |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
488 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
489 |
15523
f9da84a950d0
setup: backout 8504699d1aa6
Matt Mackall <mpm@selenic.com>
parents:
15500
diff
changeset
|
490 class hgbuildmo(build): |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
491 |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
492 description = "build translations (.mo files)" |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
493 |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
494 def run(self): |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
495 if not find_executable('msgfmt'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
496 self.warn( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
497 "could not find msgfmt executable, no translations " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
498 "will be built" |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
499 ) |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
500 return |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
501 |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
502 podir = 'i18n' |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
503 if not os.path.isdir(podir): |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
504 self.warn("could not find %s/ directory" % podir) |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
505 return |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
506 |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
507 join = os.path.join |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
508 for po in os.listdir(podir): |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
509 if not po.endswith('.po'): |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
510 continue |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
511 pofile = join(podir, po) |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
512 modir = join('locale', po[:-3], 'LC_MESSAGES') |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
513 mofile = join(modir, 'hg.mo') |
9999
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
514 mobuildfile = join('mercurial', mofile) |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
515 cmd = ['msgfmt', '-v', '-o', mobuildfile, pofile] |
7720
b6c2cb40e664
setup: do not use -c with msgfmt on Solaris (issue1489)
Martin Geisler <mg@daimi.au.dk>
parents:
7712
diff
changeset
|
516 if sys.platform != 'sunos5': |
b6c2cb40e664
setup: do not use -c with msgfmt on Solaris (issue1489)
Martin Geisler <mg@daimi.au.dk>
parents:
7712
diff
changeset
|
517 # msgfmt on Solaris does not know about -c |
b6c2cb40e664
setup: do not use -c with msgfmt on Solaris (issue1489)
Martin Geisler <mg@daimi.au.dk>
parents:
7712
diff
changeset
|
518 cmd.append('-c') |
9999
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
519 self.mkpath(join('mercurial', modir)) |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
520 self.make_file([pofile], mobuildfile, spawn, (cmd,)) |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
521 |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
522 |
15458
c3a6ec304055
setup: subclass distribution instead of overwriting original
Simon Heimberg <simohe@besonet.ch>
parents:
15388
diff
changeset
|
523 class hgdist(Distribution): |
29505
2dce3f96ad7b
setup: prepare for future cffi modules by adding placeholder in setup
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
524 pure = False |
44487
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
525 rust = False |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
526 no_rust = False |
29505
2dce3f96ad7b
setup: prepare for future cffi modules by adding placeholder in setup
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
527 cffi = ispypy |
15458
c3a6ec304055
setup: subclass distribution instead of overwriting original
Simon Heimberg <simohe@besonet.ch>
parents:
15388
diff
changeset
|
528 |
41759
aaad36b88298
cleanup: use () to wrap long lines instead of \
Augie Fackler <augie@google.com>
parents:
41533
diff
changeset
|
529 global_options = Distribution.global_options + [ |
aaad36b88298
cleanup: use () to wrap long lines instead of \
Augie Fackler <augie@google.com>
parents:
41533
diff
changeset
|
530 ('pure', None, "use pure (slow) Python code instead of C extensions"), |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
531 ('rust', None, "use Rust extensions additionally to C extensions"), |
44487
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
532 ( |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
533 'no-rust', |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
534 None, |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
535 "do not use Rust extensions additionally to C extensions", |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
536 ), |
41759
aaad36b88298
cleanup: use () to wrap long lines instead of \
Augie Fackler <augie@google.com>
parents:
41533
diff
changeset
|
537 ] |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
538 |
44487
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
539 negative_opt = Distribution.negative_opt.copy() |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
540 boolean_options = ['pure', 'rust', 'no-rust'] |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
541 negative_opt['no-rust'] = 'rust' |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
542 |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
543 def _set_command_options(self, command_obj, option_dict=None): |
44630
4c6189d45d67
setup: work around old versions of distutils breaking setup.py
Augie Fackler <augie@google.com>
parents:
44605
diff
changeset
|
544 # Not all distutils versions in the wild have boolean_options. |
4c6189d45d67
setup: work around old versions of distutils breaking setup.py
Augie Fackler <augie@google.com>
parents:
44605
diff
changeset
|
545 # This should be cleaned up when we're Python 3 only. |
4c6189d45d67
setup: work around old versions of distutils breaking setup.py
Augie Fackler <augie@google.com>
parents:
44605
diff
changeset
|
546 command_obj.boolean_options = ( |
4c6189d45d67
setup: work around old versions of distutils breaking setup.py
Augie Fackler <augie@google.com>
parents:
44605
diff
changeset
|
547 getattr(command_obj, 'boolean_options', []) + self.boolean_options |
4c6189d45d67
setup: work around old versions of distutils breaking setup.py
Augie Fackler <augie@google.com>
parents:
44605
diff
changeset
|
548 ) |
44487
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
549 return Distribution._set_command_options( |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
550 self, command_obj, option_dict=option_dict |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
551 ) |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
552 |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
553 def parse_command_line(self): |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
554 ret = Distribution.parse_command_line(self) |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
555 if not (self.rust or self.no_rust): |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
556 hgrustext = os.environ.get('HGWITHRUSTEXT') |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
557 # TODO record it for proper rebuild upon changes |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
558 # (see mercurial/__modulepolicy__.py) |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
559 if hgrustext != 'cpython' and hgrustext is not None: |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
560 if hgrustext: |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
561 msg = 'unkown HGWITHRUSTEXT value: %s' % hgrustext |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
562 printf(msg, file=sys.stderr) |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
563 hgrustext = None |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
564 self.rust = hgrustext is not None |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
565 self.no_rust = not self.rust |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
566 return ret |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44485
diff
changeset
|
567 |
15459
434c48e981b8
setup: has_ext_modules always returns false when pure is specified
Simon Heimberg <simohe@besonet.ch>
parents:
15458
diff
changeset
|
568 def has_ext_modules(self): |
434c48e981b8
setup: has_ext_modules always returns false when pure is specified
Simon Heimberg <simohe@besonet.ch>
parents:
15458
diff
changeset
|
569 # self.ext_modules is emptied in hgbuildpy.finalize_options which is |
434c48e981b8
setup: has_ext_modules always returns false when pure is specified
Simon Heimberg <simohe@besonet.ch>
parents:
15458
diff
changeset
|
570 # too late for some cases |
434c48e981b8
setup: has_ext_modules always returns false when pure is specified
Simon Heimberg <simohe@besonet.ch>
parents:
15458
diff
changeset
|
571 return not self.pure and Distribution.has_ext_modules(self) |
434c48e981b8
setup: has_ext_modules always returns false when pure is specified
Simon Heimberg <simohe@besonet.ch>
parents:
15458
diff
changeset
|
572 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
573 |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
574 # This is ugly as a one-liner. So use a variable. |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
575 buildextnegops = dict(getattr(build_ext, 'negative_options', {})) |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
576 buildextnegops['no-zstd'] = 'zstd' |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
577 buildextnegops['no-rust'] = 'rust' |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
578 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
579 |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
580 class hgbuildext(build_ext): |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
581 user_options = build_ext.user_options + [ |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
582 ('zstd', None, 'compile zstd bindings [default]'), |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
583 ('no-zstd', None, 'do not compile zstd bindings'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
584 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
585 'rust', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
586 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
587 'compile Rust extensions if they are in use ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
588 '(requires Cargo) [default]', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
589 ), |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
590 ('no-rust', None, 'do not compile Rust extensions'), |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
591 ] |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
592 |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
593 boolean_options = build_ext.boolean_options + ['zstd', 'rust'] |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
594 negative_opt = buildextnegops |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
595 |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
596 def initialize_options(self): |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
597 self.zstd = True |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
598 self.rust = True |
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
599 |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
600 return build_ext.initialize_options(self) |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
601 |
43044
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42813
diff
changeset
|
602 def finalize_options(self): |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42813
diff
changeset
|
603 # Unless overridden by the end user, build extensions in parallel. |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42813
diff
changeset
|
604 # Only influences behavior on Python 3.5+. |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42813
diff
changeset
|
605 if getattr(self, 'parallel', None) is None: |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42813
diff
changeset
|
606 self.parallel = True |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42813
diff
changeset
|
607 |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42813
diff
changeset
|
608 return build_ext.finalize_options(self) |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42813
diff
changeset
|
609 |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
610 def build_extensions(self): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
611 ruststandalones = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
612 e for e in self.extensions if isinstance(e, RustStandaloneExtension) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
613 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
614 self.extensions = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
615 e for e in self.extensions if e not in ruststandalones |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
616 ] |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
617 # Filter out zstd if disabled via argument. |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
618 if not self.zstd: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
619 self.extensions = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
620 e for e in self.extensions if e.name != 'mercurial.zstd' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
621 ] |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
622 |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
623 # Build Rust standalon extensions if it'll be used |
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
624 # and its build is not explictely disabled (for external build |
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
625 # as Linux distributions would do) |
44466
79ac59d3f73d
setup-rust: remove the legacy 'direct-ffi' variant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44452
diff
changeset
|
626 if self.distribution.rust and self.rust: |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
627 for rustext in ruststandalones: |
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
628 rustext.build('' if self.inplace else self.build_lib) |
40967
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
629 |
30450
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30436
diff
changeset
|
630 return build_ext.build_extensions(self) |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
631 |
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
632 def build_extension(self, ext): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
633 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
634 self.distribution.rust |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
635 and self.rust |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
636 and isinstance(ext, RustExtension) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
637 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
638 ext.rustbuild() |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
639 try: |
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
640 build_ext.build_extension(self, ext) |
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
641 except CCompilerError: |
12501
98f21e4d9633
setup: slight simplification
Martin Geisler <mg@lazybytes.net>
parents:
11533
diff
changeset
|
642 if not getattr(ext, 'optional', False): |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
643 raise |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
644 log.warn( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
645 "Failed to build optional extension '%s' (skipping)", ext.name |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
646 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
647 |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
648 |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
649 class hgbuildscripts(build_scripts): |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
650 def run(self): |
28041
8da94662afe5
setup: avoid procedure related to hg.exe at setup.py --pure
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
27925
diff
changeset
|
651 if os.name != 'nt' or self.distribution.pure: |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
652 return build_scripts.run(self) |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
653 |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
654 exebuilt = False |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
655 try: |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
656 self.run_command('build_hgexe') |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
657 exebuilt = True |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
658 except (DistutilsError, CCompilerError): |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
659 log.warn('failed to build optional hg.exe') |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
660 |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
661 if exebuilt: |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
662 # Copying hg.exe to the scripts build directory ensures it is |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
663 # installed by the install_scripts command. |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
664 hgexecommand = self.get_finalized_command('build_hgexe') |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
665 dest = os.path.join(self.build_dir, 'hg.exe') |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
666 self.mkpath(self.build_dir) |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
667 self.copy_file(hgexecommand.hgexepath, dest) |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
668 |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
669 # Remove hg.bat because it is redundant with hg.exe. |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
670 self.scripts.remove('contrib/win32/hg.bat') |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
671 |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
672 return build_scripts.run(self) |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
673 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
674 |
10000
16f49d671c7f
setup: cleanup coding style
Martin Geisler <mg@lazybytes.net>
parents:
9999
diff
changeset
|
675 class hgbuildpy(build_py): |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
676 def finalize_options(self): |
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
677 build_py.finalize_options(self) |
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
678 |
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
679 if self.distribution.pure: |
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
680 self.distribution.ext_modules = [] |
29505
2dce3f96ad7b
setup: prepare for future cffi modules by adding placeholder in setup
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
681 elif self.distribution.cffi: |
30346
9cc438bf7d9a
setup: move cffi stuff to mercurial/cffi
Jun Wu <quark@fb.com>
parents:
29833
diff
changeset
|
682 from mercurial.cffi import ( |
32505
05a16c19967e
cffi: rename build scripts
Yuya Nishihara <yuya@tcha.org>
parents:
32420
diff
changeset
|
683 bdiffbuild, |
05a16c19967e
cffi: rename build scripts
Yuya Nishihara <yuya@tcha.org>
parents:
32420
diff
changeset
|
684 mpatchbuild, |
30346
9cc438bf7d9a
setup: move cffi stuff to mercurial/cffi
Jun Wu <quark@fb.com>
parents:
29833
diff
changeset
|
685 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
686 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
687 exts = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
688 mpatchbuild.ffi.distutils_extension(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
689 bdiffbuild.ffi.distutils_extension(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
690 ] |
29505
2dce3f96ad7b
setup: prepare for future cffi modules by adding placeholder in setup
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
691 # cffi modules go here |
29600
7a157639b8f2
osutil: add darwin-only version of os.listdir using cffi
Maciej Fijalkowski <fijall@gmail.com>
parents:
29541
diff
changeset
|
692 if sys.platform == 'darwin': |
32505
05a16c19967e
cffi: rename build scripts
Yuya Nishihara <yuya@tcha.org>
parents:
32420
diff
changeset
|
693 from mercurial.cffi import osutilbuild |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
694 |
32505
05a16c19967e
cffi: rename build scripts
Yuya Nishihara <yuya@tcha.org>
parents:
32420
diff
changeset
|
695 exts.append(osutilbuild.ffi.distutils_extension()) |
29505
2dce3f96ad7b
setup: prepare for future cffi modules by adding placeholder in setup
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
696 self.distribution.ext_modules = exts |
12649
6c0e1aee1b19
setup: user-friendly error message if Python headers are missing
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12501
diff
changeset
|
697 else: |
18905
012780620d4f
setup: make error message for missing Python headers more helpful
Mads Kiilerich <mads@kiilerich.com>
parents:
18900
diff
changeset
|
698 h = os.path.join(get_python_inc(), 'Python.h') |
012780620d4f
setup: make error message for missing Python headers more helpful
Mads Kiilerich <mads@kiilerich.com>
parents:
18900
diff
changeset
|
699 if not os.path.exists(h): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
700 raise SystemExit( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
701 'Python headers are required to build ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
702 'Mercurial but weren\'t found in %s' % h |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
703 ) |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
704 |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
705 def run(self): |
32655
7dab4c0cdb41
setup: do not overwrite local __modulepolicy__.py on out-of-source build
Yuya Nishihara <yuya@tcha.org>
parents:
32647
diff
changeset
|
706 basepath = os.path.join(self.build_lib, 'mercurial') |
7dab4c0cdb41
setup: do not overwrite local __modulepolicy__.py on out-of-source build
Yuya Nishihara <yuya@tcha.org>
parents:
32647
diff
changeset
|
707 self.mkpath(basepath) |
7dab4c0cdb41
setup: do not overwrite local __modulepolicy__.py on out-of-source build
Yuya Nishihara <yuya@tcha.org>
parents:
32647
diff
changeset
|
708 |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
709 rust = self.distribution.rust |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
710 if self.distribution.pure: |
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
711 modulepolicy = 'py' |
32251
a04f5c651e52
policy: relax the default for in-place build
Yuya Nishihara <yuya@tcha.org>
parents:
32233
diff
changeset
|
712 elif self.build_lib == '.': |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
713 # in-place build should run without rebuilding and Rust extensions |
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
714 modulepolicy = 'rust+c-allow' if rust else 'allow' |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
715 else: |
42453
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42451
diff
changeset
|
716 modulepolicy = 'rust+c' if rust else 'c' |
35229
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35103
diff
changeset
|
717 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
718 content = b''.join( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
719 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
720 b'# this file is autogenerated by setup.py\n', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
721 b'modulepolicy = b"%s"\n' % modulepolicy.encode('ascii'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
722 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
723 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
724 write_if_changed(os.path.join(basepath, '__modulepolicy__.py'), content) |
27222
511a4384b033
setup: refactor handling of modules with C/Python implementations
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27220
diff
changeset
|
725 |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
726 build_py.run(self) |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
727 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
728 |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
729 class buildhgextindex(Command): |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
730 description = 'generate prebuilt index of hgext (for frozen package)' |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
731 user_options = [] |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
732 _indexfilename = 'hgext/__index__.py' |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
733 |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
734 def initialize_options(self): |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
735 pass |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
736 |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
737 def finalize_options(self): |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
738 pass |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
739 |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
740 def run(self): |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
741 if os.path.exists(self._indexfilename): |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
742 with open(self._indexfilename, 'w') as f: |
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
743 f.write('# empty\n') |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
744 |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
745 # here no extension enabled, disabled() lists up everything |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
746 code = ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
747 'import pprint; from mercurial import extensions; ' |
44378
bb58931d0c4f
setup: exclude the __index__ module from itself when generating
Matt Harbison <matt_harbison@yahoo.com>
parents:
44170
diff
changeset
|
748 'ext = extensions.disabled();' |
bb58931d0c4f
setup: exclude the __index__ module from itself when generating
Matt Harbison <matt_harbison@yahoo.com>
parents:
44170
diff
changeset
|
749 'ext.pop("__index__", None);' |
bb58931d0c4f
setup: exclude the __index__ module from itself when generating
Matt Harbison <matt_harbison@yahoo.com>
parents:
44170
diff
changeset
|
750 'pprint.pprint(ext)' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
751 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
752 returncode, out, err = runcmd( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
753 [sys.executable, '-c', code], localhgenv() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
754 ) |
33111
87ee783f7299
setup: update runcmd() to also return the exit status
Adam Simpkins <simpkins@fb.com>
parents:
33110
diff
changeset
|
755 if err or returncode != 0: |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
756 raise DistutilsExecError(err) |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
757 |
42075
456c37433c43
py3: write out hgextindex as bytes in setup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
42074
diff
changeset
|
758 with open(self._indexfilename, 'wb') as f: |
456c37433c43
py3: write out hgextindex as bytes in setup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
42074
diff
changeset
|
759 f.write(b'# this file is autogenerated by setup.py\n') |
456c37433c43
py3: write out hgextindex as bytes in setup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
42074
diff
changeset
|
760 f.write(b'docs = ') |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
761 f.write(out) |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
762 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
763 |
17061
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
764 class buildhgexe(build_ext): |
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
765 description = 'compile hg.exe from mercurial/exewrapper.c' |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
766 user_options = build_ext.user_options + [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
767 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
768 'long-paths-support', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
769 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
770 'enable support for long paths on ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
771 'Windows (off by default and ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
772 'experimental)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
773 ), |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
774 ] |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
775 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
776 LONG_PATHS_MANIFEST = """ |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
777 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
778 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
779 <application> |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
780 <windowsSettings |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
781 xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings"> |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
782 <ws2:longPathAware>true</ws2:longPathAware> |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
783 </windowsSettings> |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
784 </application> |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
785 </assembly>""" |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
786 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
787 def initialize_options(self): |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
788 build_ext.initialize_options(self) |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
789 self.long_paths_support = False |
17061
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
790 |
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
791 def build_extensions(self): |
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
792 if os.name != 'nt': |
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
793 return |
17246
bf5bb38bcc7c
setup: fix build_hgexe for mingw32 compiler
Adrian Buehlmann <adrian@cadifra.com>
parents:
17121
diff
changeset
|
794 if isinstance(self.compiler, HackedMingw32CCompiler): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
795 self.compiler.compiler_so = self.compiler.compiler # no -mdll |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
796 self.compiler.dll_libraries = [] # no -lmsrvc90 |
29020
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
797 |
43678
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
798 pythonlib = None |
29020
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
799 |
45933
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
800 dir = os.path.dirname(self.get_ext_fullpath('dummy')) |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
801 self.hgtarget = os.path.join(dir, 'hg') |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
802 |
43678
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
803 if getattr(sys, 'dllhandle', None): |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
804 # Different Python installs can have different Python library |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
805 # names. e.g. the official CPython distribution uses pythonXY.dll |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
806 # and MinGW uses libpythonX.Y.dll. |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
807 _kernel32 = ctypes.windll.kernel32 |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
808 _kernel32.GetModuleFileNameA.argtypes = [ |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
809 ctypes.c_void_p, |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
810 ctypes.c_void_p, |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
811 ctypes.c_ulong, |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
812 ] |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
813 _kernel32.GetModuleFileNameA.restype = ctypes.c_ulong |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
814 size = 1000 |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
815 buf = ctypes.create_string_buffer(size + 1) |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
816 filelen = _kernel32.GetModuleFileNameA( |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
817 sys.dllhandle, ctypes.byref(buf), size |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
818 ) |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
819 |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
820 if filelen > 0 and filelen != size: |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
821 dllbasename = os.path.basename(buf.value) |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
822 if not dllbasename.lower().endswith(b'.dll'): |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
823 raise SystemExit( |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
824 'Python DLL does not end with .dll: %s' % dllbasename |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
825 ) |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
826 pythonlib = dllbasename[:-4] |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
827 |
45933
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
828 # Copy the pythonXY.dll next to the binary so that it runs |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
829 # without tampering with PATH. |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
830 fsdecode = lambda x: x |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
831 if sys.version_info[0] >= 3: |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
832 fsdecode = os.fsdecode |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
833 dest = os.path.join( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
834 os.path.dirname(self.hgtarget), |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
835 fsdecode(dllbasename), |
45933
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
836 ) |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
837 |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
838 if not os.path.exists(dest): |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
839 shutil.copy(buf.value, dest) |
2960b7fac966
setup: copy pythonXY.dll next to the hg.exe wrapper when building
Matt Harbison <matt_harbison@yahoo.com>
parents:
45305
diff
changeset
|
840 |
43678
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
841 if not pythonlib: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
842 log.warn( |
43675
666441b649e4
setup: combine two contiguous string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
43632
diff
changeset
|
843 'could not determine Python DLL filename; assuming pythonXY' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
844 ) |
29020
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
845 |
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
846 hv = sys.hexversion |
43676
6a5dc4d767a0
setup: use bytes for assumed python version
Matt Harbison <matt_harbison@yahoo.com>
parents:
43675
diff
changeset
|
847 pythonlib = b'python%d%d' % (hv >> 24, (hv >> 16) & 0xFF) |
29020
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
848 |
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
849 log.info('using %s as Python library name' % pythonlib) |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
850 with open('mercurial/hgpythonlib.h', 'wb') as f: |
39608
ec68135a8935
py3: add b'' to some setup.py strings for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
39572
diff
changeset
|
851 f.write(b'/* this file is autogenerated by setup.py */\n') |
ec68135a8935
py3: add b'' to some setup.py strings for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
39572
diff
changeset
|
852 f.write(b'#define HGPYTHONLIB "%s"\n' % pythonlib) |
40397
36b134c436b8
setup: build exewrapper with Unicode support on py3
Matt Harbison <matt_harbison@yahoo.com>
parents:
40383
diff
changeset
|
853 |
36b134c436b8
setup: build exewrapper with Unicode support on py3
Matt Harbison <matt_harbison@yahoo.com>
parents:
40383
diff
changeset
|
854 macros = None |
36b134c436b8
setup: build exewrapper with Unicode support on py3
Matt Harbison <matt_harbison@yahoo.com>
parents:
40383
diff
changeset
|
855 if sys.version_info[0] >= 3: |
36b134c436b8
setup: build exewrapper with Unicode support on py3
Matt Harbison <matt_harbison@yahoo.com>
parents:
40383
diff
changeset
|
856 macros = [('_UNICODE', None), ('UNICODE', None)] |
36b134c436b8
setup: build exewrapper with Unicode support on py3
Matt Harbison <matt_harbison@yahoo.com>
parents:
40383
diff
changeset
|
857 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
858 objects = self.compiler.compile( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
859 ['mercurial/exewrapper.c'], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
860 output_dir=self.build_temp, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
861 macros=macros, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
862 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
863 self.compiler.link_executable( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
864 objects, self.hgtarget, libraries=[], output_dir=self.build_temp |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
865 ) |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
866 if self.long_paths_support: |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
867 self.addlongpathsmanifest() |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
868 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
869 def addlongpathsmanifest(self): |
41533
0f64091cc851
global: make some docstrings raw strings
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41455
diff
changeset
|
870 r"""Add manifest pieces so that hg.exe understands long paths |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
871 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
872 This is an EXPERIMENTAL feature, use with care. |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
873 To enable long paths support, one needs to do two things: |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
874 - build Mercurial with --long-paths-support option |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
875 - change HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\ |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
876 LongPathsEnabled to have value 1. |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
877 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
878 Please ignore 'warning 81010002: Unrecognized Element "longPathAware"'; |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
879 it happens because Mercurial uses mt.exe circa 2008, which is not |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
880 yet aware of long paths support in the manifest (I think so at least). |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
881 This does not stop mt.exe from embedding/merging the XML properly. |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
882 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
883 Why resource #1 should be used for .exe manifests? I don't know and |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
884 wasn't able to find an explanation for mortals. But it seems to work. |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
885 """ |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
886 exefname = self.compiler.executable_filename(self.hgtarget) |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
887 fdauto, manfname = tempfile.mkstemp(suffix='.hg.exe.manifest') |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
888 os.close(fdauto) |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
889 with open(manfname, 'w') as f: |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
890 f.write(self.LONG_PATHS_MANIFEST) |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
891 log.info("long paths manifest is written to '%s'" % manfname) |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
892 inputresource = '-inputresource:%s;#1' % exefname |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
893 outputresource = '-outputresource:%s;#1' % exefname |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
894 log.info("running mt.exe to update hg.exe's manifest in-place") |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
895 # supplying both -manifest and -inputresource to mt.exe makes |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
896 # it merge the embedded and supplied manifests in the -outputresource |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
897 self.spawn( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
898 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
899 'mt.exe', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
900 '-nologo', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
901 '-manifest', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
902 manfname, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
903 inputresource, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
904 outputresource, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
905 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
906 ) |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
907 log.info("done updating hg.exe's manifest") |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34397
diff
changeset
|
908 os.remove(manfname) |
17061
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
909 |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
910 @property |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
911 def hgexepath(self): |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
912 dir = os.path.dirname(self.get_ext_fullpath('dummy')) |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
913 return os.path.join(self.build_temp, dir, 'hg.exe') |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
914 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
915 |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
916 class hgbuilddoc(Command): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
917 description = 'build documentation' |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
918 user_options = [ |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
919 ('man', None, 'generate man pages'), |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
920 ('html', None, 'generate html pages'), |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
921 ] |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
922 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
923 def initialize_options(self): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
924 self.man = None |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
925 self.html = None |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
926 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
927 def finalize_options(self): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
928 # If --man or --html are set, only generate what we're told to. |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
929 # Otherwise generate everything. |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
930 have_subset = self.man is not None or self.html is not None |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
931 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
932 if have_subset: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
933 self.man = True if self.man else False |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
934 self.html = True if self.html else False |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
935 else: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
936 self.man = True |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
937 self.html = True |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
938 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
939 def run(self): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
940 def normalizecrlf(p): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
941 with open(p, 'rb') as fh: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
942 orig = fh.read() |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
943 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
944 if b'\r\n' not in orig: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
945 return |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
946 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
947 log.info('normalizing %s to LF line endings' % p) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
948 with open(p, 'wb') as fh: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
949 fh.write(orig.replace(b'\r\n', b'\n')) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
950 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
951 def gentxt(root): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
952 txt = 'doc/%s.txt' % root |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
953 log.info('generating %s' % txt) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
954 res, out, err = runcmd( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
955 [sys.executable, 'gendoc.py', root], os.environ, cwd='doc' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
956 ) |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
957 if res: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
958 raise SystemExit( |
44742
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
959 'error running gendoc.py: %s' |
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
960 % '\n'.join([sysstr(out), sysstr(err)]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
961 ) |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
962 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
963 with open(txt, 'wb') as fh: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
964 fh.write(out) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
965 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
966 def gengendoc(root): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
967 gendoc = 'doc/%s.gendoc.txt' % root |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
968 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
969 log.info('generating %s' % gendoc) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
970 res, out, err = runcmd( |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
971 [sys.executable, 'gendoc.py', '%s.gendoc' % root], |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
972 os.environ, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
973 cwd='doc', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
974 ) |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
975 if res: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
976 raise SystemExit( |
44742
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
977 'error running gendoc: %s' |
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
978 % '\n'.join([sysstr(out), sysstr(err)]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
979 ) |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
980 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
981 with open(gendoc, 'wb') as fh: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
982 fh.write(out) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
983 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
984 def genman(root): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
985 log.info('generating doc/%s' % root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
986 res, out, err = runcmd( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
987 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
988 sys.executable, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
989 'runrst', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
990 'hgmanpage', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
991 '--halt', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
992 'warning', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
993 '--strip-elements-with-class', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
994 'htmlonly', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
995 '%s.txt' % root, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
996 root, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
997 ], |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
998 os.environ, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
999 cwd='doc', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1000 ) |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1001 if res: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1002 raise SystemExit( |
44742
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1003 'error running runrst: %s' |
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1004 % '\n'.join([sysstr(out), sysstr(err)]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1005 ) |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1006 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1007 normalizecrlf('doc/%s' % root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1008 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1009 def genhtml(root): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1010 log.info('generating doc/%s.html' % root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1011 res, out, err = runcmd( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1012 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1013 sys.executable, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1014 'runrst', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1015 'html', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1016 '--halt', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1017 'warning', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1018 '--link-stylesheet', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1019 '--stylesheet-path', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1020 'style.css', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1021 '%s.txt' % root, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1022 '%s.html' % root, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1023 ], |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1024 os.environ, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1025 cwd='doc', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1026 ) |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1027 if res: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1028 raise SystemExit( |
44742
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1029 'error running runrst: %s' |
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1030 % '\n'.join([sysstr(out), sysstr(err)]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1031 ) |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1032 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1033 normalizecrlf('doc/%s.html' % root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1034 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1035 # This logic is duplicated in doc/Makefile. |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44440
diff
changeset
|
1036 sources = { |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1037 f |
43749
c7fc2d92067e
windows: further build fixes for the WiX installer
Augie Fackler <augie@google.com>
parents:
43678
diff
changeset
|
1038 for f in os.listdir('mercurial/helptext') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1039 if re.search(r'[0-9]\.txt$', f) |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44440
diff
changeset
|
1040 } |
41850
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1041 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1042 # common.txt is a one-off. |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1043 gentxt('common') |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1044 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1045 for source in sorted(sources): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1046 assert source[-4:] == '.txt' |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1047 root = source[:-4] |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1048 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1049 gentxt(root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1050 gengendoc(root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1051 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1052 if self.man: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1053 genman(root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1054 if self.html: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1055 genhtml(root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41759
diff
changeset
|
1056 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1057 |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1058 class hginstalldata(install_data): |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1059 user_options = install_data.user_options + [ |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1060 ( |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1061 'install-man=', |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1062 None, |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1063 'installation directory for manual pages [share/man]', |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1064 ), |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1065 ] |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1066 |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1067 install_man = None |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1068 |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1069 def finalize_options(self): |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1070 install_data.finalize_options(self) |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1071 |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1072 self.set_undefined_options('install', ('install_man', 'install_man')) |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1073 |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1074 if self.install_man is None: |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1075 self.install_man = os.path.join('share', 'man') |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1076 |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1077 if os.name == 'nt': |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1078 pass |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1079 elif docutils is None: |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1080 log.warn('not installing manual pages') |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1081 else: |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1082 manpages = [ |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1083 f for f in os.listdir('doc') if re.search(r'\.[0-9]$', f) |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1084 ] |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1085 |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1086 self.data_files += [ |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1087 ( |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1088 os.path.join(self.install_man, 'man' + ext[1:]), |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1089 ['doc/' + f for f in manpages if f.endswith(ext)], |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1090 ) |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1091 for ext in set(os.path.splitext(f)[1] for f in manpages) |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1092 ] |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1093 |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1094 |
32647
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32506
diff
changeset
|
1095 class hginstall(install): |
32725
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32655
diff
changeset
|
1096 |
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32655
diff
changeset
|
1097 user_options = install.user_options + [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1098 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1099 'old-and-unmanageable', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1100 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1101 'noop, present for eggless setuptools compat', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1102 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1103 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1104 'single-version-externally-managed', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1105 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1106 'noop, present for eggless setuptools compat', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1107 ), |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1108 ( |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1109 'install-man=', |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1110 None, |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1111 'installation directory for manual pages [share/man]', |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1112 ), |
32725
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32655
diff
changeset
|
1113 ] |
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32655
diff
changeset
|
1114 |
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32655
diff
changeset
|
1115 # Also helps setuptools not be sad while we refuse to create eggs. |
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32655
diff
changeset
|
1116 single_version_externally_managed = True |
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32655
diff
changeset
|
1117 |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1118 install_man = None |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1119 |
32647
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32506
diff
changeset
|
1120 def get_sub_commands(self): |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1121 subcommands = install.get_sub_commands(self) |
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1122 subcommands.append('install_data') |
32647
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32506
diff
changeset
|
1123 # Screen out egg related commands to prevent egg generation. But allow |
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32506
diff
changeset
|
1124 # mercurial.egg-info generation, since that is part of modern |
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32506
diff
changeset
|
1125 # packaging. |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44440
diff
changeset
|
1126 excl = {'bdist_egg'} |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1127 return filter(lambda x: x not in excl, subcommands) |
32647
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32506
diff
changeset
|
1128 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1129 |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1130 class hginstalllib(install_lib): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1131 """ |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1132 This is a specialization of install_lib that replaces the copy_file used |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1133 there so that it supports setting the mode of files after copying them, |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1134 instead of just preserving the mode that the files originally had. If your |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1135 system has a umask of something like 027, preserving the permissions when |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1136 copying will lead to a broken install. |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1137 |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1138 Note that just passing keep_permissions=False to copy_file would be |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1139 insufficient, as it might still be applying a umask. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1140 """ |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1141 |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1142 def run(self): |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1143 realcopyfile = file_util.copy_file |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1144 |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1145 def copyfileandsetmode(*args, **kwargs): |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1146 src, dst = args[0], args[1] |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1147 dst, copied = realcopyfile(*args, **kwargs) |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1148 if copied: |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1149 st = os.stat(src) |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1150 # Persist executable bit (apply it to group and other if user |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1151 # has it) |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1152 if st[stat.ST_MODE] & stat.S_IXUSR: |
24941
9c1942635c1f
setup: hide octal literals inside strings so they're portable (issue4554)
Augie Fackler <augie@google.com>
parents:
24214
diff
changeset
|
1153 setmode = int('0755', 8) |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1154 else: |
24941
9c1942635c1f
setup: hide octal literals inside strings so they're portable (issue4554)
Augie Fackler <augie@google.com>
parents:
24214
diff
changeset
|
1155 setmode = int('0644', 8) |
9c1942635c1f
setup: hide octal literals inside strings so they're portable (issue4554)
Augie Fackler <augie@google.com>
parents:
24214
diff
changeset
|
1156 m = stat.S_IMODE(st[stat.ST_MODE]) |
9c1942635c1f
setup: hide octal literals inside strings so they're portable (issue4554)
Augie Fackler <augie@google.com>
parents:
24214
diff
changeset
|
1157 m = (m & ~int('0777', 8)) | setmode |
9c1942635c1f
setup: hide octal literals inside strings so they're portable (issue4554)
Augie Fackler <augie@google.com>
parents:
24214
diff
changeset
|
1158 os.chmod(dst, m) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1159 |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1160 file_util.copy_file = copyfileandsetmode |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1161 try: |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1162 install_lib.run(self) |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1163 finally: |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1164 file_util.copy_file = realcopyfile |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1165 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1166 |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1167 class hginstallscripts(install_scripts): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1168 """ |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1169 This is a specialization of install_scripts that replaces the @LIBDIR@ with |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1170 the configured directory for modules. If possible, the path is made relative |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1171 to the directory for scripts. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1172 """ |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1173 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1174 def initialize_options(self): |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1175 install_scripts.initialize_options(self) |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1176 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1177 self.install_lib = None |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1178 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1179 def finalize_options(self): |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1180 install_scripts.finalize_options(self) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1181 self.set_undefined_options('install', ('install_lib', 'install_lib')) |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1182 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1183 def run(self): |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1184 install_scripts.run(self) |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1185 |
27269
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1186 # It only makes sense to replace @LIBDIR@ with the install path if |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1187 # the install path is known. For wheels, the logic below calculates |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1188 # the libdir to be "../..". This is because the internal layout of a |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1189 # wheel archive looks like: |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1190 # |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1191 # mercurial-3.6.1.data/scripts/hg |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1192 # mercurial/__init__.py |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1193 # |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1194 # When installing wheels, the subdirectories of the "<pkg>.data" |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1195 # directory are translated to system local paths and files therein |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1196 # are copied in place. The mercurial/* files are installed into the |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1197 # site-packages directory. However, the site-packages directory |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1198 # isn't known until wheel install time. This means we have no clue |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1199 # at wheel generation time what the installed site-packages directory |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1200 # will be. And, wheels don't appear to provide the ability to register |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1201 # custom code to run during wheel installation. This all means that |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1202 # we can't reliably set the libdir in wheels: the default behavior |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1203 # of looking in sys.path must do. |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1204 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1205 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1206 os.path.splitdrive(self.install_dir)[0] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1207 != os.path.splitdrive(self.install_lib)[0] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1208 ): |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1209 # can't make relative paths from one drive to another, so use an |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1210 # absolute path instead |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1211 libdir = self.install_lib |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1212 else: |
44080
4e05272dd681
packaging: leverage os.path.relpath() in setup.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
44058
diff
changeset
|
1213 libdir = os.path.relpath(self.install_lib, self.install_dir) |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1214 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1215 for outfile in self.outfiles: |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
1216 with open(outfile, 'rb') as fp: |
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
1217 data = fp.read() |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1218 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1219 # skip binary files |
27348
83a8219fb790
setup.py: use bytes literals
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27269
diff
changeset
|
1220 if b'\0' in data: |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1221 continue |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1222 |
27269
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1223 # During local installs, the shebang will be rewritten to the final |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1224 # install path. During wheel packaging, the shebang has a special |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1225 # value. |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1226 if data.startswith(b'#!python'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1227 log.info( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1228 'not rewriting @LIBDIR@ in %s because install path ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1229 'not known' % outfile |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1230 ) |
27269
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1231 continue |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1232 |
27348
83a8219fb790
setup.py: use bytes literals
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27269
diff
changeset
|
1233 data = data.replace(b'@LIBDIR@', libdir.encode(libdir_escape)) |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
1234 with open(outfile, 'wb') as fp: |
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
1235 fp.write(data) |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1236 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1237 |
42172
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1238 # virtualenv installs custom distutils/__init__.py and |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1239 # distutils/distutils.cfg files which essentially proxy back to the |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1240 # "real" distutils in the main Python install. The presence of this |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1241 # directory causes py2exe to pick up the "hacked" distutils package |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1242 # from the virtualenv and "import distutils" will fail from the py2exe |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1243 # build because the "real" distutils files can't be located. |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1244 # |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1245 # We work around this by monkeypatching the py2exe code finding Python |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1246 # modules to replace the found virtualenv distutils modules with the |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1247 # original versions via filesystem scanning. This is a bit hacky. But |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1248 # it allows us to use virtualenvs for py2exe packaging, which is more |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1249 # deterministic and reproducible. |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1250 # |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1251 # It's worth noting that the common StackOverflow suggestions for this |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1252 # problem involve copying the original distutils files into the |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1253 # virtualenv or into the staging directory after setup() is invoked. |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1254 # The former is very brittle and can easily break setup(). Our hacking |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1255 # of the found modules routine has a similar result as copying the files |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1256 # manually. But it makes fewer assumptions about how py2exe works and |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1257 # is less brittle. |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1258 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1259 # This only catches virtualenvs made with virtualenv (as opposed to |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1260 # venv, which is likely what Python 3 uses). |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1261 py2exehacked = py2exeloaded and getattr(sys, 'real_prefix', None) is not None |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1262 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1263 if py2exehacked: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1264 from distutils.command.py2exe import py2exe as buildpy2exe |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1265 from py2exe.mf import Module as py2exemodule |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1266 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1267 class hgbuildpy2exe(buildpy2exe): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1268 def find_needed_modules(self, mf, files, modules): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1269 res = buildpy2exe.find_needed_modules(self, mf, files, modules) |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1270 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1271 # Replace virtualenv's distutils modules with the real ones. |
42174
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42172
diff
changeset
|
1272 modules = {} |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42172
diff
changeset
|
1273 for k, v in res.modules.items(): |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42172
diff
changeset
|
1274 if k != 'distutils' and not k.startswith('distutils.'): |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42172
diff
changeset
|
1275 modules[k] = v |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42172
diff
changeset
|
1276 |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42172
diff
changeset
|
1277 res.modules = modules |
42172
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1278 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1279 import opcode |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1280 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1281 distutilsreal = os.path.join( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1282 os.path.dirname(opcode.__file__), 'distutils' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1283 ) |
42172
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1284 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1285 for root, dirs, files in os.walk(distutilsreal): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1286 for f in sorted(files): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1287 if not f.endswith('.py'): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1288 continue |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1289 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1290 full = os.path.join(root, f) |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1291 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1292 parents = ['distutils'] |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1293 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1294 if root != distutilsreal: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1295 rel = os.path.relpath(root, distutilsreal) |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1296 parents.extend(p for p in rel.split(os.sep)) |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1297 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1298 modname = '%s.%s' % ('.'.join(parents), f[:-3]) |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1299 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1300 if modname.startswith('distutils.tests.'): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1301 continue |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1302 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1303 if modname.endswith('.__init__'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1304 modname = modname[: -len('.__init__')] |
42172
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1305 path = os.path.dirname(full) |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1306 else: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1307 path = None |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1308 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1309 res.modules[modname] = py2exemodule( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1310 modname, full, path=path |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1311 ) |
42172
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1312 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1313 if 'distutils' not in res.modules: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1314 raise SystemExit('could not find distutils modules') |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1315 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1316 return res |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1317 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1318 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1319 cmdclass = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1320 'build': hgbuild, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1321 'build_doc': hgbuilddoc, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1322 'build_mo': hgbuildmo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1323 'build_ext': hgbuildext, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1324 'build_py': hgbuildpy, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1325 'build_scripts': hgbuildscripts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1326 'build_hgextindex': buildhgextindex, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1327 'install': hginstall, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1328 'install_lib': hginstalllib, |
46243
63c923fd7fa8
setup: when possible, build and bundle man pages
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46233
diff
changeset
|
1329 'install_data': hginstalldata, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1330 'install_scripts': hginstallscripts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1331 'build_hgexe': buildhgexe, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1332 } |
3238
3dba9ec89164
Applied coding style to setup.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2402
diff
changeset
|
1333 |
42172
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1334 if py2exehacked: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1335 cmdclass['py2exe'] = hgbuildpy2exe |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1336 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1337 packages = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1338 'mercurial', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1339 'mercurial.cext', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1340 'mercurial.cffi', |
44026
44b03c0313aa
setup: include `defaultrc` in the package list
Matt Harbison <matt_harbison@yahoo.com>
parents:
43794
diff
changeset
|
1341 'mercurial.defaultrc', |
43632
2e017696181f
help: create packages for the help text
Matt Harbison <matt_harbison@yahoo.com>
parents:
43349
diff
changeset
|
1342 'mercurial.helptext', |
2e017696181f
help: create packages for the help text
Matt Harbison <matt_harbison@yahoo.com>
parents:
43349
diff
changeset
|
1343 'mercurial.helptext.internals', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1344 'mercurial.hgweb', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1345 'mercurial.interfaces', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1346 'mercurial.pure', |
45304
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45270
diff
changeset
|
1347 'mercurial.templates', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1348 'mercurial.thirdparty', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1349 'mercurial.thirdparty.attr', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1350 'mercurial.thirdparty.zope', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1351 'mercurial.thirdparty.zope.interface', |
46046
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45942
diff
changeset
|
1352 'mercurial.upgrade_utils', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1353 'mercurial.utils', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1354 'mercurial.revlogutils', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1355 'mercurial.testing', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1356 'hgext', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1357 'hgext.convert', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1358 'hgext.fsmonitor', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1359 'hgext.fastannotate', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1360 'hgext.fsmonitor.pywatchman', |
44477
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
44466
diff
changeset
|
1361 'hgext.git', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1362 'hgext.highlight', |
44413
4cabeea6d214
hgext: start building a library for simple hooks
Joerg Sonnenberger <joerg@bec.de>
parents:
44305
diff
changeset
|
1363 'hgext.hooklib', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1364 'hgext.infinitepush', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1365 'hgext.largefiles', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1366 'hgext.lfs', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1367 'hgext.narrow', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1368 'hgext.remotefilelog', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1369 'hgext.zeroconf', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1370 'hgext3rd', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1371 'hgdemandimport', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1372 ] |
45304
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45270
diff
changeset
|
1373 |
46136
3158522085f0
setup: exclude the git extension from py2 builds
Matt Harbison <matt_harbison@yahoo.com>
parents:
46046
diff
changeset
|
1374 # The pygit2 dependency dropped py2 support with the 1.0 release in Dec 2019. |
3158522085f0
setup: exclude the git extension from py2 builds
Matt Harbison <matt_harbison@yahoo.com>
parents:
46046
diff
changeset
|
1375 # Prior releases do not build at all on Windows, because Visual Studio 2008 |
3158522085f0
setup: exclude the git extension from py2 builds
Matt Harbison <matt_harbison@yahoo.com>
parents:
46046
diff
changeset
|
1376 # doesn't understand C 11. Older Linux releases are buggy. |
3158522085f0
setup: exclude the git extension from py2 builds
Matt Harbison <matt_harbison@yahoo.com>
parents:
46046
diff
changeset
|
1377 if sys.version_info[0] == 2: |
3158522085f0
setup: exclude the git extension from py2 builds
Matt Harbison <matt_harbison@yahoo.com>
parents:
46046
diff
changeset
|
1378 packages.remove('hgext.git') |
3158522085f0
setup: exclude the git extension from py2 builds
Matt Harbison <matt_harbison@yahoo.com>
parents:
46046
diff
changeset
|
1379 |
3158522085f0
setup: exclude the git extension from py2 builds
Matt Harbison <matt_harbison@yahoo.com>
parents:
46046
diff
changeset
|
1380 |
45304
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45270
diff
changeset
|
1381 for name in os.listdir(os.path.join('mercurial', 'templates')): |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45270
diff
changeset
|
1382 if name != '__pycache__' and os.path.isdir( |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45270
diff
changeset
|
1383 os.path.join('mercurial', 'templates', name) |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45270
diff
changeset
|
1384 ): |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45270
diff
changeset
|
1385 packages.append('mercurial.templates.%s' % name) |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45270
diff
changeset
|
1386 |
39613
96bffce40f5b
setup: exclude vendored futures package on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
39608
diff
changeset
|
1387 if sys.version_info[0] == 2: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1388 packages.extend( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1389 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1390 'mercurial.thirdparty.concurrent', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1391 'mercurial.thirdparty.concurrent.futures', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1392 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1393 ) |
10521
bde1bb250fc2
Do not use osutil.c with python 2.4 and Windows (issue1364)
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10400
diff
changeset
|
1394 |
42054
399ed3e86a49
py2exe: add workaround to allow bundling of hgext3rd.* extensions
Augie Fackler <augie@google.com>
parents:
41954
diff
changeset
|
1395 if 'HG_PY2EXE_EXTRA_INSTALL_PACKAGES' in os.environ: |
399ed3e86a49
py2exe: add workaround to allow bundling of hgext3rd.* extensions
Augie Fackler <augie@google.com>
parents:
41954
diff
changeset
|
1396 # py2exe can't cope with namespace packages very well, so we have to |
399ed3e86a49
py2exe: add workaround to allow bundling of hgext3rd.* extensions
Augie Fackler <augie@google.com>
parents:
41954
diff
changeset
|
1397 # install any hgext3rd.* extensions that we want in the final py2exe |
399ed3e86a49
py2exe: add workaround to allow bundling of hgext3rd.* extensions
Augie Fackler <augie@google.com>
parents:
41954
diff
changeset
|
1398 # image here. This is gross, but you gotta do what you gotta do. |
399ed3e86a49
py2exe: add workaround to allow bundling of hgext3rd.* extensions
Augie Fackler <augie@google.com>
parents:
41954
diff
changeset
|
1399 packages.extend(os.environ['HG_PY2EXE_EXTRA_INSTALL_PACKAGES'].split(' ')) |
399ed3e86a49
py2exe: add workaround to allow bundling of hgext3rd.* extensions
Augie Fackler <augie@google.com>
parents:
41954
diff
changeset
|
1400 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1401 common_depends = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1402 'mercurial/bitmanipulation.h', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1403 'mercurial/compat.h', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1404 'mercurial/cext/util.h', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1405 ] |
32211
c48583859e04
policy: add "cext" package which will host CPython extension modules
Yuya Nishihara <yuya@tcha.org>
parents:
32125
diff
changeset
|
1406 common_include_dirs = ['mercurial'] |
19724
2b2a2e858fb7
setup: check if mercurial/util.h has been modified
Wei, Elson <elson.wei@gmail.com>
parents:
18905
diff
changeset
|
1407 |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1408 common_cflags = [] |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1409 |
44605
960770add699
setup: relax -Werror for declaration-after-statement on Python 3.9
Augie Fackler <augie@google.com>
parents:
44588
diff
changeset
|
1410 # MSVC 2008 still needs declarations at the top of the scope, but Python 3.9 |
960770add699
setup: relax -Werror for declaration-after-statement on Python 3.9
Augie Fackler <augie@google.com>
parents:
44588
diff
changeset
|
1411 # makes declarations not at the top of a scope in the headers. |
960770add699
setup: relax -Werror for declaration-after-statement on Python 3.9
Augie Fackler <augie@google.com>
parents:
44588
diff
changeset
|
1412 if os.name != 'nt' and sys.version_info[1] < 9: |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1413 common_cflags = ['-Werror=declaration-after-statement'] |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1414 |
30408
ce9a3033c118
setup: test setproctitle before building osutil
Jun Wu <quark@fb.com>
parents:
30346
diff
changeset
|
1415 osutil_cflags = [] |
25073
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1416 osutil_ldflags = [] |
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1417 |
31561 | 1418 # platform specific macros |
31622
2243ba216f66
statfs: change Linux feature detection
Jun Wu <quark@fb.com>
parents:
31596
diff
changeset
|
1419 for plat, func in [('bsd', 'setproctitle')]: |
31561 | 1420 if re.search(plat, sys.platform) and hasfunction(new_compiler(), func): |
30408
ce9a3033c118
setup: test setproctitle before building osutil
Jun Wu <quark@fb.com>
parents:
30346
diff
changeset
|
1421 osutil_cflags.append('-DHAVE_%s' % func.upper()) |
ce9a3033c118
setup: test setproctitle before building osutil
Jun Wu <quark@fb.com>
parents:
30346
diff
changeset
|
1422 |
31596
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31562
diff
changeset
|
1423 for plat, macro, code in [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1424 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1425 'bsd|darwin', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1426 'BSD_STATFS', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1427 ''' |
31596
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31562
diff
changeset
|
1428 #include <sys/param.h> |
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31562
diff
changeset
|
1429 #include <sys/mount.h> |
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31562
diff
changeset
|
1430 int main() { struct statfs s; return sizeof(s.f_fstypename); } |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1431 ''', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1432 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1433 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1434 'linux', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1435 'LINUX_STATFS', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1436 ''' |
31622
2243ba216f66
statfs: change Linux feature detection
Jun Wu <quark@fb.com>
parents:
31596
diff
changeset
|
1437 #include <linux/magic.h> |
2243ba216f66
statfs: change Linux feature detection
Jun Wu <quark@fb.com>
parents:
31596
diff
changeset
|
1438 #include <sys/vfs.h> |
2243ba216f66
statfs: change Linux feature detection
Jun Wu <quark@fb.com>
parents:
31596
diff
changeset
|
1439 int main() { struct statfs s; return sizeof(s.f_type); } |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1440 ''', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1441 ), |
31596
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31562
diff
changeset
|
1442 ]: |
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31562
diff
changeset
|
1443 if re.search(plat, sys.platform) and cancompile(new_compiler(), code): |
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31562
diff
changeset
|
1444 osutil_cflags.append('-DHAVE_%s' % macro) |
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31562
diff
changeset
|
1445 |
25073
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1446 if sys.platform == 'darwin': |
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1447 osutil_ldflags += ['-framework', 'ApplicationServices'] |
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1448 |
44692
539490756a72
setup: link osutil.so to libsocket on Solaris/illumos (issue6299)
Alexander Pyhalov <apyhalov@gmail.com>
parents:
44603
diff
changeset
|
1449 if sys.platform == 'sunos5': |
539490756a72
setup: link osutil.so to libsocket on Solaris/illumos (issue6299)
Alexander Pyhalov <apyhalov@gmail.com>
parents:
44603
diff
changeset
|
1450 osutil_ldflags += ['-lsocket'] |
539490756a72
setup: link osutil.so to libsocket on Solaris/illumos (issue6299)
Alexander Pyhalov <apyhalov@gmail.com>
parents:
44603
diff
changeset
|
1451 |
36675 | 1452 xdiff_srcs = [ |
1453 'mercurial/thirdparty/xdiff/xdiffi.c', | |
1454 'mercurial/thirdparty/xdiff/xprepare.c', | |
1455 'mercurial/thirdparty/xdiff/xutils.c', | |
1456 ] | |
1457 | |
1458 xdiff_headers = [ | |
1459 'mercurial/thirdparty/xdiff/xdiff.h', | |
1460 'mercurial/thirdparty/xdiff/xdiffi.h', | |
1461 'mercurial/thirdparty/xdiff/xinclude.h', | |
1462 'mercurial/thirdparty/xdiff/xmacros.h', | |
1463 'mercurial/thirdparty/xdiff/xprepare.h', | |
1464 'mercurial/thirdparty/xdiff/xtypes.h', | |
1465 'mercurial/thirdparty/xdiff/xutils.h', | |
1466 ] | |
1467 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1468 |
40966
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1469 class RustCompilationError(CCompilerError): |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1470 """Exception class for Rust compilation errors.""" |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1471 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1472 |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1473 class RustExtension(Extension): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1474 """Base classes for concrete Rust Extension classes.""" |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1475 |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1476 rusttargetdir = os.path.join('rust', 'target', 'release') |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1477 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1478 def __init__( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1479 self, mpath, sources, rustlibname, subcrate, py3_features=None, **kw |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1480 ): |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1481 Extension.__init__(self, mpath, sources, **kw) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1482 srcdir = self.rustsrcdir = os.path.join('rust', subcrate) |
40985
4277e20cfec4
rust-cpython: build and support for Python3
Georges Racinet <gracinet@anybox.fr>
parents:
40980
diff
changeset
|
1483 self.py3_features = py3_features |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1484 |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1485 # adding Rust source and control files to depends so that the extension |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1486 # gets rebuilt if they've changed |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1487 self.depends.append(os.path.join(srcdir, 'Cargo.toml')) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1488 cargo_lock = os.path.join(srcdir, 'Cargo.lock') |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1489 if os.path.exists(cargo_lock): |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1490 self.depends.append(cargo_lock) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1491 for dirpath, subdir, fnames in os.walk(os.path.join(srcdir, 'src')): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1492 self.depends.extend( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1493 os.path.join(dirpath, fname) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1494 for fname in fnames |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1495 if os.path.splitext(fname)[1] == '.rs' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1496 ) |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1497 |
42457
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1498 @staticmethod |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1499 def rustdylibsuffix(): |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1500 """Return the suffix for shared libraries produced by rustc. |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1501 |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1502 See also: https://doc.rust-lang.org/reference/linkage.html |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1503 """ |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1504 if sys.platform == 'darwin': |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1505 return '.dylib' |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1506 elif os.name == 'nt': |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1507 return '.dll' |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1508 else: |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1509 return '.so' |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1510 |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1511 def rustbuild(self): |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1512 env = os.environ.copy() |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1513 if 'HGTEST_RESTOREENV' in env: |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1514 # Mercurial tests change HOME to a temporary directory, |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1515 # but, if installed with rustup, the Rust toolchain needs |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1516 # HOME to be correct (otherwise the 'no default toolchain' |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1517 # error message is issued and the build fails). |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1518 # This happens currently with test-hghave.t, which does |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1519 # invoke this build. |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1520 |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1521 # Unix only fix (os.path.expanduser not really reliable if |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1522 # HOME is shadowed like this) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1523 import pwd |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1524 |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1525 env['HOME'] = pwd.getpwuid(os.getuid()).pw_dir |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1526 |
44846
47787a48f469
setup: stop asking cargo to spam
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44742
diff
changeset
|
1527 cargocmd = ['cargo', 'rustc', '--release'] |
44305
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1528 |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1529 feature_flags = [] |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1530 |
40985
4277e20cfec4
rust-cpython: build and support for Python3
Georges Racinet <gracinet@anybox.fr>
parents:
40980
diff
changeset
|
1531 if sys.version_info[0] == 3 and self.py3_features is not None: |
44305
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1532 feature_flags.append(self.py3_features) |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1533 cargocmd.append('--no-default-features') |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1534 |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1535 rust_features = env.get("HG_RUST_FEATURES") |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1536 if rust_features: |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1537 feature_flags.append(rust_features) |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1538 |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1539 cargocmd.extend(('--features', " ".join(feature_flags))) |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Raphaël Gomès <rgomes@octobus.net>
parents:
44240
diff
changeset
|
1540 |
42459
85041e2b69c7
rust: switched to 'cargo rustc' in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42458
diff
changeset
|
1541 cargocmd.append('--') |
42458
8ee0fdf3b087
rust-cpython: fix build for MacOSX
Georges Racinet <georges.racinet@octobus.net>
parents:
42457
diff
changeset
|
1542 if sys.platform == 'darwin': |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1543 cargocmd.extend( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1544 ("-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup") |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1545 ) |
40966
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1546 try: |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1547 subprocess.check_call(cargocmd, env=env, cwd=self.rustsrcdir) |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1548 except OSError as exc: |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1549 if exc.errno == errno.ENOENT: |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1550 raise RustCompilationError("Cargo not found") |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1551 elif exc.errno == errno.EACCES: |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1552 raise RustCompilationError( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1553 "Cargo found, but permisssion to execute it is denied" |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1554 ) |
40966
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1555 else: |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1556 raise |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1557 except subprocess.CalledProcessError: |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1558 raise RustCompilationError( |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40859
diff
changeset
|
1559 "Cargo failed. Working directory: %r, " |
42074
59b1bdf85b1a
setup: fix a possible NameError on rust build
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
42065
diff
changeset
|
1560 "command: %r, environment: %r" |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1561 % (self.rustsrcdir, cargocmd, env) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1562 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1563 |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40121
diff
changeset
|
1564 |
40967
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1565 class RustStandaloneExtension(RustExtension): |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1566 def __init__(self, pydottedname, rustcrate, dylibname, **kw): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1567 RustExtension.__init__( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1568 self, pydottedname, [], dylibname, rustcrate, **kw |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1569 ) |
40967
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1570 self.dylibname = dylibname |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1571 |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1572 def build(self, target_dir): |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1573 self.rustbuild() |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1574 target = [target_dir] |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1575 target.extend(self.name.split('.')) |
42457
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42453
diff
changeset
|
1576 target[-1] += DYLIB_SUFFIX |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1577 shutil.copy2( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1578 os.path.join( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1579 self.rusttargetdir, self.dylibname + self.rustdylibsuffix() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1580 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1581 os.path.join(*target), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1582 ) |
40967
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1583 |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1584 |
10000
16f49d671c7f
setup: cleanup coding style
Martin Geisler <mg@lazybytes.net>
parents:
9999
diff
changeset
|
1585 extmodules = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1586 Extension( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1587 'mercurial.cext.base85', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1588 ['mercurial/cext/base85.c'], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1589 include_dirs=common_include_dirs, |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1590 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1591 depends=common_depends, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1592 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1593 Extension( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1594 'mercurial.cext.bdiff', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1595 ['mercurial/bdiff.c', 'mercurial/cext/bdiff.c'] + xdiff_srcs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1596 include_dirs=common_include_dirs, |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1597 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1598 depends=common_depends + ['mercurial/bdiff.h'] + xdiff_headers, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1599 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1600 Extension( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1601 'mercurial.cext.mpatch', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1602 ['mercurial/mpatch.c', 'mercurial/cext/mpatch.c'], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1603 include_dirs=common_include_dirs, |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1604 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1605 depends=common_depends, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1606 ), |
44466
79ac59d3f73d
setup-rust: remove the legacy 'direct-ffi' variant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44452
diff
changeset
|
1607 Extension( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1608 'mercurial.cext.parsers', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1609 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1610 'mercurial/cext/charencode.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1611 'mercurial/cext/dirs.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1612 'mercurial/cext/manifest.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1613 'mercurial/cext/parsers.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1614 'mercurial/cext/pathencode.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1615 'mercurial/cext/revlog.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1616 ], |
40967
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1617 include_dirs=common_include_dirs, |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1618 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1619 depends=common_depends |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1620 + [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1621 'mercurial/cext/charencode.h', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1622 'mercurial/cext/revlog.h', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1623 ], |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1624 ), |
37180
922b3fae9c7d
setup: register zope.interface packages and compile C extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37130
diff
changeset
|
1625 Extension( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1626 'mercurial.cext.osutil', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1627 ['mercurial/cext/osutil.c'], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1628 include_dirs=common_include_dirs, |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1629 extra_compile_args=common_cflags + osutil_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1630 extra_link_args=osutil_ldflags, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1631 depends=common_depends, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1632 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1633 Extension( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1634 'mercurial.thirdparty.zope.interface._zope_interface_coptimizations', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1635 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1636 'mercurial/thirdparty/zope/interface/_zope_interface_coptimizations.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1637 ], |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1638 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1639 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1640 Extension( |
44058
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44026
diff
changeset
|
1641 'mercurial.thirdparty.sha1dc', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44026
diff
changeset
|
1642 [ |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44026
diff
changeset
|
1643 'mercurial/thirdparty/sha1dc/cext.c', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44026
diff
changeset
|
1644 'mercurial/thirdparty/sha1dc/lib/sha1.c', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44026
diff
changeset
|
1645 'mercurial/thirdparty/sha1dc/lib/ubc_check.c', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44026
diff
changeset
|
1646 ], |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1647 extra_compile_args=common_cflags, |
44058
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44026
diff
changeset
|
1648 ), |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44026
diff
changeset
|
1649 Extension( |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1650 'hgext.fsmonitor.pywatchman.bser', |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1651 ['hgext/fsmonitor/pywatchman/bser.c'], |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1652 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1653 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1654 RustStandaloneExtension( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1655 'mercurial.rustext', 'hg-cpython', 'librusthg', py3_features='python3' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1656 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1657 ] |
5396
5105b119edd2
Add osutil module, containing a listdir function.
Bryan O'Sullivan <bos@serpentine.com>
parents:
5197
diff
changeset
|
1658 |
40967
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40966
diff
changeset
|
1659 |
30436
788ea4ac4388
setup: compile zstd C extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30408
diff
changeset
|
1660 sys.path.insert(0, 'contrib/python-zstandard') |
788ea4ac4388
setup: compile zstd C extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30408
diff
changeset
|
1661 import setup_zstd |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1662 |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1663 zstd = setup_zstd.get_c_extension( |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1664 name='mercurial.zstd', root=os.path.abspath(os.path.dirname(__file__)) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1665 ) |
44588
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1666 zstd.extra_compile_args += common_cflags |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44487
diff
changeset
|
1667 extmodules.append(zstd) |
30436
788ea4ac4388
setup: compile zstd C extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30408
diff
changeset
|
1668 |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1669 try: |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1670 from distutils import cygwinccompiler |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1671 |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1672 # the -mno-cygwin option has been deprecated for years |
33669
7686cbb0ba41
setup: fix installing in a mingw environment
Mike Hommey <mh@glandium.org>
parents:
33600
diff
changeset
|
1673 mingw32compilerclass = cygwinccompiler.Mingw32CCompiler |
17121
d13f47c800fd
setup: disable -mno-cygwin if building under mingw32
Bryan O'Sullivan <bryano@fb.com>
parents:
17061
diff
changeset
|
1674 |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1675 class HackedMingw32CCompiler(cygwinccompiler.Mingw32CCompiler): |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1676 def __init__(self, *args, **kwargs): |
33669
7686cbb0ba41
setup: fix installing in a mingw environment
Mike Hommey <mh@glandium.org>
parents:
33600
diff
changeset
|
1677 mingw32compilerclass.__init__(self, *args, **kwargs) |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1678 for i in 'compiler compiler_so linker_exe linker_so'.split(): |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1679 try: |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1680 getattr(self, i).remove('-mno-cygwin') |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1681 except ValueError: |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1682 pass |
17121
d13f47c800fd
setup: disable -mno-cygwin if building under mingw32
Bryan O'Sullivan <bryano@fb.com>
parents:
17061
diff
changeset
|
1683 |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1684 cygwinccompiler.Mingw32CCompiler = HackedMingw32CCompiler |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1685 except ImportError: |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1686 # the cygwinccompiler package is not available on some Python |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1687 # distributions like the ones from the optware project for Synology |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1688 # DiskStation boxes |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1689 class HackedMingw32CCompiler(object): |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1690 pass |
17121
d13f47c800fd
setup: disable -mno-cygwin if building under mingw32
Bryan O'Sullivan <bryano@fb.com>
parents:
17061
diff
changeset
|
1691 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1692 |
32782
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1693 if os.name == 'nt': |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1694 # Allow compiler/linker flags to be added to Visual Studio builds. Passing |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1695 # extra_link_args to distutils.extensions.Extension() doesn't have any |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1696 # effect. |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1697 from distutils import msvccompiler |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1698 |
33669
7686cbb0ba41
setup: fix installing in a mingw environment
Mike Hommey <mh@glandium.org>
parents:
33600
diff
changeset
|
1699 msvccompilerclass = msvccompiler.MSVCCompiler |
32782
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1700 |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1701 class HackedMSVCCompiler(msvccompiler.MSVCCompiler): |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1702 def initialize(self): |
33669
7686cbb0ba41
setup: fix installing in a mingw environment
Mike Hommey <mh@glandium.org>
parents:
33600
diff
changeset
|
1703 msvccompilerclass.initialize(self) |
32782
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1704 # "warning LNK4197: export 'func' specified multiple times" |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1705 self.ldflags_shared.append('/ignore:4197') |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1706 self.ldflags_shared_debug.append('/ignore:4197') |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1707 |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1708 msvccompiler.MSVCCompiler = HackedMSVCCompiler |
9a4adc76c88a
setup: avoid linker warnings on Windows about multiple export specifications
Matt Harbison <matt_harbison@yahoo.com>
parents:
32725
diff
changeset
|
1709 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1710 packagedata = { |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1711 'mercurial': [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1712 'locale/*/LC_MESSAGES/hg.mo', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1713 'dummycert.pem', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1714 ], |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1715 'mercurial.defaultrc': [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1716 '*.rc', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1717 ], |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1718 'mercurial.helptext': [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1719 '*.txt', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1720 ], |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1721 'mercurial.helptext.internals': [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1722 '*.txt', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45939
diff
changeset
|
1723 ], |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1724 } |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1725 |
9999
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1726 |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1727 def ordinarypath(p): |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1728 return p and p[0] != '.' and p[-1] != '~' |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1729 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1730 |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
1731 for root in ('templates',): |
9999
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1732 for curdir, dirs, files in os.walk(os.path.join('mercurial', root)): |
45305
e2320bb7a99f
packaging: include templates with their package as key in package_data
Martin von Zweigbergk <martinvonz@google.com>
parents:
45304
diff
changeset
|
1733 packagename = curdir.replace(os.sep, '.') |
e2320bb7a99f
packaging: include templates with their package as key in package_data
Martin von Zweigbergk <martinvonz@google.com>
parents:
45304
diff
changeset
|
1734 packagedata[packagename] = list(filter(ordinarypath, files)) |
9999
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1735 |
7648
02e358a3a8a7
i18n: let Makefile generate i18n/hg.pot
Martin Geisler <mg@daimi.au.dk>
parents:
7647
diff
changeset
|
1736 datafiles = [] |
31316
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31308
diff
changeset
|
1737 |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31308
diff
changeset
|
1738 # distutils expects version to be str/unicode. Converting it to |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31308
diff
changeset
|
1739 # unicode on Python 2 still works because it won't contain any |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31308
diff
changeset
|
1740 # non-ascii bytes and will be implicitly converted back to bytes |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31308
diff
changeset
|
1741 # when operated on. |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31308
diff
changeset
|
1742 assert isinstance(version, bytes) |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31308
diff
changeset
|
1743 setupversion = version.decode('ascii') |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31308
diff
changeset
|
1744 |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1745 extra = {} |
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1746 |
41851
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1747 py2exepackages = [ |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1748 'hgdemandimport', |
41918
5d9fdc9b0178
setup: include hgext3rd package in py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41917
diff
changeset
|
1749 'hgext3rd', |
41851
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1750 'hgext', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1751 'email', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1752 # implicitly imported per module policy |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1753 # (cffi wouldn't be used as a frozen exe) |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1754 'mercurial.cext', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1755 #'mercurial.cffi', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1756 'mercurial.pure', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1757 ] |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1758 |
41916
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1759 py2exeexcludes = [] |
41954
e5ac701e5b7c
setup: exclude crypt32.dll in py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41953
diff
changeset
|
1760 py2exedllexcludes = ['crypt32.dll'] |
41916
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1761 |
33600
47829b89c8c6
setup: silence warning of unknown option python_requires on distutils
Yuya Nishihara <yuya@tcha.org>
parents:
33599
diff
changeset
|
1762 if issetuptools: |
47829b89c8c6
setup: silence warning of unknown option python_requires on distutils
Yuya Nishihara <yuya@tcha.org>
parents:
33599
diff
changeset
|
1763 extra['python_requires'] = supportedpy |
41851
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1764 |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1765 if py2exeloaded: |
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1766 extra['console'] = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1767 { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1768 'script': 'hg', |
44170
0ab651b5f77c
copyright: update to 2020
Matt Harbison <matt_harbison@yahoo.com>
parents:
44115
diff
changeset
|
1769 'copyright': 'Copyright (C) 2005-2020 Matt Mackall and others', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1770 'product_version': version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1771 } |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1772 ] |
41917
ac32e04e887f
setup: properly install build_hgextindex for py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41916
diff
changeset
|
1773 # Sub command of 'build' because 'py2exe' does not handle sub_commands. |
ac32e04e887f
setup: properly install build_hgextindex for py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41916
diff
changeset
|
1774 # Need to override hgbuild because it has a private copy of |
ac32e04e887f
setup: properly install build_hgextindex for py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41916
diff
changeset
|
1775 # build.sub_commands. |
ac32e04e887f
setup: properly install build_hgextindex for py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41916
diff
changeset
|
1776 hgbuild.sub_commands.insert(0, ('build_hgextindex', None)) |
25409
95e042d77a5f
wix: move library.zip and all *.pyd into a lib/ folder
Steve Borho <steve@borho.org>
parents:
25089
diff
changeset
|
1777 # put dlls in sub directory so that they won't pollute PATH |
95e042d77a5f
wix: move library.zip and all *.pyd into a lib/ folder
Steve Borho <steve@borho.org>
parents:
25089
diff
changeset
|
1778 extra['zipfile'] = 'lib/library.zip' |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1779 |
41916
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1780 # We allow some configuration to be supplemented via environment |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1781 # variables. This is better than setup.cfg files because it allows |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1782 # supplementing configs instead of replacing them. |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1783 extrapackages = os.environ.get('HG_PY2EXE_EXTRA_PACKAGES') |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1784 if extrapackages: |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1785 py2exepackages.extend(extrapackages.split(' ')) |
41851
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1786 |
41916
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1787 excludes = os.environ.get('HG_PY2EXE_EXTRA_EXCLUDES') |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1788 if excludes: |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1789 py2exeexcludes.extend(excludes.split(' ')) |
41851
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1790 |
41916
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1791 dllexcludes = os.environ.get('HG_PY2EXE_EXTRA_DLL_EXCLUDES') |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1792 if dllexcludes: |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41854
diff
changeset
|
1793 py2exedllexcludes.extend(dllexcludes.split(' ')) |
41851
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41850
diff
changeset
|
1794 |
45132
9d532329ee97
extensions: make `hg help extensions` list disabled extensions with PyOxidizer
Martin von Zweigbergk <martinvonz@google.com>
parents:
44893
diff
changeset
|
1795 if os.environ.get('PYOXIDIZER'): |
9d532329ee97
extensions: make `hg help extensions` list disabled extensions with PyOxidizer
Martin von Zweigbergk <martinvonz@google.com>
parents:
44893
diff
changeset
|
1796 hgbuild.sub_commands.insert(0, ('build_hgextindex', None)) |
9d532329ee97
extensions: make `hg help extensions` list disabled extensions with PyOxidizer
Martin von Zweigbergk <martinvonz@google.com>
parents:
44893
diff
changeset
|
1797 |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1798 if os.name == 'nt': |
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1799 # Windows binary file versions for exe/dll files must have the |
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1800 # form W.X.Y.Z, where W,X,Y,Z are numbers in the range 0..65535 |
40383
a9e303dcd1e1
py3: stringify setupversion on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40273
diff
changeset
|
1801 setupversion = setupversion.split(r'+', 1)[0] |
7648
02e358a3a8a7
i18n: let Makefile generate i18n/hg.pot
Martin Geisler <mg@daimi.au.dk>
parents:
7647
diff
changeset
|
1802 |
13583
e42d18538e1d
fix compiling of extensions for OS X and XCode 4.0
Alexander Solovyov <alexander@solovyov.net>
parents:
13400
diff
changeset
|
1803 if sys.platform == 'darwin' and os.path.exists('/usr/bin/xcodebuild'): |
33119
176030f695ca
setup: fix runcmd() usage on darwin
Adam Simpkins <simpkins@fb.com>
parents:
33117
diff
changeset
|
1804 version = runcmd(['/usr/bin/xcodebuild', '-version'], {})[1].splitlines() |
16187
82ce91a9fd94
setup: handle output from Apple's Xcode 4.3 better (issue3277)
Greg Ward <greg@gerg.ca>
parents:
15527
diff
changeset
|
1805 if version: |
16209
5536770b3c88
setup.py: don't call splitlines twice on the output of xcodebuild (issue3277)
Brendan Cully <brendan@kublai.com>
parents:
16187
diff
changeset
|
1806 version = version[0] |
25043
facaceeb85ac
setup: decode xcode version number on python3
Augie Fackler <augie@google.com>
parents:
25009
diff
changeset
|
1807 if sys.version_info[0] == 3: |
facaceeb85ac
setup: decode xcode version number on python3
Augie Fackler <augie@google.com>
parents:
25009
diff
changeset
|
1808 version = version.decode('utf-8') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1809 xcode4 = version.startswith('Xcode') and StrictVersion( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1810 version.split()[1] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1811 ) >= StrictVersion('4.0') |
21558
8b482d49563b
setup: make Xcode 5.1 check less specific
Matt Mackall <mpm@selenic.com>
parents:
21229
diff
changeset
|
1812 xcode51 = re.match(r'^Xcode\s+5\.1', version) is not None |
16187
82ce91a9fd94
setup: handle output from Apple's Xcode 4.3 better (issue3277)
Greg Ward <greg@gerg.ca>
parents:
15527
diff
changeset
|
1813 else: |
82ce91a9fd94
setup: handle output from Apple's Xcode 4.3 better (issue3277)
Greg Ward <greg@gerg.ca>
parents:
15527
diff
changeset
|
1814 # xcodebuild returns empty on OS X Lion with XCode 4.3 not |
82ce91a9fd94
setup: handle output from Apple's Xcode 4.3 better (issue3277)
Greg Ward <greg@gerg.ca>
parents:
15527
diff
changeset
|
1815 # installed, but instead with only command-line tools. Assume |
82ce91a9fd94
setup: handle output from Apple's Xcode 4.3 better (issue3277)
Greg Ward <greg@gerg.ca>
parents:
15527
diff
changeset
|
1816 # that only happens on >= Lion, thus no PPC support. |
82ce91a9fd94
setup: handle output from Apple's Xcode 4.3 better (issue3277)
Greg Ward <greg@gerg.ca>
parents:
15527
diff
changeset
|
1817 xcode4 = True |
21038
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1818 xcode51 = False |
16187
82ce91a9fd94
setup: handle output from Apple's Xcode 4.3 better (issue3277)
Greg Ward <greg@gerg.ca>
parents:
15527
diff
changeset
|
1819 |
21038
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1820 # XCode 4.0 dropped support for ppc architecture, which is hardcoded in |
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1821 # distutils.sysconfig |
16187
82ce91a9fd94
setup: handle output from Apple's Xcode 4.3 better (issue3277)
Greg Ward <greg@gerg.ca>
parents:
15527
diff
changeset
|
1822 if xcode4: |
14324
d3a49a52f117
Hardcoding ARCHFLAGS breaks the build against fink's python
Brendan Cully <brendan@kublai.com>
parents:
14295
diff
changeset
|
1823 os.environ['ARCHFLAGS'] = '' |
13583
e42d18538e1d
fix compiling of extensions for OS X and XCode 4.0
Alexander Solovyov <alexander@solovyov.net>
parents:
13400
diff
changeset
|
1824 |
21038
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1825 # XCode 5.1 changes clang such that it now fails to compile if the |
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1826 # -mno-fused-madd flag is passed, but the version of Python shipped with |
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1827 # OS X 10.9 Mavericks includes this flag. This causes problems in all |
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1828 # C extension modules, and a bug has been filed upstream at |
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1829 # http://bugs.python.org/issue21244. We also need to patch this here |
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1830 # so Mercurial can continue to compile in the meantime. |
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1831 if xcode51: |
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1832 cflags = get_config_var('CFLAGS') |
21839
f266be73f764
setup: fixed for Pythons which don't have a CFLAGS
Alex Gaynor <alex.gaynor@gmail.com>
parents:
21229
diff
changeset
|
1833 if cflags and re.search(r'-mno-fused-madd\b', cflags) is not None: |
21038
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1834 os.environ['CFLAGS'] = ( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1835 os.environ.get('CFLAGS', '') + ' -Qunused-arguments' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1836 ) |
21038
440fbe52b4a8
setup.py: fix C extension compilation issue with OS X 10.9 and Xcode 5.1
Kent Frazier <kentfrazier@gmail.com>
parents:
20697
diff
changeset
|
1837 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1838 setup( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1839 name='mercurial', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1840 version=setupversion, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1841 author='Matt Mackall and many others', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1842 author_email='mercurial@mercurial-scm.org', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1843 url='https://mercurial-scm.org/', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1844 download_url='https://mercurial-scm.org/release/', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1845 description=( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1846 'Fast scalable distributed SCM (revision control, version ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1847 'control) system' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1848 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1849 long_description=( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1850 'Mercurial is a distributed SCM tool written in Python.' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1851 ' It is used by a number of large projects that require' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1852 ' fast, reliable distributed revision control, such as ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1853 'Mozilla.' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1854 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1855 license='GNU GPLv2 or any later version', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1856 classifiers=[ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1857 'Development Status :: 6 - Mature', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1858 'Environment :: Console', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1859 'Intended Audience :: Developers', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1860 'Intended Audience :: System Administrators', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1861 'License :: OSI Approved :: GNU General Public License (GPL)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1862 'Natural Language :: Danish', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1863 'Natural Language :: English', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1864 'Natural Language :: German', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1865 'Natural Language :: Italian', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1866 'Natural Language :: Japanese', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1867 'Natural Language :: Portuguese (Brazilian)', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1868 'Operating System :: Microsoft :: Windows', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1869 'Operating System :: OS Independent', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1870 'Operating System :: POSIX', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1871 'Programming Language :: C', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1872 'Programming Language :: Python', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1873 'Topic :: Software Development :: Version Control', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1874 ], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1875 scripts=scripts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1876 packages=packages, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1877 ext_modules=extmodules, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1878 data_files=datafiles, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1879 package_data=packagedata, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1880 cmdclass=cmdclass, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1881 distclass=hgdist, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1882 options={ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1883 'py2exe': { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1884 'bundle_files': 3, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1885 'dll_excludes': py2exedllexcludes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1886 'excludes': py2exeexcludes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1887 'packages': py2exepackages, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1888 }, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1889 'bdist_mpkg': { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1890 'zipdist': False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1891 'license': 'COPYING', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1892 'readme': 'contrib/packaging/macosx/Readme.html', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1893 'welcome': 'contrib/packaging/macosx/Welcome.html', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1894 }, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1895 }, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1896 **extra |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1897 ) |