Mercurial > public > mercurial-scm > hg-stable
annotate setup.py @ 52687:e5aadff6cb7d
setup: skip building rust extensions on Windows
Without this, the build process in the next commit would have started trying
(and failing) to copy the associated module.
Not sure why this worked before. I'd like to think there's
a better way to conditionalize this inside the extension declaration.
[snip]
done updating hg.exe's manifest
copying build\lib.win-amd64-cpython-39\mercurial\cext\base85.cp39-win_amd64.pyd -> mercurial\cext
copying build\lib.win-amd64-cpython-39\mercurial\cext\bdiff.cp39-win_amd64.pyd -> mercurial\cext
copying build\lib.win-amd64-cpython-39\mercurial\cext\mpatch.cp39-win_amd64.pyd -> mercurial\cext
copying build\lib.win-amd64-cpython-39\mercurial\cext\parsers.cp39-win_amd64.pyd -> mercurial\cext
copying build\lib.win-amd64-cpython-39\mercurial\cext\osutil.cp39-win_amd64.pyd -> mercurial\cext
copying build\lib.win-amd64-cpython-39\mercurial\thirdparty\sha1dc.cp39-win_amd64.pyd -> mercurial\thirdparty
copying build\lib.win-amd64-cpython-39\hgext\fsmonitor\pywatchman\bser.cp39-win_amd64.pyd -> hgext\fsmonitor\pywatchman
error: can't copy 'build\lib.win-amd64-cpython-39\mercurial\rustext.cp39-win_amd64.pyd': doesn't exist or not a regular file
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 30 Dec 2024 20:56:19 -0500 |
parents | 958d5c998505 |
children | 25bb409da058 |
rev | line source |
---|---|
575 | 1 # This is the mercurial setup script. |
52350
737e169b8948
setup_py: first tiny cleanup
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52348
diff
changeset
|
2 |
52356
dd8e7d4fe8c3
setup_py: imports standard lib at the top
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52355
diff
changeset
|
3 import ctypes |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
4 import logging |
33591
ee11d18fcd3c
setup: fix mistake that prevented Python 3 from being excluded
Augie Fackler <augie@google.com>
parents:
33589
diff
changeset
|
5 import os |
52356
dd8e7d4fe8c3
setup_py: imports standard lib at the top
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52355
diff
changeset
|
6 import re |
dd8e7d4fe8c3
setup_py: imports standard lib at the top
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52355
diff
changeset
|
7 import shutil |
dd8e7d4fe8c3
setup_py: imports standard lib at the top
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52355
diff
changeset
|
8 import ssl |
dd8e7d4fe8c3
setup_py: imports standard lib at the top
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52355
diff
changeset
|
9 import stat |
dd8e7d4fe8c3
setup_py: imports standard lib at the top
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52355
diff
changeset
|
10 import subprocess |
52350
737e169b8948
setup_py: first tiny cleanup
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52348
diff
changeset
|
11 import sys |
42473
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
12 import sysconfig |
52356
dd8e7d4fe8c3
setup_py: imports standard lib at the top
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52355
diff
changeset
|
13 import tempfile |
dd8e7d4fe8c3
setup_py: imports standard lib at the top
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52355
diff
changeset
|
14 import time |
44933
4c53c12b92d5
setup: require a Python version with modern SSL features
Manuel Jacob <me@manueljacob.de>
parents:
44911
diff
changeset
|
15 |
52352
5d81f4b7e024
setup_py: simplify ssl check
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52351
diff
changeset
|
16 if not ssl.HAS_TLSv1_2: |
44952
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44933
diff
changeset
|
17 error = """ |
52348
a820a7a1fce0
setup: require TLS 1.2 support from the Python interpreter (BC)
Matt Harbison <matt_harbison@yahoo.com>
parents:
52213
diff
changeset
|
18 The `ssl` module does not advertise support for TLS 1.2. |
44952
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44933
diff
changeset
|
19 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:
44933
diff
changeset
|
20 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:
44933
diff
changeset
|
21 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:
44933
diff
changeset
|
22 """ |
48918
1371c18e467d
setup: remove printf trampoline
Augie Fackler <augie@google.com>
parents:
48917
diff
changeset
|
23 print(error, file=sys.stderr) |
44952
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44933
diff
changeset
|
24 sys.exit(1) |
95c832849955
setup: require that Python has TLS 1.1 or TLS 1.2
Manuel Jacob <me@manueljacob.de>
parents:
44933
diff
changeset
|
25 |
48921
3491c450dcae
setup: remove Python 2 support code for determining dylib suffix
Augie Fackler <augie@google.com>
parents:
48920
diff
changeset
|
26 DYLIB_SUFFIX = sysconfig.get_config_vars()['EXT_SUFFIX'] |
42473
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
27 |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
28 # Solaris Python packaging brain damage |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
29 try: |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
30 import hashlib |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
31 |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
32 sha = hashlib.sha1() |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
33 except ImportError: |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
34 try: |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
35 import sha |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
36 |
52355
ad23dc96e7d6
setup_py: simpler silence warnings unused-import
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52354
diff
changeset
|
37 del sha # silence unused import warning |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
38 except ImportError: |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
39 raise SystemExit( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
40 "Couldn't import standard hashlib (incomplete Python install)." |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
41 ) |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
42 |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
43 try: |
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
44 import zlib |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
45 |
52355
ad23dc96e7d6
setup_py: simpler silence warnings unused-import
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52354
diff
changeset
|
46 del zlib # silence unused import warning |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16683
diff
changeset
|
47 except ImportError: |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
48 raise SystemExit( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
49 "Couldn't import standard zlib (incomplete Python install)." |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
50 ) |
7558
dc211ad8d681
setup: warn about missing standard Python components
Matt Mackall <mpm@selenic.com>
parents:
7081
diff
changeset
|
51 |
10761
16a13fdb4b36
setup: fail if bz2 is not available
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10521
diff
changeset
|
52 try: |
52353
7606466300c1
setup_py: remove IronPython Python 2.7 specific code
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52352
diff
changeset
|
53 import bz2 |
14295
bb7e3b3e6e11
setup.py: workaround for missing bz2 module in IronPython
Zachary Gramana <zgramana@pottsconsultinggroup.com>
parents:
14243
diff
changeset
|
54 |
52355
ad23dc96e7d6
setup_py: simpler silence warnings unused-import
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52354
diff
changeset
|
55 del bz2 # silence unused import warning |
52353
7606466300c1
setup_py: remove IronPython Python 2.7 specific code
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52352
diff
changeset
|
56 except ImportError: |
7606466300c1
setup_py: remove IronPython Python 2.7 specific code
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52352
diff
changeset
|
57 raise SystemExit( |
7606466300c1
setup_py: remove IronPython Python 2.7 specific code
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52352
diff
changeset
|
58 "Couldn't import standard bz2 (incomplete Python install)." |
7606466300c1
setup_py: remove IronPython Python 2.7 specific code
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52352
diff
changeset
|
59 ) |
10761
16a13fdb4b36
setup: fail if bz2 is not available
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
10521
diff
changeset
|
60 |
24192
390410a6545d
setup.py: do not install c extensions on pypy
Joan Massich <mailsik@gmail.com>
parents:
24191
diff
changeset
|
61 ispypy = "PyPy" in sys.version |
390410a6545d
setup.py: do not install c extensions on pypy
Joan Massich <mailsik@gmail.com>
parents:
24191
diff
changeset
|
62 |
31298
718a57e95a89
setup: use setuptools on Windows (issue5400)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30869
diff
changeset
|
63 # 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:
30869
diff
changeset
|
64 # 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:
30869
diff
changeset
|
65 # we don't have issues. |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
66 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
|
67 if issetuptools: |
26600
e8497889edab
setup: import setup from setuptools if FORCE_SETUPTOOLS is set
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents:
26421
diff
changeset
|
68 from setuptools import setup |
e8497889edab
setup: import setup from setuptools if FORCE_SETUPTOOLS is set
Nathan Goldbaum <ngoldbau@ucsc.edu>
parents:
26421
diff
changeset
|
69 else: |
50730
b1ac55606eb7
setup: fall back to setuptools setup if distutils isn't available
Mads Kiilerich <mads@kiilerich.com>
parents:
50672
diff
changeset
|
70 try: |
b1ac55606eb7
setup: fall back to setuptools setup if distutils isn't available
Mads Kiilerich <mads@kiilerich.com>
parents:
50672
diff
changeset
|
71 from distutils.core import setup |
b1ac55606eb7
setup: fall back to setuptools setup if distutils isn't available
Mads Kiilerich <mads@kiilerich.com>
parents:
50672
diff
changeset
|
72 except ModuleNotFoundError: |
b1ac55606eb7
setup: fall back to setuptools setup if distutils isn't available
Mads Kiilerich <mads@kiilerich.com>
parents:
50672
diff
changeset
|
73 from setuptools import setup |
30418
ce9a3033c118
setup: test setproctitle before building osutil
Jun Wu <quark@fb.com>
parents:
30356
diff
changeset
|
74 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
|
75 from distutils.core import Command, Extension |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
76 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
|
77 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
|
78 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
|
79 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
|
80 from distutils.command.build_scripts import build_scripts |
32670
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32539
diff
changeset
|
81 from distutils.command.install import install |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
82 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
|
83 from distutils.command.install_scripts import install_scripts |
51887
4dc1fc2b2f3a
setup: avoid the deprecated `distutils.spawn.find_executable`
Matt Harbison <mharbison@atto.com>
parents:
51886
diff
changeset
|
84 from distutils.spawn import spawn |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
85 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
|
86 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
|
87 CCompilerError, |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
88 DistutilsError, |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
89 DistutilsExecError, |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
90 ) |
49958
dd804d83822c
setup: drop legacy osx compiler tuning to enable universal builds
Matt Harbison <matt_harbison@yahoo.com>
parents:
49927
diff
changeset
|
91 from distutils.sysconfig import get_python_inc |
40420
b6bc2293cdf3
setup: explain to distutils how we write rc versions
"Paul Morelle <paul.morelle@octobus.net"
parents:
40397
diff
changeset
|
92 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
93 |
52354
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
94 def sysstr(s): |
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
95 return s.decode('latin-1') |
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
96 |
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
97 |
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
98 def eprint(*args, **kwargs): |
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
99 kwargs['file'] = sys.stderr |
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
100 print(*args, **kwargs) |
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
101 |
fcc059b1eed0
setup_py: function defs after imports
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52353
diff
changeset
|
102 |
35238
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
103 def write_if_changed(path, content): |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
104 """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:
35126
diff
changeset
|
105 if os.path.exists(path): |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
106 with open(path, 'rb') as fh: |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
107 current = fh.read() |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
108 else: |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
109 current = b'' |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
110 |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
111 if current != content: |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
112 with open(path, 'wb') as fh: |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
113 fh.write(content) |
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
114 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
115 |
6513
66e87c11447d
Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
6389
diff
changeset
|
116 scripts = ['hg'] |
66e87c11447d
Add a batch file driver for Windows
Paul Moore <p.f.moore@gmail.com>
parents:
6389
diff
changeset
|
117 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
|
118 # 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
|
119 scripts.append('contrib/win32/hg.bat') |
3893 | 120 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
121 |
31565
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31325
diff
changeset
|
122 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
|
123 tmpdir = tempfile.mkdtemp(prefix='hg-install-') |
52357
40f649592ba9
setup_py: simplify cancompile with 'with open(...)'
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52356
diff
changeset
|
124 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
|
125 try: |
31565
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31325
diff
changeset
|
126 fname = os.path.join(tmpdir, 'testcomp.c') |
52357
40f649592ba9
setup_py: simplify cancompile with 'with open(...)'
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52356
diff
changeset
|
127 with open(fname, 'w') as file: |
40f649592ba9
setup_py: simplify cancompile with 'with open(...)'
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52356
diff
changeset
|
128 file.write(code) |
40f649592ba9
setup_py: simplify cancompile with 'with open(...)'
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52356
diff
changeset
|
129 oldstderr = os.dup(sys.stderr.fileno()) |
25089
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
130 # 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
|
131 # from the compiler. |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
132 # 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
|
133 # for a function on Windows. |
52357
40f649592ba9
setup_py: simplify cancompile with 'with open(...)'
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52356
diff
changeset
|
134 with open('/dev/null', 'w') as devnull: |
40f649592ba9
setup_py: simplify cancompile with 'with open(...)'
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52356
diff
changeset
|
135 os.dup2(devnull.fileno(), sys.stderr.fileno()) |
25089
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
136 objects = cc.compile([fname], output_dir=tmpdir) |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
137 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
|
138 return True |
25089
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
139 except Exception: |
c6427cd45760
setup: use try/except/finally
Matt Mackall <mpm@selenic.com>
parents:
25074
diff
changeset
|
140 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
|
141 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
|
142 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
|
143 os.dup2(oldstderr, sys.stderr.fileno()) |
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
|
144 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
|
145 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
146 |
31565
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31325
diff
changeset
|
147 # simplified version of distutils.ccompiler.CCompiler.has_function |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31325
diff
changeset
|
148 # that actually removes its temporary files. |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31325
diff
changeset
|
149 def hasfunction(cc, funcname): |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31325
diff
changeset
|
150 code = 'int main(void) { %s(); }\n' % funcname |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31325
diff
changeset
|
151 return cancompile(cc, code) |
9639ff4a93ae
setup: split "hasfunction" to test arbitrary code
Jun Wu <quark@fb.com>
parents:
31325
diff
changeset
|
152 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
153 |
31566
5a0460219649
setup: add a function to test header files
Jun Wu <quark@fb.com>
parents:
31565
diff
changeset
|
154 def hasheader(cc, headername): |
5a0460219649
setup: add a function to test header files
Jun Wu <quark@fb.com>
parents:
31565
diff
changeset
|
155 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:
31565
diff
changeset
|
156 return cancompile(cc, code) |
5a0460219649
setup: add a function to test header files
Jun Wu <quark@fb.com>
parents:
31565
diff
changeset
|
157 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
158 |
1283
f5faab34f32e
Support for the distutils extention 'py2exe' added.
Volker.Kleinfeld@gmx.de
parents:
575
diff
changeset
|
159 # py2exe needs to be installed to work |
f5faab34f32e
Support for the distutils extention 'py2exe' added.
Volker.Kleinfeld@gmx.de
parents:
575
diff
changeset
|
160 try: |
1294
372971e1c40d
Clean up whitespace damage.
Bryan O'Sullivan <bos@serpentine.com>
parents:
1284
diff
changeset
|
161 import py2exe |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
162 |
49128
97f2554cb647
setup: fix the py2exe logic to work with py3
Matt Harbison <matt_harbison@yahoo.com>
parents:
49103
diff
changeset
|
163 py2exe.patch_distutils() |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
164 py2exeloaded = True |
15527
9926aab3d0b5
setup: fix py2exe generation broken by c3a6ec304055 (issue3116)
Pascal Quantin <pascal.quantin@gmail.com>
parents:
15523
diff
changeset
|
165 # 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
|
166 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
|
167 except ImportError: |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
168 py2exeloaded = False |
1283
f5faab34f32e
Support for the distutils extention 'py2exe' added.
Volker.Kleinfeld@gmx.de
parents:
575
diff
changeset
|
169 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
170 |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
171 def runcmd(cmd, env, cwd=None): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
172 p = subprocess.Popen( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
173 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
|
174 ) |
32904
19b0fd4b5570
plan9: drop py26 hacks
Matt Harbison <matt_harbison@yahoo.com>
parents:
32802
diff
changeset
|
175 out, err = p.communicate() |
33123
87ee783f7299
setup: update runcmd() to also return the exit status
Adam Simpkins <simpkins@fb.com>
parents:
33122
diff
changeset
|
176 return p.returncode, out, err |
13636
4bfff063aed6
setup: fix mac build broken by e42d18538e1d
Jon M. Dugan <jdugan@x1024.net>
parents:
13594
diff
changeset
|
177 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
178 |
49037
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48941
diff
changeset
|
179 class hgcommand: |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
180 def __init__(self, cmd, env): |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
181 self.cmd = cmd |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
182 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
|
183 |
51191
3c5b66d03c37
setup: make debug simpler by adding a `__repr__` to `hgcommand`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50995
diff
changeset
|
184 def __repr__(self): |
3c5b66d03c37
setup: make debug simpler by adding a `__repr__` to `hgcommand`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50995
diff
changeset
|
185 return f"<hgcommand cmd={self.cmd} env={self.env}>" |
3c5b66d03c37
setup: make debug simpler by adding a `__repr__` to `hgcommand`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50995
diff
changeset
|
186 |
33125
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33124
diff
changeset
|
187 def run(self, args): |
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33124
diff
changeset
|
188 cmd = self.cmd + args |
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33124
diff
changeset
|
189 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
|
190 err = filterhgerr(err) |
49650
ac93876ea2df
setup: treat error output and non-zero return code differently
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49649
diff
changeset
|
191 if err: |
48918
1371c18e467d
setup: remove printf trampoline
Augie Fackler <augie@google.com>
parents:
48917
diff
changeset
|
192 print("stderr from '%s':" % (' '.join(cmd)), file=sys.stderr) |
1371c18e467d
setup: remove printf trampoline
Augie Fackler <augie@google.com>
parents:
48917
diff
changeset
|
193 print(err, file=sys.stderr) |
49650
ac93876ea2df
setup: treat error output and non-zero return code differently
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49649
diff
changeset
|
194 if returncode != 0: |
51471
ee132657647d
setup: display return code information about failed `hg` call
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51192
diff
changeset
|
195 print( |
ee132657647d
setup: display return code information about failed `hg` call
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51192
diff
changeset
|
196 "non zero-return '%s': %d" % (' '.join(cmd), returncode), |
ee132657647d
setup: display return code information about failed `hg` call
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51192
diff
changeset
|
197 file=sys.stderr, |
ee132657647d
setup: display return code information about failed `hg` call
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51192
diff
changeset
|
198 ) |
44214
bda050bc9987
py3: make setup.py's hgcommand() consistently return bytes
Martin von Zweigbergk <martinvonz@google.com>
parents:
44189
diff
changeset
|
199 return b'' |
33125
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33124
diff
changeset
|
200 return out |
8548
3ccbe42ff72f
setup: read .hg_archival.txt for version info (issue1670)
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
8547
diff
changeset
|
201 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
202 |
33598
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
203 def filterhgerr(err): |
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
204 # 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
|
205 # 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
|
206 # 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
|
207 # 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
|
208 # 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
|
209 err = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
210 e |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
211 for e in err.splitlines() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
212 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
213 not e.startswith(b'not trusting file') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
214 and not e.startswith(b'warning: Not importing') |
51639
bf1d26bd5b6a
obsolete: quote the feature name
Joerg Sonnenberger <joerg@bec.de>
parents:
51471
diff
changeset
|
215 and not ( |
bf1d26bd5b6a
obsolete: quote the feature name
Joerg Sonnenberger <joerg@bec.de>
parents:
51471
diff
changeset
|
216 e.startswith(b'obsolete feature not enabled') |
bf1d26bd5b6a
obsolete: quote the feature name
Joerg Sonnenberger <joerg@bec.de>
parents:
51471
diff
changeset
|
217 or e.startswith(b'"obsolete" feature not enabled') |
bf1d26bd5b6a
obsolete: quote the feature name
Joerg Sonnenberger <joerg@bec.de>
parents:
51471
diff
changeset
|
218 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
219 and not e.startswith(b'*** failed to import extension') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
220 and not e.startswith(b'devel-warn:') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
221 and not ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
222 e.startswith(b'(third party extension') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
223 and e.endswith(b'or newer of Mercurial; disabling)') |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
224 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
225 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
226 ] |
33598
f30714a55523
setup: do not select hg executable that prints unexpected warnings
Yuya Nishihara <yuya@tcha.org>
parents:
33591
diff
changeset
|
227 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
|
228 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
229 |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
230 def findhg(): |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
231 """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:
33125
diff
changeset
|
232 repository contents. |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
233 |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
234 Returns an hgcommand object.""" |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
235 # 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:
33125
diff
changeset
|
236 # 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:
33125
diff
changeset
|
237 # |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
238 # 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:
33125
diff
changeset
|
239 # 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:
33125
diff
changeset
|
240 hgenv = os.environ.copy() |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
241 # 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:
33125
diff
changeset
|
242 # 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:
33125
diff
changeset
|
243 hgenv['HGPLAIN'] = '1' |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
244 hgenv['LANGUAGE'] = 'C' |
52686
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
245 # PYTHONPATH and co can be used for isolated builds, which can break hg |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
246 hgenv.pop("PYTHONNOUSERSITE", None) |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
247 if "PYTHONPATH" in hgenv: |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
248 hgenv["PYTHONPATH"] = os.pathsep.join( |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
249 [ |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
250 path |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
251 for path in hgenv["PYTHONPATH"].split(os.pathsep) |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
252 if "-build-env-" not in path |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
253 ] |
958d5c998505
setup-py: weaken build isolation when calling hg
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52665
diff
changeset
|
254 ) |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
255 hgcmd = ['hg'] |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
256 # Run a simple "hg log" command just to see if using hg from the user's |
40993
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40980
diff
changeset
|
257 # 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:
40980
diff
changeset
|
258 # 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:
40980
diff
changeset
|
259 # python invocation of local hg, where pythonXY.dll can always be found. |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
260 check_cmd = ['log', '-r.', '-Ttest'] |
50771
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
261 attempts = [] |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
262 |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
263 def attempt(cmd, env): |
40993
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40980
diff
changeset
|
264 try: |
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40980
diff
changeset
|
265 retcode, out, err = runcmd(hgcmd + check_cmd, hgenv) |
50771
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
266 res = (True, retcode, out, err) |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
267 if retcode == 0 and not filterhgerr(err): |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
268 return True |
52665
24ee91ba9aa8
pyupgrade: drop usage of py3 aliases for `OSError`
Matt Harbison <matt_harbison@yahoo.com>
parents:
52477
diff
changeset
|
269 except OSError as e: |
50771
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
270 res = (False, e) |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
271 attempts.append((cmd, res)) |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
272 return False |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
273 |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
274 if os.name != 'nt' or not os.path.exists("hg.exe"): |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
275 if attempt(hgcmd + check_cmd, hgenv): |
40993
f6987f654356
setup: avoid attempting to invoke the system-wide hg.exe on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
40980
diff
changeset
|
276 return hgcommand(hgcmd, hgenv) |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
277 |
51192
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
278 # Fall back to trying the local hg installation (pure python) |
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
279 repo_hg = os.path.join(os.path.dirname(__file__), 'hg') |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
280 hgenv = localhgenv() |
51192
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
281 hgcmd = [sys.executable, repo_hg] |
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
282 if attempt(hgcmd + check_cmd, hgenv): |
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
283 return hgcommand(hgcmd, hgenv) |
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
284 # Fall back to trying the local hg installation (whatever we can) |
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
285 hgenv = localhgenv(pure_python=False) |
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
286 hgcmd = [sys.executable, repo_hg] |
50771
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
287 if attempt(hgcmd + check_cmd, hgenv): |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
288 return hgcommand(hgcmd, hgenv) |
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
289 |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
290 eprint("/!\\") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
291 eprint(r"/!\ Unable to find a working hg binary") |
50771
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
292 eprint(r"/!\ Version cannot be extracted from the repository") |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
293 eprint(r"/!\ Re-run the setup once a first version is built") |
50771
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
294 eprint(r"/!\ Attempts:") |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
295 for i, e in enumerate(attempts): |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
296 eprint(r"/!\ attempt #%d:" % (i)) |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
297 eprint(r"/!\ cmd: ", e[0]) |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
298 res = e[1] |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
299 if res[0]: |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
300 eprint(r"/!\ return code:", res[1]) |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
301 eprint("/!\\ std output:\n%s" % (res[2].decode()), end="") |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
302 eprint("/!\\ std error:\n%s" % (res[3].decode()), end="") |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
303 else: |
5dc7e1907e48
setup: make the error "Unable to find a working hg binary" more informative
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
50730
diff
changeset
|
304 eprint(r"/!\ exception: ", res[1]) |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
305 return None |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
306 |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
307 |
51192
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
308 def localhgenv(pure_python=True): |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
309 """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:
33125
diff
changeset
|
310 mercurial from the local repository.""" |
33124
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33123
diff
changeset
|
311 # 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:
33123
diff
changeset
|
312 # 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
|
313 env = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
314 'HGRCPATH': '', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
315 'LANGUAGE': 'C', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
316 'PATH': '', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
317 } # make pypi modules that use os.environ['PATH'] happy |
51192
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
318 if pure_python: |
f816ca29a285
setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51191
diff
changeset
|
319 env['HGMODULEPOLICY'] = 'py' |
33124
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33123
diff
changeset
|
320 if 'LD_LIBRARY_PATH' in os.environ: |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33123
diff
changeset
|
321 env['LD_LIBRARY_PATH'] = os.environ['LD_LIBRARY_PATH'] |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33123
diff
changeset
|
322 if 'SystemRoot' in os.environ: |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33123
diff
changeset
|
323 # 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:
33123
diff
changeset
|
324 # https://bugs.python.org/issue13524#msg148850 |
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33123
diff
changeset
|
325 env['SystemRoot'] = os.environ['SystemRoot'] |
33129 | 326 return env |
33124
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33123
diff
changeset
|
327 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
328 |
33124
155d760da7b2
setup: move environment computation into a helper function
Adam Simpkins <simpkins@fb.com>
parents:
33123
diff
changeset
|
329 version = '' |
15367
b357a972d6cd
setup: set env global earlier (3073)
Matt Mackall <mpm@selenic.com>
parents:
15215
diff
changeset
|
330 |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
331 |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
332 def _try_get_version(): |
33126
8b20338b989e
setup: prefer using the system hg to interact with the local repository
Adam Simpkins <simpkins@fb.com>
parents:
33125
diff
changeset
|
333 hg = findhg() |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
334 if hg is None: |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
335 return '' |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
336 hgid = None |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
337 numerictags = [] |
33125
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33124
diff
changeset
|
338 cmd = ['log', '-r', '.', '--template', '{tags}\n'] |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
339 pieces = sysstr(hg.run(cmd)).split() |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
340 numerictags = [t for t in pieces if t[0:1].isdigit()] |
35255
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35238
diff
changeset
|
341 hgid = sysstr(hg.run(['id', '-i'])).strip() |
49660
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
342 if hgid.count('+') == 2: |
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
343 hgid = hgid.replace("+", ".", 1) |
33122
6fdc1518983e
setup: fail if we cannot determine the version number
Adam Simpkins <simpkins@fb.com>
parents:
33115
diff
changeset
|
344 if not hgid: |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
345 eprint("/!\\") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
346 eprint(r"/!\ Unable to determine hg version from local repository") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
347 eprint(r"/!\ Failed to retrieve current revision tags") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
348 return '' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
349 if numerictags: # tag(s) found |
52205
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
350 return _version(tag=numerictags[-1], dirty=hgid.endswith('+')) |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
351 else: # no tag found on the checked out revision |
49660
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
352 ltagcmd = ['log', '--rev', 'wdir()', '--template', '{latesttag}'] |
35255
d73ccc63b8f9
setup: convert version strings to unicode on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
35238
diff
changeset
|
353 ltag = sysstr(hg.run(ltagcmd)) |
49649
8d390a13474d
setup: make the version computation process more resistant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49615
diff
changeset
|
354 if not ltag: |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
355 eprint("/!\\") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
356 eprint(r"/!\ Unable to determine hg version from local repository") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
357 eprint( |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
358 r"/!\ Failed to retrieve current revision distance to lated tag" |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
359 ) |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
360 return '' |
49660
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
361 changessincecmd = [ |
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
362 'log', |
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
363 '-T', |
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
364 'x\n', |
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
365 '-r', |
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
366 "only(parents(),'%s')" % ltag, |
593f5e4076ff
setup: support building from an ongoing merge
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49656
diff
changeset
|
367 ] |
33125
fc290a39590d
setup: replace runhg() with an hgcommand helper class
Adam Simpkins <simpkins@fb.com>
parents:
33124
diff
changeset
|
368 changessince = len(hg.run(changessincecmd).splitlines()) |
52184
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
369 branch = hg.run(["branch"]).strip() |
52205
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
370 return _version( |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
371 tag=ltag, |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
372 branch=branch, |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
373 hgid=hgid.rstrip('+'), |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
374 changes_since=changessince, |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
375 dirty=hgid.endswith('+'), |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
376 ) |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
377 |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
378 |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
379 def _version( |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
380 tag: str, |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
381 branch: str = '', |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
382 hgid: str = '', |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
383 changes_since: int = 0, |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
384 dirty: bool = False, |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
385 ): |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
386 """compute a version number from available information""" |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
387 version = tag |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
388 if changes_since > 0: |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
389 assert branch |
52184
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
390 if branch == b'stable': |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
391 post_nb = 0 |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
392 elif branch == b'default': |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
393 # we use 1 here to be greater than 0 to make sure change from |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
394 # default are considered newer than change on stable |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
395 post_nb = 1 |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
396 else: |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
397 # what is this branch ? probably a local variant ? |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
398 post_nb = 2 |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
399 |
52205
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
400 assert hgid |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
401 |
52184
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
402 # logic of the scheme |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
403 # - '.postX' to mark the version as "above" the tagged version |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
404 # X is 0 for stable, 1 for default, 2 for anything else |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
405 # - use '.devY' |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
406 # Y is the number of extra revision compared to the tag. So that |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
407 # revision with more change are "above" previous ones. |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
408 # - '+hg.NODEID.local.DATE' if there is any uncommitted changes. |
52205
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
409 version += '.post%d.dev%d+hg.%s' % (post_nb, changes_since, hgid) |
35a9b6d3b484
setup: factor version computation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52204
diff
changeset
|
410 if dirty: |
52184
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
411 version = version[:-1] + '.local.' + time.strftime('%Y%m%d') |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
412 # try to give warning early about bad version if possible |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
413 try: |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
414 from packaging.version import Version |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
415 |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
416 Version(version) |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
417 except ImportError: |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
418 pass |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
419 except ValueError as exc: |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
420 eprint(r"/!\ generated version is invalid") |
9048a0d782e1
dev-version: change the scheme of non tagged version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52164
diff
changeset
|
421 eprint(r"/!\ error: %s" % exc) |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
422 return version |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
423 |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
424 |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
425 if os.path.isdir('.hg'): |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
426 version = _try_get_version() |
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
|
427 elif os.path.exists('.hg_archival.txt'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
428 kw = dict( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
429 [[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
|
430 ) |
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
|
431 if 'tag' in kw: |
52206
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
432 version = _version(tag=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
|
433 elif 'latesttag' in kw: |
52206
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
434 distance = int(kw.get('changessincelatesttag', kw['latesttagdistance'])) |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
435 version = _version( |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
436 tag=kw['latesttag'], |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
437 branch=kw['branch'], |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
438 changes_since=distance, |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
439 hgid=kw['node'][:12], |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
440 ) |
8547
548fd7a05373
setup.py: subprocess instead of os.popen, sys.stderr.write instead of print
Christian Ebert <blacktrash@gmx.net>
parents:
8494
diff
changeset
|
441 else: |
52206
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
442 version = _version( |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
443 tag='0', |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
444 branch='unknown-source', |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
445 changes_since=1, |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
446 hgid=kw.get('node', 'unknownid')[:12], |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
447 dirty=True, |
2b7e3177f99c
setup: use the same code to compute tag from archive
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52205
diff
changeset
|
448 ) |
46996
8d2b62d716b0
packaging: extract pre-computed version when running from plain tarball
Joerg Sonnenberger <joerg@bec.de>
parents:
46869
diff
changeset
|
449 elif os.path.exists('mercurial/__version__.py'): |
47007
fceccc36873d
lint: fix failing code check
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46996
diff
changeset
|
450 with open('mercurial/__version__.py') as f: |
fceccc36873d
lint: fix failing code check
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46996
diff
changeset
|
451 data = f.read() |
46996
8d2b62d716b0
packaging: extract pre-computed version when running from plain tarball
Joerg Sonnenberger <joerg@bec.de>
parents:
46869
diff
changeset
|
452 version = re.search('version = b"(.*)"', data).group(1) |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
453 if not version: |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
454 if os.environ.get("MERCURIAL_SETUP_MAKE_LOCAL") == "1": |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
455 version = "0.0+0" |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
456 eprint("/!\\") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
457 eprint(r"/!\ Using '0.0+0' as the default version") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
458 eprint(r"/!\ Re-run make local once that first version is built") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
459 eprint("/!\\") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
460 else: |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
461 eprint("/!\\") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
462 eprint(r"/!\ Could not determine the Mercurial version") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
463 eprint(r"/!\ You need to build a local version first") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
464 eprint(r"/!\ Run `make local` and try again") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
465 eprint("/!\\") |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
466 msg = "Run `make local` first to get a working local version" |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
467 raise SystemExit(msg) |
35238
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
468 |
49656
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
469 versionb = version |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
470 if not isinstance(versionb, bytes): |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
471 versionb = versionb.encode('ascii') |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
472 |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
473 write_if_changed( |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
474 'mercurial/__version__.py', |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
475 b''.join( |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
476 [ |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
477 b'# this file is autogenerated by setup.py\n' |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
478 b'version = b"%s"\n' % versionb, |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
479 ] |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
480 ), |
010a1e73f69e
setup: further improve the error path for version retrieval
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49650
diff
changeset
|
481 ) |
8493
4c030ada58d2
Fix how setup.py identifies the Mercurial version.
Jeremy Whitlock <jcscoobyrs@gmail.com>
parents:
7826
diff
changeset
|
482 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
483 |
15460
f9f0731dbc56
setup: subclass build command
Simon Heimberg <simohe@besonet.ch>
parents:
15459
diff
changeset
|
484 class hgbuild(build): |
f9f0731dbc56
setup: subclass build command
Simon Heimberg <simohe@besonet.ch>
parents:
15459
diff
changeset
|
485 # 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
|
486 # when build_py is run next. |
28398
712298942c82
setup: remove support for 2to3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28041
diff
changeset
|
487 sub_commands = [('build_mo', None)] + build.sub_commands |
15460
f9f0731dbc56
setup: subclass build command
Simon Heimberg <simohe@besonet.ch>
parents:
15459
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 description = "build translations (.mo files)" |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
492 |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
493 def run(self): |
52164
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
494 result = self._run() |
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
495 if ( |
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
496 not result |
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
497 and os.environ.get('MERCURIAL_SETUP_FORCE_TRANSLATIONS') == '1' |
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
498 ): |
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
499 raise DistutilsExecError("failed to build translations") |
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
500 |
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
501 def _run(self): |
51887
4dc1fc2b2f3a
setup: avoid the deprecated `distutils.spawn.find_executable`
Matt Harbison <mharbison@atto.com>
parents:
51886
diff
changeset
|
502 try: |
4dc1fc2b2f3a
setup: avoid the deprecated `distutils.spawn.find_executable`
Matt Harbison <mharbison@atto.com>
parents:
51886
diff
changeset
|
503 from shutil import which as find_executable |
4dc1fc2b2f3a
setup: avoid the deprecated `distutils.spawn.find_executable`
Matt Harbison <mharbison@atto.com>
parents:
51886
diff
changeset
|
504 except ImportError: |
4dc1fc2b2f3a
setup: avoid the deprecated `distutils.spawn.find_executable`
Matt Harbison <mharbison@atto.com>
parents:
51886
diff
changeset
|
505 # Deprecated in py3.12 |
4dc1fc2b2f3a
setup: avoid the deprecated `distutils.spawn.find_executable`
Matt Harbison <mharbison@atto.com>
parents:
51886
diff
changeset
|
506 from distutils.spawn import find_executable |
4dc1fc2b2f3a
setup: avoid the deprecated `distutils.spawn.find_executable`
Matt Harbison <mharbison@atto.com>
parents:
51886
diff
changeset
|
507 |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
508 if not find_executable('msgfmt'): |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
509 logging.warning( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
510 "could not find msgfmt executable, no translations " |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
511 "will be built" |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
512 ) |
52164
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
513 return False |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
514 |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
515 podir = 'i18n' |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
516 if not os.path.isdir(podir): |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
517 logging.warning("could not find %s/ directory", podir) |
52164
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
518 return False |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
519 |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
520 join = os.path.join |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
521 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
|
522 if not po.endswith('.po'): |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
523 continue |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
524 pofile = join(podir, po) |
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
525 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
|
526 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
|
527 mobuildfile = join('mercurial', mofile) |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
528 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
|
529 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
|
530 # 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
|
531 cmd.append('-c') |
9999
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
532 self.mkpath(join('mercurial', modir)) |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
533 self.make_file([pofile], mobuildfile, spawn, (cmd,)) |
52164
2c4283c9fa93
setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52033
diff
changeset
|
534 return True |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
535 |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
536 |
15458
c3a6ec304055
setup: subclass distribution instead of overwriting original
Simon Heimberg <simohe@besonet.ch>
parents:
15388
diff
changeset
|
537 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
|
538 pure = False |
44499
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
539 rust = False |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
540 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
|
541 cffi = ispypy |
15458
c3a6ec304055
setup: subclass distribution instead of overwriting original
Simon Heimberg <simohe@besonet.ch>
parents:
15388
diff
changeset
|
542 |
41768
aaad36b88298
cleanup: use () to wrap long lines instead of \
Augie Fackler <augie@google.com>
parents:
41547
diff
changeset
|
543 global_options = Distribution.global_options + [ |
aaad36b88298
cleanup: use () to wrap long lines instead of \
Augie Fackler <augie@google.com>
parents:
41547
diff
changeset
|
544 ('pure', None, "use pure (slow) Python code instead of C extensions"), |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
545 ('rust', None, "use Rust extensions additionally to C extensions"), |
44499
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
546 ( |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
547 'no-rust', |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
548 None, |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
549 "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:
44497
diff
changeset
|
550 ), |
41768
aaad36b88298
cleanup: use () to wrap long lines instead of \
Augie Fackler <augie@google.com>
parents:
41547
diff
changeset
|
551 ] |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
552 |
44499
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
553 negative_opt = Distribution.negative_opt.copy() |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
554 boolean_options = ['pure', 'rust', 'no-rust'] |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
555 negative_opt['no-rust'] = 'rust' |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
556 |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
557 def _set_command_options(self, command_obj, option_dict=None): |
44634
4c6189d45d67
setup: work around old versions of distutils breaking setup.py
Augie Fackler <augie@google.com>
parents:
44610
diff
changeset
|
558 # 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:
44610
diff
changeset
|
559 # 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:
44610
diff
changeset
|
560 command_obj.boolean_options = ( |
4c6189d45d67
setup: work around old versions of distutils breaking setup.py
Augie Fackler <augie@google.com>
parents:
44610
diff
changeset
|
561 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:
44610
diff
changeset
|
562 ) |
44499
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
563 return Distribution._set_command_options( |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
564 self, command_obj, option_dict=option_dict |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
565 ) |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
566 |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
567 def parse_command_line(self): |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
568 ret = Distribution.parse_command_line(self) |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
569 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:
44497
diff
changeset
|
570 hgrustext = os.environ.get('HGWITHRUSTEXT') |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
571 # 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:
44497
diff
changeset
|
572 # (see mercurial/__modulepolicy__.py) |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
573 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:
44497
diff
changeset
|
574 if hgrustext: |
48469
fff5942d445f
typo: s/unkown/unknown across the codebase
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48303
diff
changeset
|
575 msg = 'unknown HGWITHRUSTEXT value: %s' % hgrustext |
48918
1371c18e467d
setup: remove printf trampoline
Augie Fackler <augie@google.com>
parents:
48917
diff
changeset
|
576 print(msg, file=sys.stderr) |
44499
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
577 hgrustext = None |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
578 self.rust = hgrustext is not None |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
579 self.no_rust = not self.rust |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
580 return ret |
06b0aa048007
setup-rust: add a --no-rust flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44497
diff
changeset
|
581 |
15459
434c48e981b8
setup: has_ext_modules always returns false when pure is specified
Simon Heimberg <simohe@besonet.ch>
parents:
15458
diff
changeset
|
582 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
|
583 # 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
|
584 # 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
|
585 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
|
586 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
587 |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
588 # 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:
30445
diff
changeset
|
589 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:
30445
diff
changeset
|
590 buildextnegops['no-zstd'] = 'zstd' |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
591 buildextnegops['no-rust'] = 'rust' |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
592 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
593 |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
594 class hgbuildext(build_ext): |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
595 user_options = build_ext.user_options + [ |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
596 ('zstd', None, 'compile zstd bindings [default]'), |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
597 ('no-zstd', None, 'do not compile zstd bindings'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
598 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
599 'rust', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
600 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
601 'compile Rust extensions if they are in use ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
602 '(requires Cargo) [default]', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
603 ), |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
604 ('no-rust', None, 'do not compile Rust extensions'), |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
605 ] |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
606 |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
607 boolean_options = build_ext.boolean_options + ['zstd', 'rust'] |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
608 negative_opt = buildextnegops |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
609 |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
610 def initialize_options(self): |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
611 self.zstd = True |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
612 self.rust = True |
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
613 |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
614 return build_ext.initialize_options(self) |
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
615 |
43044
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42823
diff
changeset
|
616 def finalize_options(self): |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42823
diff
changeset
|
617 # 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:
42823
diff
changeset
|
618 # Only influences behavior on Python 3.5+. |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42823
diff
changeset
|
619 if getattr(self, 'parallel', None) is None: |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42823
diff
changeset
|
620 self.parallel = True |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42823
diff
changeset
|
621 |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42823
diff
changeset
|
622 return build_ext.finalize_options(self) |
f9d35f01b8b3
setup: build extensions in parallel by default
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42823
diff
changeset
|
623 |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
624 def build_extensions(self): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
625 ruststandalones = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
626 e for e in self.extensions if isinstance(e, RustStandaloneExtension) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
627 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
628 self.extensions = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
629 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
|
630 ] |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
631 # 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:
30445
diff
changeset
|
632 if not self.zstd: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
633 self.extensions = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
634 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
|
635 ] |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
636 |
48539
23ce9e7bf1e5
setup.py: fix some documentation typos
Matt Harbison <matt_harbison@yahoo.com>
parents:
48469
diff
changeset
|
637 # Build Rust standalone extensions if it'll be used |
23ce9e7bf1e5
setup.py: fix some documentation typos
Matt Harbison <matt_harbison@yahoo.com>
parents:
48469
diff
changeset
|
638 # and its build is not explicitly disabled (for external build |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
639 # as Linux distributions would do) |
44484
79ac59d3f73d
setup-rust: remove the legacy 'direct-ffi' variant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44470
diff
changeset
|
640 if self.distribution.rust and self.rust: |
46441
cabc5e9366c5
rust: lower compile error on non-linux platforms to a warning
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46315
diff
changeset
|
641 if not sys.platform.startswith('linux'): |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
642 logging.warning( |
46441
cabc5e9366c5
rust: lower compile error on non-linux platforms to a warning
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46315
diff
changeset
|
643 "rust extensions have only been tested on Linux " |
cabc5e9366c5
rust: lower compile error on non-linux platforms to a warning
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46315
diff
changeset
|
644 "and may not behave correctly on other platforms" |
cabc5e9366c5
rust: lower compile error on non-linux platforms to a warning
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46315
diff
changeset
|
645 ) |
cabc5e9366c5
rust: lower compile error on non-linux platforms to a warning
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
46315
diff
changeset
|
646 |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
647 for rustext in ruststandalones: |
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
648 rustext.build('' if self.inplace else self.build_lib) |
40980
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
649 |
30459
0acf3fd718f1
setup: add flag to build_ext to control building zstd
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30445
diff
changeset
|
650 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
|
651 |
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
652 def build_extension(self, ext): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
653 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
654 self.distribution.rust |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
655 and self.rust |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
656 and isinstance(ext, RustExtension) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
657 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
658 ext.rustbuild() |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
659 try: |
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
660 build_ext.build_extension(self, ext) |
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
661 except CCompilerError: |
12501
98f21e4d9633
setup: slight simplification
Martin Geisler <mg@lazybytes.net>
parents:
11533
diff
changeset
|
662 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
|
663 raise |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
664 logging.warning( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
665 "Failed to build optional extension '%s' (skipping)", ext.name |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
666 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
667 |
11468
1c1126b1d919
setup: ignore failures to build optional inotify extension
Christian Boos <cboos@neuf.fr>
parents:
10905
diff
changeset
|
668 |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
669 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
|
670 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
|
671 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
|
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 |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
674 exebuilt = False |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
675 try: |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
676 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
|
677 exebuilt = True |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
678 except (DistutilsError, CCompilerError): |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
679 logging.warning('failed to build optional hg.exe') |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
680 |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
681 if exebuilt: |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
682 # 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
|
683 # 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
|
684 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
|
685 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
|
686 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
|
687 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
|
688 |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
689 # 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
|
690 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
|
691 |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
692 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
|
693 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
694 |
10000
16f49d671c7f
setup: cleanup coding style
Martin Geisler <mg@lazybytes.net>
parents:
9999
diff
changeset
|
695 class hgbuildpy(build_py): |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
696 def finalize_options(self): |
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
697 build_py.finalize_options(self) |
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
698 |
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
699 if self.distribution.pure: |
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
700 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
|
701 elif self.distribution.cffi: |
30356
9cc438bf7d9a
setup: move cffi stuff to mercurial/cffi
Jun Wu <quark@fb.com>
parents:
29844
diff
changeset
|
702 from mercurial.cffi import ( |
32538
05a16c19967e
cffi: rename build scripts
Yuya Nishihara <yuya@tcha.org>
parents:
32458
diff
changeset
|
703 bdiffbuild, |
05a16c19967e
cffi: rename build scripts
Yuya Nishihara <yuya@tcha.org>
parents:
32458
diff
changeset
|
704 mpatchbuild, |
30356
9cc438bf7d9a
setup: move cffi stuff to mercurial/cffi
Jun Wu <quark@fb.com>
parents:
29844
diff
changeset
|
705 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
706 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
707 exts = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
708 mpatchbuild.ffi.distutils_extension(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
709 bdiffbuild.ffi.distutils_extension(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
710 ] |
29505
2dce3f96ad7b
setup: prepare for future cffi modules by adding placeholder in setup
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
711 # 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
|
712 if sys.platform == 'darwin': |
32538
05a16c19967e
cffi: rename build scripts
Yuya Nishihara <yuya@tcha.org>
parents:
32458
diff
changeset
|
713 from mercurial.cffi import osutilbuild |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
714 |
32538
05a16c19967e
cffi: rename build scripts
Yuya Nishihara <yuya@tcha.org>
parents:
32458
diff
changeset
|
715 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
|
716 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
|
717 else: |
18905
012780620d4f
setup: make error message for missing Python headers more helpful
Mads Kiilerich <mads@kiilerich.com>
parents:
18900
diff
changeset
|
718 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
|
719 if not os.path.exists(h): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
720 raise SystemExit( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
721 'Python headers are required to build ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
722 'Mercurial but weren\'t found in %s' % h |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
723 ) |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
724 |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
725 def run(self): |
32675
7dab4c0cdb41
setup: do not overwrite local __modulepolicy__.py on out-of-source build
Yuya Nishihara <yuya@tcha.org>
parents:
32670
diff
changeset
|
726 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:
32670
diff
changeset
|
727 self.mkpath(basepath) |
7dab4c0cdb41
setup: do not overwrite local __modulepolicy__.py on out-of-source build
Yuya Nishihara <yuya@tcha.org>
parents:
32670
diff
changeset
|
728 |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
729 rust = self.distribution.rust |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
730 if self.distribution.pure: |
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
731 modulepolicy = 'py' |
32291
a04f5c651e52
policy: relax the default for in-place build
Yuya Nishihara <yuya@tcha.org>
parents:
32273
diff
changeset
|
732 elif self.build_lib == '.': |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
733 # 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:
42467
diff
changeset
|
734 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
|
735 else: |
42469
94167e701e12
rust: new rust options in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42467
diff
changeset
|
736 modulepolicy = 'rust+c' if rust else 'c' |
35238
61ff0d7d56fd
setup: only write some autogenerated files if they change
Gregory Szorc <gregory.szorc@gmail.com>
parents:
35126
diff
changeset
|
737 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
738 content = b''.join( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
739 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
740 b'# this file is autogenerated by setup.py\n', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
741 b'modulepolicy = b"%s"\n' % modulepolicy.encode('ascii'), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
742 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
743 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
744 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
|
745 |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28418
diff
changeset
|
746 build_py.run(self) |
7722
103127a8cbdb
add --pure flag to setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7721
diff
changeset
|
747 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
748 |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
749 class buildhgextindex(Command): |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
750 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
|
751 user_options = [] |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
752 _indexfilename = 'hgext/__index__.py' |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
753 |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
754 def initialize_options(self): |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
755 pass |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
756 |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
757 def finalize_options(self): |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
758 pass |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
759 |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
760 def run(self): |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
761 if os.path.exists(self._indexfilename): |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
762 with open(self._indexfilename, 'w') as f: |
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
763 f.write('# empty\n') |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
764 |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
765 # here no extension enabled, disabled() lists up everything |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
766 code = ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
767 'import pprint; from mercurial import extensions; ' |
44189
bb58931d0c4f
setup: exclude the __index__ module from itself when generating
Matt Harbison <matt_harbison@yahoo.com>
parents:
44142
diff
changeset
|
768 'ext = extensions.disabled();' |
bb58931d0c4f
setup: exclude the __index__ module from itself when generating
Matt Harbison <matt_harbison@yahoo.com>
parents:
44142
diff
changeset
|
769 'ext.pop("__index__", None);' |
bb58931d0c4f
setup: exclude the __index__ module from itself when generating
Matt Harbison <matt_harbison@yahoo.com>
parents:
44142
diff
changeset
|
770 'pprint.pprint(ext)' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
771 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
772 returncode, out, err = runcmd( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
773 [sys.executable, '-c', code], localhgenv() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
774 ) |
33123
87ee783f7299
setup: update runcmd() to also return the exit status
Adam Simpkins <simpkins@fb.com>
parents:
33122
diff
changeset
|
775 if err or returncode != 0: |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
776 raise DistutilsExecError(err) |
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
777 |
42075
456c37433c43
py3: write out hgextindex as bytes in setup.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
42074
diff
changeset
|
778 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
|
779 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
|
780 f.write(b'docs = ') |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
781 f.write(out) |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
14324
diff
changeset
|
782 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
783 |
17061
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
784 class buildhgexe(build_ext): |
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
785 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:
34398
diff
changeset
|
786 |
49441
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
787 LONG_PATHS_MANIFEST = """\ |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
788 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
789 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
790 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
791 <security> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
792 <requestedPrivileges> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
793 <requestedExecutionLevel |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
794 level="asInvoker" |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
795 uiAccess="false" |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
796 /> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
797 </requestedPrivileges> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
798 </security> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
799 </trustInfo> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
800 <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
801 <application> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
802 <!-- Windows Vista --> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
803 <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
804 <!-- Windows 7 --> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
805 <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
806 <!-- Windows 8 --> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
807 <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
808 <!-- Windows 8.1 --> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
809 <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
810 <!-- Windows 10 and Windows 11 --> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
811 <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
812 </application> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
813 </compatibility> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
814 <application xmlns="urn:schemas-microsoft-com:asm.v3"> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
815 <windowsSettings |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
816 xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings"> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
817 <ws2:longPathAware>true</ws2:longPathAware> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
818 </windowsSettings> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
819 </application> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
820 <dependency> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
821 <dependentAssembly> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
822 <assemblyIdentity type="win32" |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
823 name="Microsoft.Windows.Common-Controls" |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
824 version="6.0.0.0" |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
825 processorArchitecture="*" |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
826 publicKeyToken="6595b64144ccf1df" |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
827 language="*" /> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
828 </dependentAssembly> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
829 </dependency> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
830 </assembly> |
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
831 """ |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
832 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
833 def initialize_options(self): |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
834 build_ext.initialize_options(self) |
17061
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
835 |
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
836 def build_extensions(self): |
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
837 if os.name != 'nt': |
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
838 return |
17246
bf5bb38bcc7c
setup: fix build_hgexe for mingw32 compiler
Adrian Buehlmann <adrian@cadifra.com>
parents:
17121
diff
changeset
|
839 if isinstance(self.compiler, HackedMingw32CCompiler): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
840 self.compiler.compiler_so = self.compiler.compiler # no -mdll |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
841 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
|
842 |
43718
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
843 pythonlib = None |
29020
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
844 |
49439
5cf73de964e1
setup: stop shadowing the builtin `dir` symbol
Matt Harbison <matt_harbison@yahoo.com>
parents:
49318
diff
changeset
|
845 dirname = os.path.dirname(self.get_ext_fullpath('dummy')) |
5cf73de964e1
setup: stop shadowing the builtin `dir` symbol
Matt Harbison <matt_harbison@yahoo.com>
parents:
49318
diff
changeset
|
846 self.hgtarget = os.path.join(dirname, 'hg') |
48303
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
847 |
43718
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
848 if getattr(sys, 'dllhandle', None): |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
849 # 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:
43717
diff
changeset
|
850 # 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:
43717
diff
changeset
|
851 # and MinGW uses libpythonX.Y.dll. |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
852 _kernel32 = ctypes.windll.kernel32 |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
853 _kernel32.GetModuleFileNameA.argtypes = [ |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
854 ctypes.c_void_p, |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
855 ctypes.c_void_p, |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
856 ctypes.c_ulong, |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
857 ] |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
858 _kernel32.GetModuleFileNameA.restype = ctypes.c_ulong |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
859 size = 1000 |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
860 buf = ctypes.create_string_buffer(size + 1) |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
861 filelen = _kernel32.GetModuleFileNameA( |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
862 sys.dllhandle, ctypes.byref(buf), size |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
863 ) |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
864 |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
865 if filelen > 0 and filelen != size: |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
866 dllbasename = os.path.basename(buf.value) |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
867 if not dllbasename.lower().endswith(b'.dll'): |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
868 raise SystemExit( |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
869 '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:
43717
diff
changeset
|
870 ) |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
871 pythonlib = dllbasename[:-4] |
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
872 |
48303
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
873 # Copy the pythonXY.dll next to the binary so that it runs |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
874 # without tampering with PATH. |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
875 dest = os.path.join( |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
876 os.path.dirname(self.hgtarget), |
48920
fef4198c855c
setup: inline os.fsdecode now that we're done with Python 2
Augie Fackler <augie@google.com>
parents:
48919
diff
changeset
|
877 os.fsdecode(dllbasename), |
48303
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
878 ) |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
879 |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
880 if not os.path.exists(dest): |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
881 shutil.copy(buf.value, dest) |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
882 |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
883 # Also overwrite python3.dll so that hgext.git is usable. |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
884 # TODO: also handle the MSYS flavor |
48922
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
885 python_x = os.path.join( |
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
886 os.path.dirname(os.fsdecode(buf.value)), |
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
887 "python3.dll", |
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
888 ) |
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
889 |
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
890 if os.path.exists(python_x): |
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
891 dest = os.path.join( |
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
892 os.path.dirname(self.hgtarget), |
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
893 os.path.basename(python_x), |
48303
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
894 ) |
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
895 |
48922
40e35034eac8
setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com>
parents:
48921
diff
changeset
|
896 shutil.copy(python_x, dest) |
48303
2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
Rapha?l Gom?s <rgomes@octobus.net>
parents:
48194
diff
changeset
|
897 |
43718
52e4bfebc4ba
setup: conditionalize access to `sys.dllhandle` when building extensions
Matt Harbison <matt_harbison@yahoo.com>
parents:
43717
diff
changeset
|
898 if not pythonlib: |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
899 logging.warning( |
43716
666441b649e4
setup: combine two contiguous string literals
Matt Harbison <matt_harbison@yahoo.com>
parents:
43676
diff
changeset
|
900 'could not determine Python DLL filename; assuming pythonXY' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
901 ) |
29020
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
902 |
ee2e4a2c3690
setup: detect Python DLL filename from loaded DLL
Gregory Szorc <gregory.szorc@gmail.com>
parents:
28625
diff
changeset
|
903 hv = sys.hexversion |
43717
6a5dc4d767a0
setup: use bytes for assumed python version
Matt Harbison <matt_harbison@yahoo.com>
parents:
43716
diff
changeset
|
904 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
|
905 |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
906 logging.info('using %s as Python library name', pythonlib) |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
907 with open('mercurial/hgpythonlib.h', 'wb') as f: |
39624
ec68135a8935
py3: add b'' to some setup.py strings for Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
39588
diff
changeset
|
908 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:
39588
diff
changeset
|
909 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
|
910 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
911 objects = self.compiler.compile( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
912 ['mercurial/exewrapper.c'], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
913 output_dir=self.build_temp, |
48923
b07b034cf548
setup: inline now-constant list
Augie Fackler <augie@google.com>
parents:
48922
diff
changeset
|
914 macros=[('_UNICODE', None), ('UNICODE', None)], |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
915 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
916 self.compiler.link_executable( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
917 objects, self.hgtarget, libraries=[], output_dir=self.build_temp |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
918 ) |
49440
747c4fc20886
setup: unconditionally enable the `long-paths-support` option on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49439
diff
changeset
|
919 |
747c4fc20886
setup: unconditionally enable the `long-paths-support` option on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49439
diff
changeset
|
920 self.addlongpathsmanifest() |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
921 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
922 def addlongpathsmanifest(self): |
49440
747c4fc20886
setup: unconditionally enable the `long-paths-support` option on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49439
diff
changeset
|
923 """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:
34398
diff
changeset
|
924 |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
925 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:
34398
diff
changeset
|
926 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:
34398
diff
changeset
|
927 """ |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
928 exefname = self.compiler.executable_filename(self.hgtarget) |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
929 fdauto, manfname = tempfile.mkstemp(suffix='.hg.exe.manifest') |
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
930 os.close(fdauto) |
49441
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
931 with open(manfname, 'w', encoding="UTF-8") as f: |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
932 f.write(self.LONG_PATHS_MANIFEST) |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
933 logging.info("long paths manifest is written to '%s'", manfname) |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
934 outputresource = '-outputresource:%s;#1' % exefname |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
935 logging.info("running mt.exe to update hg.exe's manifest in-place") |
49441
ece490b02a9b
setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com>
parents:
49440
diff
changeset
|
936 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
937 self.spawn( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
938 [ |
49440
747c4fc20886
setup: unconditionally enable the `long-paths-support` option on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
49439
diff
changeset
|
939 self.compiler.mt, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
940 '-nologo', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
941 '-manifest', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
942 manfname, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
943 outputresource, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
944 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
945 ) |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
946 logging.info("done updating hg.exe's manifest") |
34530
ed5acd3fd7e1
windows: add an experimental option for long paths support
Kostia Balytskyi <ikostia@fb.com>
parents:
34398
diff
changeset
|
947 os.remove(manfname) |
17061
f20e4d76b711
setup: compile hg.exe
Adrian Buehlmann <adrian@cadifra.com>
parents:
16775
diff
changeset
|
948 |
27268
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
949 @property |
ed1660ce99d9
setup.py: attempt to build and install hg.exe on Windows
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27222
diff
changeset
|
950 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
|
951 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
|
952 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
|
953 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
954 |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
955 class hgbuilddoc(Command): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
956 description = 'build documentation' |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
957 user_options = [ |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
958 ('man', None, 'generate man pages'), |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
959 ('html', None, 'generate html pages'), |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
960 ] |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
961 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
962 def initialize_options(self): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
963 self.man = None |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
964 self.html = None |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
965 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
966 def finalize_options(self): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
967 # 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:
41768
diff
changeset
|
968 # Otherwise generate everything. |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
969 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:
41768
diff
changeset
|
970 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
971 if have_subset: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
972 self.man = True if self.man else False |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
973 self.html = True if self.html else False |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
974 else: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
975 self.man = True |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
976 self.html = True |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
977 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
978 def run(self): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
979 def normalizecrlf(p): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
980 with open(p, 'rb') as fh: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
981 orig = fh.read() |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
982 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
983 if b'\r\n' not in orig: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
984 return |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
985 |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
986 logging.info('normalizing %s to LF line endings', p) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
987 with open(p, 'wb') as fh: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
988 fh.write(orig.replace(b'\r\n', b'\n')) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
989 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
990 def gentxt(root): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
991 txt = 'doc/%s.txt' % root |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
992 logging.info('generating %s', txt) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
993 res, out, err = runcmd( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
994 [sys.executable, 'gendoc.py', root], os.environ, cwd='doc' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
995 ) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
996 if res: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
997 raise SystemExit( |
44737
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
998 'error running gendoc.py: %s' |
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
999 % '\n'.join([sysstr(out), sysstr(err)]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1000 ) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1001 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1002 with open(txt, 'wb') as fh: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1003 fh.write(out) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1004 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1005 def gengendoc(root): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1006 gendoc = 'doc/%s.gendoc.txt' % root |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1007 |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
1008 logging.info('generating %s', gendoc) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1009 res, out, err = runcmd( |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1010 [sys.executable, 'gendoc.py', '%s.gendoc' % root], |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1011 os.environ, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1012 cwd='doc', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1013 ) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1014 if res: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1015 raise SystemExit( |
44737
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1016 'error running gendoc: %s' |
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1017 % '\n'.join([sysstr(out), sysstr(err)]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1018 ) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1019 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1020 with open(gendoc, 'wb') as fh: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1021 fh.write(out) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1022 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1023 def genman(root): |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
1024 logging.info('generating doc/%s', root) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1025 res, out, err = runcmd( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1026 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1027 sys.executable, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1028 'runrst', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1029 'hgmanpage', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1030 '--halt', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1031 'warning', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1032 '--strip-elements-with-class', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1033 'htmlonly', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1034 '%s.txt' % root, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1035 root, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1036 ], |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1037 os.environ, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1038 cwd='doc', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1039 ) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1040 if res: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1041 raise SystemExit( |
44737
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1042 'error running runrst: %s' |
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1043 % '\n'.join([sysstr(out), sysstr(err)]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1044 ) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1045 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1046 normalizecrlf('doc/%s' % root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1047 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1048 def genhtml(root): |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
1049 logging.info('generating doc/%s.html', root) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1050 res, out, err = runcmd( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1051 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1052 sys.executable, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1053 'runrst', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1054 'html', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1055 '--halt', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1056 'warning', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1057 '--link-stylesheet', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1058 '--stylesheet-path', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1059 'style.css', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1060 '%s.txt' % root, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1061 '%s.html' % root, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1062 ], |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1063 os.environ, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1064 cwd='doc', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1065 ) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1066 if res: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1067 raise SystemExit( |
44737
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1068 'error running runrst: %s' |
380959c6f75e
setup: use sysstr() on process output
Gregory Szorc <gregory.szorc@gmail.com>
parents:
44729
diff
changeset
|
1069 % '\n'.join([sysstr(out), sysstr(err)]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1070 ) |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1071 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1072 normalizecrlf('doc/%s.html' % root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1073 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1074 # This logic is duplicated in doc/Makefile. |
44470
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44460
diff
changeset
|
1075 sources = { |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1076 f |
43769
c7fc2d92067e
windows: further build fixes for the WiX installer
Augie Fackler <augie@google.com>
parents:
43718
diff
changeset
|
1077 for f in os.listdir('mercurial/helptext') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1078 if re.search(r'[0-9]\.txt$', f) |
44470
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44460
diff
changeset
|
1079 } |
41855
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1080 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1081 # common.txt is a one-off. |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1082 gentxt('common') |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1083 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1084 for source in sorted(sources): |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1085 assert source[-4:] == '.txt' |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1086 root = source[:-4] |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1087 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1088 gentxt(root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1089 gengendoc(root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1090 |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1091 if self.man: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1092 genman(root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1093 if self.html: |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1094 genhtml(root) |
d80d48928eb1
setup: define build_doc command
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41768
diff
changeset
|
1095 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1096 |
32670
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32539
diff
changeset
|
1097 class hginstall(install): |
32745
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32675
diff
changeset
|
1098 user_options = install.user_options + [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1099 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1100 'old-and-unmanageable', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1101 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1102 'noop, present for eggless setuptools compat', |
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 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1105 'single-version-externally-managed', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1106 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1107 'noop, present for eggless setuptools compat', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1108 ), |
32745
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32675
diff
changeset
|
1109 ] |
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32675
diff
changeset
|
1110 |
49066
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1111 sub_commands = install.sub_commands + [ |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1112 ('install_completion', lambda self: True) |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1113 ] |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1114 |
32745
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32675
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:
32675
diff
changeset
|
1116 single_version_externally_managed = True |
6c4b58422974
setup: introduce dummy copies of setuptools flags
Augie Fackler <augie@google.com>
parents:
32675
diff
changeset
|
1117 |
32670
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32539
diff
changeset
|
1118 def get_sub_commands(self): |
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32539
diff
changeset
|
1119 # 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:
32539
diff
changeset
|
1120 # 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:
32539
diff
changeset
|
1121 # packaging. |
44470
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44460
diff
changeset
|
1122 excl = {'bdist_egg'} |
46315
2ef575c62f10
test-regression: backing out D9640 (63c923fd7fa8)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46243
diff
changeset
|
1123 return filter(lambda x: x not in excl, install.get_sub_commands(self)) |
32670
331dcf199039
setup: prevent setuptools from laying an egg
Matt Harbison <matt_harbison@yahoo.com>
parents:
32539
diff
changeset
|
1124 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1125 |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1126 class hginstalllib(install_lib): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1127 """ |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1128 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
|
1129 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
|
1130 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
|
1131 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
|
1132 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
|
1133 |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1134 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
|
1135 insufficient, as it might still be applying a umask. |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1136 """ |
22640
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 def run(self): |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1139 realcopyfile = file_util.copy_file |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1140 |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1141 def copyfileandsetmode(*args, **kwargs): |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1142 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
|
1143 dst, copied = realcopyfile(*args, **kwargs) |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1144 if copied: |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1145 st = os.stat(src) |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1146 # 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
|
1147 # has it) |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1148 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
|
1149 setmode = int('0755', 8) |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1150 else: |
24941
9c1942635c1f
setup: hide octal literals inside strings so they're portable (issue4554)
Augie Fackler <augie@google.com>
parents:
24214
diff
changeset
|
1151 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
|
1152 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
|
1153 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
|
1154 os.chmod(dst, m) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1155 |
22640
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1156 file_util.copy_file = copyfileandsetmode |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1157 try: |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1158 install_lib.run(self) |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1159 finally: |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1160 file_util.copy_file = realcopyfile |
e88a634e0195
setup: set mode 644 or 755 on installed files
Kyle Lippincott <spectral@google.com>
parents:
22575
diff
changeset
|
1161 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1162 |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1163 class hginstallscripts(install_scripts): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1164 """ |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1165 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
|
1166 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
|
1167 to the directory for scripts. |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
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 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1170 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
|
1171 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
|
1172 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1173 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
|
1174 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1175 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
|
1176 install_scripts.finalize_options(self) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1177 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
|
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 run(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.run(self) |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1181 |
27269
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1182 # 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
|
1183 # 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
|
1184 # 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
|
1185 # wheel archive looks like: |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1186 # |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1187 # 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
|
1188 # mercurial/__init__.py |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1189 # |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1190 # 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
|
1191 # 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
|
1192 # 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
|
1193 # 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
|
1194 # 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
|
1195 # 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
|
1196 # 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
|
1197 # 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
|
1198 # 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
|
1199 # 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
|
1200 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1201 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1202 os.path.splitdrive(self.install_dir)[0] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1203 != os.path.splitdrive(self.install_lib)[0] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1204 ): |
12661
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1205 # 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
|
1206 # 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
|
1207 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
|
1208 else: |
44080
4e05272dd681
packaging: leverage os.path.relpath() in setup.py
Martin von Zweigbergk <martinvonz@google.com>
parents:
44058
diff
changeset
|
1209 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
|
1210 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1211 for outfile in self.outfiles: |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
1212 with open(outfile, 'rb') as fp: |
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
1213 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
|
1214 |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1215 # skip binary files |
27348
83a8219fb790
setup.py: use bytes literals
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27269
diff
changeset
|
1216 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
|
1217 continue |
10da5a1f25dd
setup/hg: always load Mercurial from where it was installed.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12649
diff
changeset
|
1218 |
27269
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1219 # 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
|
1220 # 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
|
1221 # value. |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1222 if data.startswith(b'#!python'): |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
1223 logging.info( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1224 'not rewriting @LIBDIR@ in %s because install path ' |
52358
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
1225 'not known', |
599b6ce304a7
setup_py: logging without distutils
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
52357
diff
changeset
|
1226 outfile, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1227 ) |
27269
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1228 continue |
bdcbec65750b
setup.py: don't rewrite @LIBDIR@ when creating wheels
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27268
diff
changeset
|
1229 |
48919
40a65f5594f5
setup: inline encoding constant that is only used once
Augie Fackler <augie@google.com>
parents:
48918
diff
changeset
|
1230 data = data.replace(b'@LIBDIR@', libdir.encode('unicode_escape')) |
28418
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
1231 with open(outfile, 'wb') as fp: |
121d25719e92
setup: switch to with open as
timeless <timeless@mozdev.org>
parents:
28398
diff
changeset
|
1232 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
|
1233 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1234 |
49066
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1235 class hginstallcompletion(Command): |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1236 description = 'Install shell completion' |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1237 |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1238 def initialize_options(self): |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1239 self.install_dir = None |
49103
b6f535f3beda
setup: fix incomplete implementation of Command
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49066
diff
changeset
|
1240 self.outputs = [] |
49066
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1241 |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1242 def finalize_options(self): |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1243 self.set_undefined_options( |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1244 'install_data', ('install_dir', 'install_dir') |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1245 ) |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1246 |
49103
b6f535f3beda
setup: fix incomplete implementation of Command
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49066
diff
changeset
|
1247 def get_outputs(self): |
b6f535f3beda
setup: fix incomplete implementation of Command
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49066
diff
changeset
|
1248 return self.outputs |
b6f535f3beda
setup: fix incomplete implementation of Command
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49066
diff
changeset
|
1249 |
49066
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1250 def run(self): |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1251 for src, dir_path, dest in ( |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1252 ( |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1253 'bash_completion', |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1254 ('share', 'bash-completion', 'completions'), |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1255 'hg', |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1256 ), |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1257 ('zsh_completion', ('share', 'zsh', 'site-functions'), '_hg'), |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1258 ): |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1259 dir = os.path.join(self.install_dir, *dir_path) |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1260 self.mkpath(dir) |
49103
b6f535f3beda
setup: fix incomplete implementation of Command
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49066
diff
changeset
|
1261 |
b6f535f3beda
setup: fix incomplete implementation of Command
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49066
diff
changeset
|
1262 dest = os.path.join(dir, dest) |
b6f535f3beda
setup: fix incomplete implementation of Command
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49066
diff
changeset
|
1263 self.outputs.append(dest) |
b6f535f3beda
setup: fix incomplete implementation of Command
Rapha?l Gom?s <rgomes@octobus.net>
parents:
49066
diff
changeset
|
1264 self.copy_file(os.path.join('contrib', src), dest) |
49066
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1265 |
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1266 |
42150
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1267 # 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
|
1268 # 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
|
1269 # "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
|
1270 # 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
|
1271 # 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
|
1272 # 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
|
1273 # |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1274 # 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
|
1275 # 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
|
1276 # 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
|
1277 # 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
|
1278 # deterministic and reproducible. |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1279 # |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1280 # 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
|
1281 # 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
|
1282 # 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
|
1283 # 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
|
1284 # 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
|
1285 # 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
|
1286 # is less brittle. |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1287 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1288 # 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
|
1289 # 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
|
1290 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
|
1291 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1292 if py2exehacked: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1293 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
|
1294 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
|
1295 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1296 class hgbuildpy2exe(buildpy2exe): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1297 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
|
1298 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
|
1299 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1300 # Replace virtualenv's distutils modules with the real ones. |
42152
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42150
diff
changeset
|
1301 modules = {} |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42150
diff
changeset
|
1302 for k, v in res.modules.items(): |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42150
diff
changeset
|
1303 if k != 'distutils' and not k.startswith('distutils.'): |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42150
diff
changeset
|
1304 modules[k] = v |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42150
diff
changeset
|
1305 |
bd92dd3eff42
setup: remove set and dict comprehensions
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42150
diff
changeset
|
1306 res.modules = modules |
42150
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1307 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1308 import opcode |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1309 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1310 distutilsreal = os.path.join( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1311 os.path.dirname(opcode.__file__), 'distutils' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1312 ) |
42150
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1313 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1314 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
|
1315 for f in sorted(files): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1316 if not f.endswith('.py'): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1317 continue |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1318 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1319 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
|
1320 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1321 parents = ['distutils'] |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1322 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1323 if root != distutilsreal: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1324 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
|
1325 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
|
1326 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1327 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
|
1328 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1329 if modname.startswith('distutils.tests.'): |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1330 continue |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1331 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1332 if modname.endswith('.__init__'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1333 modname = modname[: -len('.__init__')] |
42150
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1334 path = os.path.dirname(full) |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1335 else: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1336 path = None |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1337 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1338 res.modules[modname] = py2exemodule( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1339 modname, full, path=path |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1340 ) |
42150
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1341 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1342 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
|
1343 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
|
1344 |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1345 return res |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1346 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1347 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1348 cmdclass = { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1349 'build': hgbuild, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1350 'build_doc': hgbuilddoc, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1351 'build_mo': hgbuildmo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1352 'build_ext': hgbuildext, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1353 'build_py': hgbuildpy, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1354 'build_scripts': hgbuildscripts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1355 'build_hgextindex': buildhgextindex, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1356 'install': hginstall, |
49066
8d7eaff92f9c
completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com>
parents:
49037
diff
changeset
|
1357 'install_completion': hginstallcompletion, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1358 'install_lib': hginstalllib, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1359 'install_scripts': hginstallscripts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1360 'build_hgexe': buildhgexe, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1361 } |
3238
3dba9ec89164
Applied coding style to setup.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2402
diff
changeset
|
1362 |
42150
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1363 if py2exehacked: |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1364 cmdclass['py2exe'] = hgbuildpy2exe |
71d8b4d91616
setup: properly package distutils in py2exe virtualenv builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
42075
diff
changeset
|
1365 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1366 packages = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1367 'mercurial', |
50995
727428c7e1fc
commands: add admin namespace
Franck Bret <franck.bret@octobus.net>
parents:
50953
diff
changeset
|
1368 'mercurial.admin', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1369 'mercurial.cext', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1370 'mercurial.cffi', |
52360
f2fc0a91faca
commands: create a "mercurial.cmd_impls" module to host graft
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52358
diff
changeset
|
1371 'mercurial.cmd_impls', |
52447
0a81f3ef054c
config: move `rcutil` module under a new `mercurial.configuration` module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52437
diff
changeset
|
1372 'mercurial.configuration', |
51938
f0e07efc199f
rev-branch-cache: move the code in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
51887
diff
changeset
|
1373 'mercurial.branching', |
44028
44b03c0313aa
setup: include `defaultrc` in the package list
Matt Harbison <matt_harbison@yahoo.com>
parents:
43812
diff
changeset
|
1374 'mercurial.defaultrc', |
47674
ff97e793ed36
dirstate-v2: Introduce a docket file
Simon Sapin <simon.sapin@octobus.net>
parents:
47007
diff
changeset
|
1375 'mercurial.dirstateutils', |
43676
2e017696181f
help: create packages for the help text
Matt Harbison <matt_harbison@yahoo.com>
parents:
43349
diff
changeset
|
1376 'mercurial.helptext', |
2e017696181f
help: create packages for the help text
Matt Harbison <matt_harbison@yahoo.com>
parents:
43349
diff
changeset
|
1377 'mercurial.helptext.internals', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1378 'mercurial.hgweb', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1379 'mercurial.interfaces', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1380 'mercurial.pure', |
50460
f0d2b18f0274
stabletailgraph: implement stable-tail sort
pacien <pacien.trangirard@pacien.net>
parents:
50442
diff
changeset
|
1381 'mercurial.stabletailgraph', |
45325
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45294
diff
changeset
|
1382 'mercurial.templates', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1383 'mercurial.thirdparty', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1384 'mercurial.thirdparty.attr', |
50800
2c34c9b61a4f
thirdparty: vendor tomli
Rapha?l Gom?s <rgomes@octobus.net>
parents:
50730
diff
changeset
|
1385 'mercurial.thirdparty.tomli', |
46050
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45957
diff
changeset
|
1386 'mercurial.upgrade_utils', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1387 'mercurial.utils', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1388 'mercurial.revlogutils', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1389 'mercurial.testing', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1390 'hgext', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1391 'hgext.convert', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1392 'hgext.fsmonitor', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1393 'hgext.fastannotate', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1394 'hgext.fsmonitor.pywatchman', |
44489
ad718271a9eb
git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
44484
diff
changeset
|
1395 'hgext.git', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1396 'hgext.highlight', |
44440
4cabeea6d214
hgext: start building a library for simple hooks
Joerg Sonnenberger <joerg@bec.de>
parents:
44348
diff
changeset
|
1397 'hgext.hooklib', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1398 'hgext.largefiles', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1399 'hgext.lfs', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1400 'hgext.narrow', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1401 'hgext.remotefilelog', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1402 'hgext.zeroconf', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1403 'hgext3rd', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1404 'hgdemandimport', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1405 ] |
45325
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45294
diff
changeset
|
1406 |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45294
diff
changeset
|
1407 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:
45294
diff
changeset
|
1408 if name != '__pycache__' and os.path.isdir( |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45294
diff
changeset
|
1409 os.path.join('mercurial', 'templates', name) |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45294
diff
changeset
|
1410 ): |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45294
diff
changeset
|
1411 packages.append('mercurial.templates.%s' % name) |
41ff8a463e10
packaging: mark mercurial.templates and subdirs as packages
Martin von Zweigbergk <martinvonz@google.com>
parents:
45294
diff
changeset
|
1412 |
42054
399ed3e86a49
py2exe: add workaround to allow bundling of hgext3rd.* extensions
Augie Fackler <augie@google.com>
parents:
41959
diff
changeset
|
1413 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:
41959
diff
changeset
|
1414 # 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:
41959
diff
changeset
|
1415 # 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:
41959
diff
changeset
|
1416 # 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:
41959
diff
changeset
|
1417 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:
41959
diff
changeset
|
1418 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1419 common_depends = [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1420 'mercurial/bitmanipulation.h', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1421 'mercurial/compat.h', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1422 'mercurial/cext/util.h', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1423 ] |
32251
c48583859e04
policy: add "cext" package which will host CPython extension modules
Yuya Nishihara <yuya@tcha.org>
parents:
32178
diff
changeset
|
1424 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
|
1425 |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1426 common_cflags = [] |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1427 |
44610
960770add699
setup: relax -Werror for declaration-after-statement on Python 3.9
Augie Fackler <augie@google.com>
parents:
44596
diff
changeset
|
1428 # 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:
44596
diff
changeset
|
1429 # 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:
44596
diff
changeset
|
1430 if os.name != 'nt' and sys.version_info[1] < 9: |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1431 common_cflags = ['-Werror=declaration-after-statement'] |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1432 |
30418
ce9a3033c118
setup: test setproctitle before building osutil
Jun Wu <quark@fb.com>
parents:
30356
diff
changeset
|
1433 osutil_cflags = [] |
25073
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1434 osutil_ldflags = [] |
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1435 |
31567 | 1436 # platform specific macros |
31627
2243ba216f66
statfs: change Linux feature detection
Jun Wu <quark@fb.com>
parents:
31601
diff
changeset
|
1437 for plat, func in [('bsd', 'setproctitle')]: |
31567 | 1438 if re.search(plat, sys.platform) and hasfunction(new_compiler(), func): |
30418
ce9a3033c118
setup: test setproctitle before building osutil
Jun Wu <quark@fb.com>
parents:
30356
diff
changeset
|
1439 osutil_cflags.append('-DHAVE_%s' % func.upper()) |
ce9a3033c118
setup: test setproctitle before building osutil
Jun Wu <quark@fb.com>
parents:
30356
diff
changeset
|
1440 |
31601
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31568
diff
changeset
|
1441 for plat, macro, code in [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1442 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1443 'bsd|darwin', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1444 'BSD_STATFS', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1445 ''' |
31601
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31568
diff
changeset
|
1446 #include <sys/param.h> |
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31568
diff
changeset
|
1447 #include <sys/mount.h> |
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31568
diff
changeset
|
1448 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
|
1449 ''', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1450 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1451 ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1452 'linux', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1453 'LINUX_STATFS', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1454 ''' |
31627
2243ba216f66
statfs: change Linux feature detection
Jun Wu <quark@fb.com>
parents:
31601
diff
changeset
|
1455 #include <linux/magic.h> |
2243ba216f66
statfs: change Linux feature detection
Jun Wu <quark@fb.com>
parents:
31601
diff
changeset
|
1456 #include <sys/vfs.h> |
2243ba216f66
statfs: change Linux feature detection
Jun Wu <quark@fb.com>
parents:
31601
diff
changeset
|
1457 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
|
1458 ''', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1459 ), |
31601
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31568
diff
changeset
|
1460 ]: |
ab51a2b18f87
setup: use a more strict way to test BSD or OSX's statfs
Jun Wu <quark@fb.com>
parents:
31568
diff
changeset
|
1461 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:
31568
diff
changeset
|
1462 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:
31568
diff
changeset
|
1463 |
25073
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1464 if sys.platform == 'darwin': |
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1465 osutil_ldflags += ['-framework', 'ApplicationServices'] |
c1a9e31bec0f
setup: move osutil_ldflags logic to before extmodules definition
Adrian Buehlmann <adrian@cadifra.com>
parents:
25072
diff
changeset
|
1466 |
44220
539490756a72
setup: link osutil.so to libsocket on Solaris/illumos (issue6299)
Alexander Pyhalov <apyhalov@gmail.com>
parents:
44214
diff
changeset
|
1467 if sys.platform == 'sunos5': |
539490756a72
setup: link osutil.so to libsocket on Solaris/illumos (issue6299)
Alexander Pyhalov <apyhalov@gmail.com>
parents:
44214
diff
changeset
|
1468 osutil_ldflags += ['-lsocket'] |
539490756a72
setup: link osutil.so to libsocket on Solaris/illumos (issue6299)
Alexander Pyhalov <apyhalov@gmail.com>
parents:
44214
diff
changeset
|
1469 |
36704 | 1470 xdiff_srcs = [ |
1471 'mercurial/thirdparty/xdiff/xdiffi.c', | |
1472 'mercurial/thirdparty/xdiff/xprepare.c', | |
1473 'mercurial/thirdparty/xdiff/xutils.c', | |
1474 ] | |
1475 | |
1476 xdiff_headers = [ | |
1477 'mercurial/thirdparty/xdiff/xdiff.h', | |
1478 'mercurial/thirdparty/xdiff/xdiffi.h', | |
1479 'mercurial/thirdparty/xdiff/xinclude.h', | |
1480 'mercurial/thirdparty/xdiff/xmacros.h', | |
1481 'mercurial/thirdparty/xdiff/xprepare.h', | |
1482 'mercurial/thirdparty/xdiff/xtypes.h', | |
1483 'mercurial/thirdparty/xdiff/xutils.h', | |
1484 ] | |
1485 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1486 |
40979
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40877
diff
changeset
|
1487 class RustCompilationError(CCompilerError): |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40877
diff
changeset
|
1488 """Exception class for Rust compilation errors.""" |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40877
diff
changeset
|
1489 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1490 |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1491 class RustExtension(Extension): |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1492 """Base classes for concrete Rust Extension classes.""" |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1493 |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1494 rusttargetdir = os.path.join('rust', 'target', 'release') |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1495 |
48194
01c3dd208c75
rust: Make the hg-cpython crate default to Python 3
Simon Sapin <simon.sapin@octobus.net>
parents:
48192
diff
changeset
|
1496 def __init__(self, mpath, sources, rustlibname, subcrate, **kw): |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1497 Extension.__init__(self, mpath, sources, **kw) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1498 srcdir = self.rustsrcdir = os.path.join('rust', subcrate) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1499 |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1500 # adding Rust source and control files to depends so that the extension |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1501 # gets rebuilt if they've changed |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1502 self.depends.append(os.path.join(srcdir, 'Cargo.toml')) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1503 cargo_lock = os.path.join(srcdir, 'Cargo.lock') |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1504 if os.path.exists(cargo_lock): |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1505 self.depends.append(cargo_lock) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1506 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
|
1507 self.depends.extend( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1508 os.path.join(dirpath, fname) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1509 for fname in fnames |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1510 if os.path.splitext(fname)[1] == '.rs' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1511 ) |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1512 |
42473
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1513 @staticmethod |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1514 def rustdylibsuffix(): |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1515 """Return the suffix for shared libraries produced by rustc. |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1516 |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1517 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:
42469
diff
changeset
|
1518 """ |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1519 if sys.platform == 'darwin': |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1520 return '.dylib' |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1521 elif os.name == 'nt': |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1522 return '.dll' |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1523 else: |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1524 return '.so' |
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1525 |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1526 def rustbuild(self): |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1527 env = os.environ.copy() |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1528 if 'HGTEST_RESTOREENV' in env: |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1529 # Mercurial tests change HOME to a temporary directory, |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1530 # but, if installed with rustup, the Rust toolchain needs |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1531 # HOME to be correct (otherwise the 'no default toolchain' |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1532 # error message is issued and the build fails). |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1533 # This happens currently with test-hghave.t, which does |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1534 # invoke this build. |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1535 |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1536 # Unix only fix (os.path.expanduser not really reliable if |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1537 # HOME is shadowed like this) |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1538 import pwd |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1539 |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1540 env['HOME'] = pwd.getpwuid(os.getuid()).pw_dir |
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1541 |
52212
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1542 # Wildy shooting in the dark to make sure rust-cpython use the right |
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1543 # python |
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1544 if not sys.executable: |
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1545 msg = "Cannot determine which Python to compile Rust for" |
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1546 raise RustCompilationError(msg) |
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1547 env['PYTHON_SYS_EXECUTABLE'] = sys.executable |
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1548 env['PYTHONEXECUTABLE'] = sys.executable |
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1549 env['PYTHON'] = sys.executable |
124c944b71b2
setup: make sure Rust build its extension for the right python
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
52206
diff
changeset
|
1550 |
44905
47787a48f469
setup: stop asking cargo to spam
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
44737
diff
changeset
|
1551 cargocmd = ['cargo', 'rustc', '--release'] |
44348
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44302
diff
changeset
|
1552 |
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44302
diff
changeset
|
1553 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:
44302
diff
changeset
|
1554 if rust_features: |
48933
649ff7f86f96
rust: enable Python 3 support unconditionally
Simon Sapin <simon.sapin@octobus.net>
parents:
48929
diff
changeset
|
1555 cargocmd.extend(('--features', rust_features)) |
44348
d8d4fa9a7f18
rust-re2: add wrapper for calling Re2 from Rust
Rapha?l Gom?s <rgomes@octobus.net>
parents:
44302
diff
changeset
|
1556 |
42475
85041e2b69c7
rust: switched to 'cargo rustc' in setup.py
Georges Racinet <georges.racinet@octobus.net>
parents:
42474
diff
changeset
|
1557 cargocmd.append('--') |
42474
8ee0fdf3b087
rust-cpython: fix build for MacOSX
Georges Racinet <georges.racinet@octobus.net>
parents:
42473
diff
changeset
|
1558 if sys.platform == 'darwin': |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1559 cargocmd.extend( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1560 ("-C", "link-arg=-undefined", "-C", "link-arg=dynamic_lookup") |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1561 ) |
40979
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40877
diff
changeset
|
1562 try: |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40877
diff
changeset
|
1563 subprocess.check_call(cargocmd, env=env, cwd=self.rustsrcdir) |
49318
050dc8730858
py3: catch specific OSError subclasses instead of checking errno
Manuel Jacob <me@manueljacob.de>
parents:
49128
diff
changeset
|
1564 except FileNotFoundError: |
050dc8730858
py3: catch specific OSError subclasses instead of checking errno
Manuel Jacob <me@manueljacob.de>
parents:
49128
diff
changeset
|
1565 raise RustCompilationError("Cargo not found") |
050dc8730858
py3: catch specific OSError subclasses instead of checking errno
Manuel Jacob <me@manueljacob.de>
parents:
49128
diff
changeset
|
1566 except PermissionError: |
050dc8730858
py3: catch specific OSError subclasses instead of checking errno
Manuel Jacob <me@manueljacob.de>
parents:
49128
diff
changeset
|
1567 raise RustCompilationError( |
050dc8730858
py3: catch specific OSError subclasses instead of checking errno
Manuel Jacob <me@manueljacob.de>
parents:
49128
diff
changeset
|
1568 "Cargo found, but permission to execute it is denied" |
050dc8730858
py3: catch specific OSError subclasses instead of checking errno
Manuel Jacob <me@manueljacob.de>
parents:
49128
diff
changeset
|
1569 ) |
40979
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40877
diff
changeset
|
1570 except subprocess.CalledProcessError: |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40877
diff
changeset
|
1571 raise RustCompilationError( |
1eaf62a67c1a
rust: better treatment of cargo/rustc errors
Georges Racinet <gracinet@anybox.fr>
parents:
40877
diff
changeset
|
1572 "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
|
1573 "command: %r, environment: %r" |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1574 % (self.rustsrcdir, cargocmd, env) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1575 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1576 |
40273
3b275f549777
rust: exposing in parsers module
Georges Racinet <gracinet@anybox.fr>
parents:
40122
diff
changeset
|
1577 |
40980
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1578 class RustStandaloneExtension(RustExtension): |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1579 def __init__(self, pydottedname, rustcrate, dylibname, **kw): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1580 RustExtension.__init__( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1581 self, pydottedname, [], dylibname, rustcrate, **kw |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1582 ) |
40980
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1583 self.dylibname = dylibname |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1584 |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1585 def build(self, target_dir): |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1586 self.rustbuild() |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1587 target = [target_dir] |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1588 target.extend(self.name.split('.')) |
42473
f4a65077e949
rust-cpython: management of shared libray suffix
Georges Racinet <georges.racinet@octobus.net>
parents:
42469
diff
changeset
|
1589 target[-1] += DYLIB_SUFFIX |
50019
ff4df0954742
setup: Ensure target directory exists with building rust extension
C?dric Krier <ced@b2ck.com>
parents:
49958
diff
changeset
|
1590 target = os.path.join(*target) |
ff4df0954742
setup: Ensure target directory exists with building rust extension
C?dric Krier <ced@b2ck.com>
parents:
49958
diff
changeset
|
1591 os.makedirs(os.path.dirname(target), exist_ok=True) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1592 shutil.copy2( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1593 os.path.join( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1594 self.rusttargetdir, self.dylibname + self.rustdylibsuffix() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1595 ), |
50019
ff4df0954742
setup: Ensure target directory exists with building rust extension
C?dric Krier <ced@b2ck.com>
parents:
49958
diff
changeset
|
1596 target, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1597 ) |
40980
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1598 |
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1599 |
10000
16f49d671c7f
setup: cleanup coding style
Martin Geisler <mg@lazybytes.net>
parents:
9999
diff
changeset
|
1600 extmodules = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1601 Extension( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1602 'mercurial.cext.base85', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1603 ['mercurial/cext/base85.c'], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1604 include_dirs=common_include_dirs, |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1605 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1606 depends=common_depends, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1607 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1608 Extension( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1609 'mercurial.cext.bdiff', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1610 ['mercurial/bdiff.c', 'mercurial/cext/bdiff.c'] + xdiff_srcs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1611 include_dirs=common_include_dirs, |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1612 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1613 depends=common_depends + ['mercurial/bdiff.h'] + xdiff_headers, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1614 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1615 Extension( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1616 'mercurial.cext.mpatch', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1617 ['mercurial/mpatch.c', 'mercurial/cext/mpatch.c'], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1618 include_dirs=common_include_dirs, |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1619 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1620 depends=common_depends, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1621 ), |
44484
79ac59d3f73d
setup-rust: remove the legacy 'direct-ffi' variant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44470
diff
changeset
|
1622 Extension( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1623 'mercurial.cext.parsers', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1624 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1625 'mercurial/cext/charencode.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1626 'mercurial/cext/dirs.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1627 'mercurial/cext/manifest.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1628 'mercurial/cext/parsers.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1629 'mercurial/cext/pathencode.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1630 'mercurial/cext/revlog.c', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1631 ], |
40980
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1632 include_dirs=common_include_dirs, |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1633 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1634 depends=common_depends |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1635 + [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1636 'mercurial/cext/charencode.h', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1637 'mercurial/cext/revlog.h', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1638 ], |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1639 ), |
37182
922b3fae9c7d
setup: register zope.interface packages and compile C extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
37133
diff
changeset
|
1640 Extension( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1641 'mercurial.cext.osutil', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1642 ['mercurial/cext/osutil.c'], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1643 include_dirs=common_include_dirs, |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1644 extra_compile_args=common_cflags + osutil_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1645 extra_link_args=osutil_ldflags, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1646 depends=common_depends, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1647 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1648 Extension( |
44058
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44028
diff
changeset
|
1649 'mercurial.thirdparty.sha1dc', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44028
diff
changeset
|
1650 [ |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44028
diff
changeset
|
1651 'mercurial/thirdparty/sha1dc/cext.c', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44028
diff
changeset
|
1652 'mercurial/thirdparty/sha1dc/lib/sha1.c', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44028
diff
changeset
|
1653 'mercurial/thirdparty/sha1dc/lib/ubc_check.c', |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44028
diff
changeset
|
1654 ], |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1655 extra_compile_args=common_cflags, |
44058
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44028
diff
changeset
|
1656 ), |
bde1cd4c99d9
sha1dc: initial implementation of Python extension
Augie Fackler <augie@google.com>
parents:
44028
diff
changeset
|
1657 Extension( |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1658 'hgext.fsmonitor.pywatchman.bser', |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1659 ['hgext/fsmonitor/pywatchman/bser.c'], |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1660 extra_compile_args=common_cflags, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1661 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1662 ] |
5396
5105b119edd2
Add osutil module, containing a listdir function.
Bryan O'Sullivan <bos@serpentine.com>
parents:
5197
diff
changeset
|
1663 |
52687
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1664 if os.name != 'nt': |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1665 extmodules += [ |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1666 RustStandaloneExtension( |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1667 'mercurial.rustext', |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1668 'hg-cpython', |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1669 'librusthg', |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1670 ), |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1671 RustStandaloneExtension( |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1672 'mercurial.pyo3_rustext', |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1673 'hg-pyo3', |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1674 'librusthgpyo3', |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1675 ), |
e5aadff6cb7d
setup: skip building rust extensions on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
52686
diff
changeset
|
1676 ] |
40980
462a26756f70
rust-cpython: build via HGWITHRUSTEXT=cpython
Georges Racinet <gracinet@anybox.fr>
parents:
40979
diff
changeset
|
1677 |
30445
788ea4ac4388
setup: compile zstd C extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30418
diff
changeset
|
1678 sys.path.insert(0, 'contrib/python-zstandard') |
788ea4ac4388
setup: compile zstd C extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30418
diff
changeset
|
1679 import setup_zstd |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1680 |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1681 zstd = setup_zstd.get_c_extension( |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1682 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
|
1683 ) |
44596
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1684 zstd.extra_compile_args += common_cflags |
2a98b0cd4995
setup: build C extensions with -Werror=declaration-after-statement
Matt Harbison <matt_harbison@yahoo.com>
parents:
44499
diff
changeset
|
1685 extmodules.append(zstd) |
30445
788ea4ac4388
setup: compile zstd C extension
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30418
diff
changeset
|
1686 |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1687 try: |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1688 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
|
1689 |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1690 # the -mno-cygwin option has been deprecated for years |
33663
7686cbb0ba41
setup: fix installing in a mingw environment
Mike Hommey <mh@glandium.org>
parents:
33600
diff
changeset
|
1691 mingw32compilerclass = cygwinccompiler.Mingw32CCompiler |
17121
d13f47c800fd
setup: disable -mno-cygwin if building under mingw32
Bryan O'Sullivan <bryano@fb.com>
parents:
17061
diff
changeset
|
1692 |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1693 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
|
1694 def __init__(self, *args, **kwargs): |
33663
7686cbb0ba41
setup: fix installing in a mingw environment
Mike Hommey <mh@glandium.org>
parents:
33600
diff
changeset
|
1695 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
|
1696 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
|
1697 try: |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1698 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
|
1699 except ValueError: |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1700 pass |
17121
d13f47c800fd
setup: disable -mno-cygwin if building under mingw32
Bryan O'Sullivan <bryano@fb.com>
parents:
17061
diff
changeset
|
1701 |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1702 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
|
1703 except ImportError: |
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1704 # 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
|
1705 # 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
|
1706 # DiskStation boxes |
49037
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48941
diff
changeset
|
1707 class HackedMingw32CCompiler: |
23677
6bc1702e7333
setup: don't fail when Python doesn't have the cygwinccompiler package
Ludovic Chabant <ludovic@chabant.com>
parents:
23647
diff
changeset
|
1708 pass |
17121
d13f47c800fd
setup: disable -mno-cygwin if building under mingw32
Bryan O'Sullivan <bryano@fb.com>
parents:
17061
diff
changeset
|
1709 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1710 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1711 packagedata = { |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1712 'mercurial': [ |
50801
c51b178b0b7e
configitems: declare items in a TOML file
Rapha?l Gom?s <rgomes@octobus.net>
parents:
50800
diff
changeset
|
1713 'configitems.toml', |
45957
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1714 'locale/*/LC_MESSAGES/hg.mo', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1715 'dummycert.pem', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1716 ], |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1717 'mercurial.defaultrc': [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1718 '*.rc', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1719 ], |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1720 'mercurial.helptext': [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1721 '*.txt', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1722 ], |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1723 'mercurial.helptext.internals': [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1724 '*.txt', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45954
diff
changeset
|
1725 ], |
49771
54421ef8a423
setup: include vendored 3rd party type stubs
Matt Harbison <matt_harbison@yahoo.com>
parents:
49441
diff
changeset
|
1726 'mercurial.thirdparty.attr': [ |
54421ef8a423
setup: include vendored 3rd party type stubs
Matt Harbison <matt_harbison@yahoo.com>
parents:
49441
diff
changeset
|
1727 '*.pyi', |
54421ef8a423
setup: include vendored 3rd party type stubs
Matt Harbison <matt_harbison@yahoo.com>
parents:
49441
diff
changeset
|
1728 'py.typed', |
54421ef8a423
setup: include vendored 3rd party type stubs
Matt Harbison <matt_harbison@yahoo.com>
parents:
49441
diff
changeset
|
1729 ], |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1730 } |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1731 |
9999
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1732 |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1733 def ordinarypath(p): |
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1734 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
|
1735 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1736 |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10264
diff
changeset
|
1737 for root in ('templates',): |
9999
f91e5630ce7e
setup: install translation files as package data
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9998
diff
changeset
|
1738 for curdir, dirs, files in os.walk(os.path.join('mercurial', root)): |
45326
e2320bb7a99f
packaging: include templates with their package as key in package_data
Martin von Zweigbergk <martinvonz@google.com>
parents:
45325
diff
changeset
|
1739 packagename = curdir.replace(os.sep, '.') |
e2320bb7a99f
packaging: include templates with their package as key in package_data
Martin von Zweigbergk <martinvonz@google.com>
parents:
45325
diff
changeset
|
1740 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
|
1741 |
7648
02e358a3a8a7
i18n: let Makefile generate i18n/hg.pot
Martin Geisler <mg@daimi.au.dk>
parents:
7647
diff
changeset
|
1742 datafiles = [] |
31325
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31317
diff
changeset
|
1743 |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31317
diff
changeset
|
1744 # distutils expects version to be str/unicode. Converting it to |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31317
diff
changeset
|
1745 # 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:
31317
diff
changeset
|
1746 # non-ascii bytes and will be implicitly converted back to bytes |
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31317
diff
changeset
|
1747 # when operated on. |
46564
866eb4d6bd9f
build: fake PEP440 versions
Joerg Sonnenberger <joerg@bec.de>
parents:
46483
diff
changeset
|
1748 assert isinstance(version, str) |
866eb4d6bd9f
build: fake PEP440 versions
Joerg Sonnenberger <joerg@bec.de>
parents:
46483
diff
changeset
|
1749 setupversion = version |
31325
70bc35df3e54
setup: convert setupversion to unicode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
31317
diff
changeset
|
1750 |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1751 extra = {} |
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1752 |
41856
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1753 py2exepackages = [ |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1754 'hgdemandimport', |
41923
5d9fdc9b0178
setup: include hgext3rd package in py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41922
diff
changeset
|
1755 'hgext3rd', |
41856
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1756 'hgext', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1757 'email', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1758 # implicitly imported per module policy |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1759 # (cffi wouldn't be used as a frozen exe) |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1760 'mercurial.cext', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1761 #'mercurial.cffi', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1762 'mercurial.pure', |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1763 ] |
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1764 |
46350
d6cfe45afb18
packaging: allow specifying modules to include with py2exe
Matt Harbison <matt_harbison@yahoo.com>
parents:
46315
diff
changeset
|
1765 py2exe_includes = [] |
d6cfe45afb18
packaging: allow specifying modules to include with py2exe
Matt Harbison <matt_harbison@yahoo.com>
parents:
46315
diff
changeset
|
1766 |
41921
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1767 py2exeexcludes = [] |
41959
e5ac701e5b7c
setup: exclude crypt32.dll in py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41958
diff
changeset
|
1768 py2exedllexcludes = ['crypt32.dll'] |
41921
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1769 |
10400
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1770 if py2exeloaded: |
fb203201ce30
setup.py: fixing version info for Windows hg.exe (py2exe)
Adrian Buehlmann <adrian@cadifra.com>
parents:
10282
diff
changeset
|
1771 extra['console'] = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1772 { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1773 'script': 'hg', |
51663
45ba8416afc4
copyright: update to 2024
Anton Shestakov <av6@dwimlabs.net>
parents:
51639
diff
changeset
|
1774 'copyright': 'Copyright (C) 2005-2024 Olivia Mackall and others', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1775 'product_version': version, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1776 } |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1777 ] |
41922
ac32e04e887f
setup: properly install build_hgextindex for py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41921
diff
changeset
|
1778 # 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:
41921
diff
changeset
|
1779 # 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:
41921
diff
changeset
|
1780 # build.sub_commands. |
ac32e04e887f
setup: properly install build_hgextindex for py2exe builds
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41921
diff
changeset
|
1781 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
|
1782 # 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
|
1783 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
|
1784 |
41921
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1785 # We allow some configuration to be supplemented via environment |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1786 # 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:
41859
diff
changeset
|
1787 # supplementing configs instead of replacing them. |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1788 extrapackages = os.environ.get('HG_PY2EXE_EXTRA_PACKAGES') |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1789 if extrapackages: |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1790 py2exepackages.extend(extrapackages.split(' ')) |
41856
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1791 |
46350
d6cfe45afb18
packaging: allow specifying modules to include with py2exe
Matt Harbison <matt_harbison@yahoo.com>
parents:
46315
diff
changeset
|
1792 extra_includes = os.environ.get('HG_PY2EXE_EXTRA_INCLUDES') |
d6cfe45afb18
packaging: allow specifying modules to include with py2exe
Matt Harbison <matt_harbison@yahoo.com>
parents:
46315
diff
changeset
|
1793 if extra_includes: |
d6cfe45afb18
packaging: allow specifying modules to include with py2exe
Matt Harbison <matt_harbison@yahoo.com>
parents:
46315
diff
changeset
|
1794 py2exe_includes.extend(extra_includes.split(' ')) |
d6cfe45afb18
packaging: allow specifying modules to include with py2exe
Matt Harbison <matt_harbison@yahoo.com>
parents:
46315
diff
changeset
|
1795 |
41921
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1796 excludes = os.environ.get('HG_PY2EXE_EXTRA_EXCLUDES') |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1797 if excludes: |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1798 py2exeexcludes.extend(excludes.split(' ')) |
41856
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1799 |
41921
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1800 dllexcludes = os.environ.get('HG_PY2EXE_EXTRA_DLL_EXCLUDES') |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1801 if dllexcludes: |
260305e8ddbd
setup: configure py2exe config via environment variables
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41859
diff
changeset
|
1802 py2exedllexcludes.extend(dllexcludes.split(' ')) |
41856
ed35057421ae
setup: include additional packages in py2exe distribution
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41855
diff
changeset
|
1803 |
45132
9d532329ee97
extensions: make `hg help extensions` list disabled extensions with PyOxidizer
Martin von Zweigbergk <martinvonz@google.com>
parents:
44952
diff
changeset
|
1804 if os.environ.get('PYOXIDIZER'): |
9d532329ee97
extensions: make `hg help extensions` list disabled extensions with PyOxidizer
Martin von Zweigbergk <martinvonz@google.com>
parents:
44952
diff
changeset
|
1805 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:
44952
diff
changeset
|
1806 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1807 setup( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1808 version=setupversion, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1809 long_description=( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1810 'Mercurial is a distributed SCM tool written in Python.' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1811 ' 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
|
1812 ' fast, reliable distributed revision control, such as ' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1813 'Mozilla.' |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1814 ), |
52011
d07034819565
install: add long_description_content_type
paugier <pierre.augier@univ-grenoble-alpes.fr>
parents:
51938
diff
changeset
|
1815 long_description_content_type='text/x-rst', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1816 scripts=scripts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1817 packages=packages, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1818 ext_modules=extmodules, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1819 data_files=datafiles, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1820 package_data=packagedata, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1821 cmdclass=cmdclass, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1822 distclass=hgdist, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1823 options={ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1824 'py2exe': { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1825 'bundle_files': 3, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1826 'dll_excludes': py2exedllexcludes, |
46350
d6cfe45afb18
packaging: allow specifying modules to include with py2exe
Matt Harbison <matt_harbison@yahoo.com>
parents:
46315
diff
changeset
|
1827 'includes': py2exe_includes, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1828 'excludes': py2exeexcludes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1829 'packages': py2exepackages, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1830 }, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1831 'bdist_mpkg': { |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1832 'zipdist': False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1833 'license': 'COPYING', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1834 'readme': 'contrib/packaging/macosx/Readme.html', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1835 'welcome': 'contrib/packaging/macosx/Welcome.html', |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1836 }, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1837 }, |
51191
3c5b66d03c37
setup: make debug simpler by adding a `__repr__` to `hgcommand`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50995
diff
changeset
|
1838 **extra, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43044
diff
changeset
|
1839 ) |