annotate Lib/sysconfig.py @ 80272:ec00f8570c55

Merge typo fix.
author Ezio Melotti <ezio.melotti@gmail.com>
date Mon, 05 Nov 2012 22:23:16 +0200
parents a0614e041bc8
children 6b74a93a2b8a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
1 """Access to Python's configuration information."""
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
2
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
3 import os
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
4 import re
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
5 import sys
59502
135cd8064d6f Merged revisions 78828 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents: 58652
diff changeset
6 from os.path import pardir, realpath
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
7
64855
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
8 __all__ = [
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
9 'get_config_h_filename',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
10 'get_config_var',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
11 'get_config_vars',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
12 'get_makefile_filename',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
13 'get_path',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
14 'get_path_names',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
15 'get_paths',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
16 'get_platform',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
17 'get_python_version',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
18 'get_scheme_names',
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
19 'parse_config_h',
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
20 ]
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
21
77675
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
22 _INSTALL_SCHEMES = {
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
23 'posix_prefix': {
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
24 'stdlib': '{installed_base}/lib/python{py_version_short}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
25 'platstdlib': '{platbase}/lib/python{py_version_short}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
26 'purelib': '{base}/lib/python{py_version_short}/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
27 'platlib': '{platbase}/lib/python{py_version_short}/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
28 'include':
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
29 '{installed_base}/include/python{py_version_short}{abiflags}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
30 'platinclude':
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
31 '{installed_platbase}/include/python{py_version_short}{abiflags}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
32 'scripts': '{base}/bin',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
33 'data': '{base}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
34 },
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
35 'posix_home': {
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
36 'stdlib': '{installed_base}/lib/python',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
37 'platstdlib': '{base}/lib/python',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
38 'purelib': '{base}/lib/python',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
39 'platlib': '{base}/lib/python',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
40 'include': '{installed_base}/include/python',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
41 'platinclude': '{installed_base}/include/python',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
42 'scripts': '{base}/bin',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
43 'data': '{base}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
44 },
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
45 'nt': {
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
46 'stdlib': '{installed_base}/Lib',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
47 'platstdlib': '{base}/Lib',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
48 'purelib': '{base}/Lib/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
49 'platlib': '{base}/Lib/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
50 'include': '{installed_base}/Include',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
51 'platinclude': '{installed_base}/Include',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
52 'scripts': '{base}/Scripts',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
53 'data': '{base}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
54 },
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
55 'nt_user': {
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
56 'stdlib': '{userbase}/Python{py_version_nodot}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
57 'platstdlib': '{userbase}/Python{py_version_nodot}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
58 'purelib': '{userbase}/Python{py_version_nodot}/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
59 'platlib': '{userbase}/Python{py_version_nodot}/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
60 'include': '{userbase}/Python{py_version_nodot}/Include',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
61 'scripts': '{userbase}/Scripts',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
62 'data': '{userbase}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
63 },
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
64 'posix_user': {
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
65 'stdlib': '{userbase}/lib/python{py_version_short}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
66 'platstdlib': '{userbase}/lib/python{py_version_short}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
67 'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
68 'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
69 'include': '{userbase}/include/python{py_version_short}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
70 'scripts': '{userbase}/bin',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
71 'data': '{userbase}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
72 },
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
73 'osx_framework_user': {
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
74 'stdlib': '{userbase}/lib/python',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
75 'platstdlib': '{userbase}/lib/python',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
76 'purelib': '{userbase}/lib/python/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
77 'platlib': '{userbase}/lib/python/site-packages',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
78 'include': '{userbase}/include',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
79 'scripts': '{userbase}/bin',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
80 'data': '{userbase}',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
81 },
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
82 }
61897
4e00914ec447 added the list of public APIs in sysconfig
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61896
diff changeset
83
77675
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
84 _SCHEME_KEYS = ('stdlib', 'platstdlib', 'purelib', 'platlib', 'include',
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
85 'scripts', 'data')
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
86
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
87 # FIXME don't rely on sys.version here, its format is an implementation detail
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
88 # of CPython, use sys.version_info or sys.hexversion
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
89 _PY_VERSION = sys.version.split()[0]
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
90 _PY_VERSION_SHORT = sys.version[:3]
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
91 _PY_VERSION_SHORT_NO_DOT = _PY_VERSION[0] + _PY_VERSION[2]
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
92 _PREFIX = os.path.normpath(sys.prefix)
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
93 _BASE_PREFIX = os.path.normpath(sys.base_prefix)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
94 _EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
95 _BASE_EXEC_PREFIX = os.path.normpath(sys.base_exec_prefix)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
96 _CONFIG_VARS = None
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
97 _USER_BASE = None
65226
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
98
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
99
65226
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
100 def _safe_realpath(path):
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
101 try:
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
102 return realpath(path)
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
103 except OSError:
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
104 return path
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
105
59532
236fb0af4404 Merged revisions 78835-78837 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59507
diff changeset
106 if sys.executable:
65226
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
107 _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable))
59532
236fb0af4404 Merged revisions 78835-78837 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59507
diff changeset
108 else:
236fb0af4404 Merged revisions 78835-78837 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59507
diff changeset
109 # sys.executable can be empty if argv[0] has been changed and Python is
236fb0af4404 Merged revisions 78835-78837 via svnmerge from
Victor Stinner <victor.stinner@haypocalc.com>
parents: 59507
diff changeset
110 # unable to retrieve the real program name
65226
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
111 _PROJECT_BASE = _safe_realpath(os.getcwd())
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
112
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
113 if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower():
65226
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
114 _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir))
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
115 # PC/VS7.1
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
116 if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower():
65226
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
117 _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir))
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
118 # PC/AMD64
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
119 if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower():
65226
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
120 _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir))
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
121
77886
cfbe51e66749 - Issue #14330: For cross builds, don't use host python, use host search paths
doko@ubuntu.com
parents: 77755
diff changeset
122 # set for cross builds
77888
86ac09f118be - Issue #14330: For cross builds, don't use host python, use host search paths
doko@ubuntu.com
parents: 77886
diff changeset
123 if "_PYTHON_PROJECT_BASE" in os.environ:
86ac09f118be - Issue #14330: For cross builds, don't use host python, use host search paths
doko@ubuntu.com
parents: 77886
diff changeset
124 _PROJECT_BASE = _safe_realpath(os.environ["_PYTHON_PROJECT_BASE"])
77886
cfbe51e66749 - Issue #14330: For cross builds, don't use host python, use host search paths
doko@ubuntu.com
parents: 77755
diff changeset
125
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
126 def _is_python_source_dir(d):
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
127 for fn in ("Setup.dist", "Setup.local"):
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
128 if os.path.isfile(os.path.join(d, "Modules", fn)):
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
129 return True
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
130 return False
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
131
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
132 _sys_home = getattr(sys, '_home', None)
77167
564caa2c61ae Addressed some buildbot errors and comments on the checkin by Antoine on python-dev.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 77154
diff changeset
133 if _sys_home and os.name == 'nt' and \
564caa2c61ae Addressed some buildbot errors and comments on the checkin by Antoine on python-dev.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 77154
diff changeset
134 _sys_home.lower().endswith(('pcbuild', 'pcbuild\\amd64')):
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
135 _sys_home = os.path.dirname(_sys_home)
77182
a45c86f5ba96 Fixed _sys_home computation and added diagnostics for Windows buildbot failures.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 77167
diff changeset
136 if _sys_home.endswith('pcbuild'): # must be amd64
a45c86f5ba96 Fixed _sys_home computation and added diagnostics for Windows buildbot failures.
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 77167
diff changeset
137 _sys_home = os.path.dirname(_sys_home)
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
138 def is_python_build(check_home=False):
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
139 if check_home and _sys_home:
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
140 return _is_python_source_dir(_sys_home)
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
141 return _is_python_source_dir(_PROJECT_BASE)
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
142
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
143 _PYTHON_BUILD = is_python_build(True)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
144
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
145 if _PYTHON_BUILD:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
146 for scheme in ('posix_prefix', 'posix_home'):
77675
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
147 _INSTALL_SCHEMES[scheme]['include'] = '{srcdir}/Include'
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
148 _INSTALL_SCHEMES[scheme]['platinclude'] = '{projectbase}/.'
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
149
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
150
77675
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
151 def _subst_vars(s, local_vars):
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
152 try:
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
153 return s.format(**local_vars)
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
154 except KeyError:
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
155 try:
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
156 return s.format(**os.environ)
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
157 except KeyError as var:
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
158 raise AttributeError('{%s}' % var)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
159
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
160 def _extend_dict(target_dict, other_dict):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
161 target_keys = target_dict.keys()
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
162 for key, value in other_dict.items():
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
163 if key in target_keys:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
164 continue
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
165 target_dict[key] = value
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
166
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
167
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
168 def _expand_vars(scheme, vars):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
169 res = {}
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
170 if vars is None:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
171 vars = {}
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
172 _extend_dict(vars, get_config_vars())
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
173
77675
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
174 for key, value in _INSTALL_SCHEMES[scheme].items():
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
175 if os.name in ('posix', 'nt'):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
176 value = os.path.expanduser(value)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
177 res[key] = os.path.normpath(_subst_vars(value, vars))
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
178 return res
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
179
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
180
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
181 def _get_default_scheme():
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
182 if os.name == 'posix':
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
183 # the default scheme for posix is posix_prefix
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
184 return 'posix_prefix'
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
185 return os.name
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
186
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
187
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
188 def _getuserbase():
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
189 env_base = os.environ.get("PYTHONUSERBASE", None)
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
190
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
191 def joinuser(*args):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
192 return os.path.expanduser(os.path.join(*args))
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
193
79480
15949f34e08f #16135: Removal of OS/2 support (Python code partial cleanup)
Jesus Cea <jcea@jcea.es>
parents: 78295
diff changeset
194 # what about 'riscos' ?
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
195 if os.name == "nt":
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
196 base = os.environ.get("APPDATA") or "~"
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
197 if env_base:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
198 return env_base
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
199 else:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
200 return joinuser(base, "Python")
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
201
61403
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
202 if sys.platform == "darwin":
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
203 framework = get_config_var("PYTHONFRAMEWORK")
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
204 if framework:
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
205 if env_base:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
206 return env_base
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
207 else:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
208 return joinuser("~", "Library", framework, "%d.%d" %
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
209 sys.version_info[:2])
61403
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
210
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
211 if env_base:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
212 return env_base
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
213 else:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
214 return joinuser("~", ".local")
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
215
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
216
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
217 def _parse_makefile(filename, vars=None):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
218 """Parse a Makefile-style file.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
219
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
220 A dictionary containing name/value pairs is returned. If an
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
221 optional dictionary is passed in as the second argument, it is
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
222 used instead of a new dictionary.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
223 """
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
224 # Regexes needed for parsing Makefile (and similar syntaxes,
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
225 # like old-style Setup files).
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
226 _variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)")
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
227 _findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)")
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
228 _findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}")
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
229
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
230 if vars is None:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
231 vars = {}
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
232 done = {}
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
233 notdone = {}
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
234
65605
1a08f4a9eafd Issue #6011: sysconfig and distutils.sysconfig use the surrogateescape error
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65331
diff changeset
235 with open(filename, errors="surrogateescape") as f:
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
236 lines = f.readlines()
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
237
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
238 for line in lines:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
239 if line.startswith('#') or line.strip() == '':
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
240 continue
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
241 m = _variable_rx.match(line)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
242 if m:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
243 n, v = m.group(1, 2)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
244 v = v.strip()
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
245 # `$$' is a literal `$' in make
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
246 tmpv = v.replace('$$', '')
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
247
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
248 if "$" in tmpv:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
249 notdone[n] = v
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
250 else:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
251 try:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
252 v = int(v)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
253 except ValueError:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
254 # insert literal `$'
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
255 done[n] = v.replace('$$', '$')
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
256 else:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
257 done[n] = v
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
258
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
259 # do variable interpolation here
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
260 variables = list(notdone.keys())
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
261
63108
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
262 # Variables with a 'PY_' prefix in the makefile. These need to
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
263 # be made available without that prefix through sysconfig.
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
264 # Special care is needed to ensure that variable expansion works, even
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
265 # if the expansion uses the name without a prefix.
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
266 renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS')
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
267
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
268 while len(variables) > 0:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
269 for name in tuple(variables):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
270 value = notdone[name]
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
271 m = _findvar1_rx.search(value) or _findvar2_rx.search(value)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
272 if m is not None:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
273 n = m.group(1)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
274 found = True
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
275 if n in done:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
276 item = str(done[n])
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
277 elif n in notdone:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
278 # get it on a subsequent round
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
279 found = False
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
280 elif n in os.environ:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
281 # do it like make: fall back to environment
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
282 item = os.environ[n]
63108
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
283
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
284 elif n in renamed_variables:
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
285 if (name.startswith('PY_') and
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
286 name[3:] in renamed_variables):
63108
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
287 item = ""
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
288
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
289 elif 'PY_' + n in notdone:
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
290 found = False
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
291
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
292 else:
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
293 item = str(done['PY_' + n])
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
294
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
295 else:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
296 done[n] = item = ""
63108
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
297
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
298 if found:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
299 after = value[m.end():]
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
300 value = value[:m.start()] + item + after
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
301 if "$" in after:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
302 notdone[name] = value
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
303 else:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
304 try:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
305 value = int(value)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
306 except ValueError:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
307 done[name] = value.strip()
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
308 else:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
309 done[name] = value
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
310 variables.remove(name)
63108
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
311
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
312 if name.startswith('PY_') \
70352
4a7bb2ef636a Issue #12070: Fix the Makefile parser of the sysconfig module to handle
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70144
diff changeset
313 and name[3:] in renamed_variables:
63108
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
314
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
315 name = name[3:]
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
316 if name not in done:
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
317 done[name] = value
9c766cd211db Without this patch the value of sysconfig.get_config_var('LDSHARED')
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 62950
diff changeset
318
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
319 else:
70352
4a7bb2ef636a Issue #12070: Fix the Makefile parser of the sysconfig module to handle
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70144
diff changeset
320 # bogus variable reference (e.g. "prefix=$/opt/python");
4a7bb2ef636a Issue #12070: Fix the Makefile parser of the sysconfig module to handle
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70144
diff changeset
321 # just drop it since we can't deal
4a7bb2ef636a Issue #12070: Fix the Makefile parser of the sysconfig module to handle
Victor Stinner <victor.stinner@haypocalc.com>
parents: 70144
diff changeset
322 done[name] = value
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
323 variables.remove(name)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
324
65206
25d078739c2a Issue #9437: Fix building C extensions with non-default LDFLAGS.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64855
diff changeset
325 # strip spurious spaces
25d078739c2a Issue #9437: Fix building C extensions with non-default LDFLAGS.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64855
diff changeset
326 for k, v in done.items():
25d078739c2a Issue #9437: Fix building C extensions with non-default LDFLAGS.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64855
diff changeset
327 if isinstance(v, str):
25d078739c2a Issue #9437: Fix building C extensions with non-default LDFLAGS.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64855
diff changeset
328 done[k] = v.strip()
25d078739c2a Issue #9437: Fix building C extensions with non-default LDFLAGS.
Antoine Pitrou <solipsis@pitrou.net>
parents: 64855
diff changeset
329
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
330 # save the results in the global dictionary
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
331 vars.update(done)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
332 return vars
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
333
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
334
64855
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
335 def get_makefile_filename():
66373
66e0f5c65158 r84925 followup: add docstring for get_makefile_filename (+PEP 257 fixes)
Éric Araujo <merwok@netwok.org>
parents: 65993
diff changeset
336 """Return the path of the Makefile."""
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
337 if _PYTHON_BUILD:
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
338 return os.path.join(_sys_home or _PROJECT_BASE, "Makefile")
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
339 if hasattr(sys, 'abiflags'):
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
340 config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags)
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
341 else:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
342 config_dir_name = 'config'
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
343 return os.path.join(get_path('stdlib'), config_dir_name, 'Makefile')
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
344
72975
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
345 def _generate_posix_vars():
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
346 """Generate the Python module containing build-time variables."""
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
347 import pprint
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
348 vars = {}
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
349 # load the installed Makefile:
64855
96db640674cb Issue 9877: expose sysconfig.get_makefile_filename() in the public API.
Barry Warsaw <barry@python.org>
parents: 64850
diff changeset
350 makefile = get_makefile_filename()
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
351 try:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
352 _parse_makefile(makefile, vars)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
353 except IOError as e:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
354 msg = "invalid Python installation: unable to open %s" % makefile
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
355 if hasattr(e, "strerror"):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
356 msg = msg + " (%s)" % e.strerror
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
357 raise IOError(msg)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
358 # load the installed pyconfig.h:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
359 config_h = get_config_h_filename()
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
360 try:
65331
46956a25c264 Explicitly close some files (from issue #10093)
Antoine Pitrou <solipsis@pitrou.net>
parents: 65226
diff changeset
361 with open(config_h) as f:
46956a25c264 Explicitly close some files (from issue #10093)
Antoine Pitrou <solipsis@pitrou.net>
parents: 65226
diff changeset
362 parse_config_h(f, vars)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
363 except IOError as e:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
364 msg = "invalid Python installation: unable to open %s" % config_h
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
365 if hasattr(e, "strerror"):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
366 msg = msg + " (%s)" % e.strerror
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
367 raise IOError(msg)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
368 # On AIX, there are wrong paths to the linker scripts in the Makefile
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
369 # -- these paths are relative to the Python source, but when installed
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
370 # the scripts are in another directory.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
371 if _PYTHON_BUILD:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
372 vars['LDSHARED'] = vars['BLDSHARED']
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
373
79778
66959d419369 Issue #15298: fix an OS X bootstrap issue with _sysconfigdata.py.
Trent Nelson <trent@trent.me>
parents: 79744
diff changeset
374 # There's a chicken-and-egg situation on OS X with regards to the
66959d419369 Issue #15298: fix an OS X bootstrap issue with _sysconfigdata.py.
Trent Nelson <trent@trent.me>
parents: 79744
diff changeset
375 # _sysconfigdata module after the changes introduced by #15298:
66959d419369 Issue #15298: fix an OS X bootstrap issue with _sysconfigdata.py.
Trent Nelson <trent@trent.me>
parents: 79744
diff changeset
376 # get_config_vars() is called by get_platform() as part of the
66959d419369 Issue #15298: fix an OS X bootstrap issue with _sysconfigdata.py.
Trent Nelson <trent@trent.me>
parents: 79744
diff changeset
377 # `make pybuilddir.txt` target -- which is a precursor to the
66959d419369 Issue #15298: fix an OS X bootstrap issue with _sysconfigdata.py.
Trent Nelson <trent@trent.me>
parents: 79744
diff changeset
378 # _sysconfigdata.py module being constructed. Unfortunately,
66959d419369 Issue #15298: fix an OS X bootstrap issue with _sysconfigdata.py.
Trent Nelson <trent@trent.me>
parents: 79744
diff changeset
379 # get_config_vars() eventually calls _init_posix(), which attempts
79805
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
380 # to import _sysconfigdata, which we won't have built yet. In order
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
381 # for _init_posix() to work, if we're on Darwin, just mock up the
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
382 # _sysconfigdata module manually and populate it with the build vars.
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
383 # This is more than sufficient for ensuring the subsequent call to
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
384 # get_platform() succeeds.
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
385 name = '_sysconfigdata'
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
386 if 'darwin' in sys.platform:
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
387 import imp
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
388 module = imp.new_module(name)
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
389 module.build_time_vars = vars
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
390 sys.modules[name] = module
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
391
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
392 pybuilddir = 'build/lib.%s-%s' % (get_platform(), sys.version[:3])
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
393 if hasattr(sys, "gettotalrefcount"):
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
394 pybuilddir += '-pydebug'
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
395 os.makedirs(pybuilddir, exist_ok=True)
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
396 destfile = os.path.join(pybuilddir, name + '.py')
1250498db562 Issue #15298: refactor previous fix from 66959d419369.
Trent Nelson <trent@trent.me>
parents: 79778
diff changeset
397
72975
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
398 with open(destfile, 'w', encoding='utf8') as f:
73017
677e625e2ef1 Issue #13150: Add a comment in _sysconfigdata to explain the origin of this file
Victor Stinner <victor.stinner@haypocalc.com>
parents: 72975
diff changeset
399 f.write('# system configuration generated and used by'
677e625e2ef1 Issue #13150: Add a comment in _sysconfigdata to explain the origin of this file
Victor Stinner <victor.stinner@haypocalc.com>
parents: 72975
diff changeset
400 ' the sysconfig module\n')
72975
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
401 f.write('build_time_vars = ')
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
402 pprint.pprint(vars, stream=f)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
403
79744
24d52d3060e8 Issue #15298: ensure _sysconfigdata is generated in build directory,
Trent Nelson <trent@trent.me>
parents: 78295
diff changeset
404 # Create file used for sys.path fixup -- see Modules/getpath.c
24d52d3060e8 Issue #15298: ensure _sysconfigdata is generated in build directory,
Trent Nelson <trent@trent.me>
parents: 78295
diff changeset
405 with open('pybuilddir.txt', 'w', encoding='ascii') as f:
24d52d3060e8 Issue #15298: ensure _sysconfigdata is generated in build directory,
Trent Nelson <trent@trent.me>
parents: 78295
diff changeset
406 f.write(pybuilddir)
24d52d3060e8 Issue #15298: ensure _sysconfigdata is generated in build directory,
Trent Nelson <trent@trent.me>
parents: 78295
diff changeset
407
72975
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
408 def _init_posix(vars):
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
409 """Initialize the module as appropriate for POSIX systems."""
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
410 # _sysconfigdata is generated at build time, see _generate_posix_vars()
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
411 from _sysconfigdata import build_time_vars
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
412 vars.update(build_time_vars)
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
413
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
414 def _init_non_posix(vars):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
415 """Initialize the module as appropriate for NT"""
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
416 # set basic install directories
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
417 vars['LIBDEST'] = get_path('stdlib')
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
418 vars['BINLIBDEST'] = get_path('platstdlib')
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
419 vars['INCLUDEPY'] = get_path('include')
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
420 vars['SO'] = '.pyd'
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
421 vars['EXE'] = '.exe'
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
422 vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT
65226
ded61e26b841 Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
Victor Stinner <victor.stinner@haypocalc.com>
parents: 65206
diff changeset
423 vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable))
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
424
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
425 #
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
426 # public APIs
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
427 #
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
428
58652
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
429
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
430 def parse_config_h(fp, vars=None):
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
431 """Parse a config.h-style file.
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
432
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
433 A dictionary containing name/value pairs is returned. If an
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
434 optional dictionary is passed in as the second argument, it is
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
435 used instead of a new dictionary.
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
436 """
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
437 if vars is None:
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
438 vars = {}
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
439 define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n")
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
440 undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n")
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
441
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
442 while True:
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
443 line = fp.readline()
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
444 if not line:
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
445 break
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
446 m = define_rx.match(line)
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
447 if m:
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
448 n, v = m.group(1, 2)
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
449 try:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
450 v = int(v)
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
451 except ValueError:
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
452 pass
58652
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
453 vars[n] = v
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
454 else:
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
455 m = undef_rx.match(line)
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
456 if m:
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
457 vars[m.group(1)] = 0
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
458 return vars
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
459
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
460
58652
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
461 def get_config_h_filename():
66373
66e0f5c65158 r84925 followup: add docstring for get_makefile_filename (+PEP 257 fixes)
Éric Araujo <merwok@netwok.org>
parents: 65993
diff changeset
462 """Return the path of pyconfig.h."""
58652
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
463 if _PYTHON_BUILD:
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
464 if os.name == "nt":
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
465 inc_dir = os.path.join(_sys_home or _PROJECT_BASE, "PC")
58652
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
466 else:
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
467 inc_dir = _sys_home or _PROJECT_BASE
58652
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
468 else:
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
469 inc_dir = get_path('platinclude')
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
470 return os.path.join(inc_dir, 'pyconfig.h')
d3127f6de16c Merged revisions 77919,77921-77922 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 58558
diff changeset
471
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
472
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
473 def get_scheme_names():
66373
66e0f5c65158 r84925 followup: add docstring for get_makefile_filename (+PEP 257 fixes)
Éric Araujo <merwok@netwok.org>
parents: 65993
diff changeset
474 """Return a tuple containing the schemes names."""
77675
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
475 return tuple(sorted(_INSTALL_SCHEMES))
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
476
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
477
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
478 def get_path_names():
66373
66e0f5c65158 r84925 followup: add docstring for get_makefile_filename (+PEP 257 fixes)
Éric Araujo <merwok@netwok.org>
parents: 65993
diff changeset
479 """Return a tuple containing the paths names."""
77675
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
480 return _SCHEME_KEYS
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
481
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
482
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
483 def get_paths(scheme=_get_default_scheme(), vars=None, expand=True):
66373
66e0f5c65158 r84925 followup: add docstring for get_makefile_filename (+PEP 257 fixes)
Éric Araujo <merwok@netwok.org>
parents: 65993
diff changeset
484 """Return a mapping containing an install scheme.
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
485
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
486 ``scheme`` is the install scheme name. If not provided, it will
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
487 return the default scheme for the current platform.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
488 """
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
489 if expand:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
490 return _expand_vars(scheme, vars)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
491 else:
77675
e989e7586da6 Packaging removal: also revert introduction of sysconfig.cfg.
Éric Araujo <merwok@netwok.org>
parents: 77665
diff changeset
492 return _INSTALL_SCHEMES[scheme]
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
493
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
494
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
495 def get_path(name, scheme=_get_default_scheme(), vars=None, expand=True):
66373
66e0f5c65158 r84925 followup: add docstring for get_makefile_filename (+PEP 257 fixes)
Éric Araujo <merwok@netwok.org>
parents: 65993
diff changeset
496 """Return a path corresponding to the scheme.
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
497
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
498 ``scheme`` is the install scheme name.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
499 """
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
500 return get_paths(scheme, vars, expand)[name]
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
501
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
502
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
503 def get_config_vars(*args):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
504 """With no arguments, return a dictionary of all configuration
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
505 variables relevant for the current platform.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
506
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
507 On Unix, this means every variable defined in Python's installed Makefile;
78216
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
508 On Windows it's a much smaller set.
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
509
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
510 With arguments, return a list of values that result from looking up
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
511 each argument in the configuration variable dictionary.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
512 """
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
513 global _CONFIG_VARS
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
514 if _CONFIG_VARS is None:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
515 _CONFIG_VARS = {}
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
516 # Normalized versions of prefix and exec_prefix are handy to have;
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
517 # in fact, these are the standard versions used most places in the
77665
576b8b182039 Remove packaging from the standard library.
Éric Araujo <merwok@netwok.org>
parents: 77182
diff changeset
518 # Distutils.
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
519 _CONFIG_VARS['prefix'] = _PREFIX
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
520 _CONFIG_VARS['exec_prefix'] = _EXEC_PREFIX
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
521 _CONFIG_VARS['py_version'] = _PY_VERSION
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
522 _CONFIG_VARS['py_version_short'] = _PY_VERSION_SHORT
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
523 _CONFIG_VARS['py_version_nodot'] = _PY_VERSION[0] + _PY_VERSION[2]
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
524 _CONFIG_VARS['installed_base'] = _BASE_PREFIX
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
525 _CONFIG_VARS['base'] = _PREFIX
77154
294f8aeb4d4b Implemented PEP 405 (Python virtual environments).
Vinay Sajip <vinay_sajip@yahoo.co.uk>
parents: 74492
diff changeset
526 _CONFIG_VARS['installed_platbase'] = _BASE_EXEC_PREFIX
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
527 _CONFIG_VARS['platbase'] = _EXEC_PREFIX
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
528 _CONFIG_VARS['projectbase'] = _PROJECT_BASE
66438
cead04b3c5ed sys.abiflags may not be defined on all platforms.
Barry Warsaw <barry@python.org>
parents: 66429
diff changeset
529 try:
cead04b3c5ed sys.abiflags may not be defined on all platforms.
Barry Warsaw <barry@python.org>
parents: 66429
diff changeset
530 _CONFIG_VARS['abiflags'] = sys.abiflags
cead04b3c5ed sys.abiflags may not be defined on all platforms.
Barry Warsaw <barry@python.org>
parents: 66429
diff changeset
531 except AttributeError:
cead04b3c5ed sys.abiflags may not be defined on all platforms.
Barry Warsaw <barry@python.org>
parents: 66429
diff changeset
532 # sys.abiflags may not be defined on all platforms.
cead04b3c5ed sys.abiflags may not be defined on all platforms.
Barry Warsaw <barry@python.org>
parents: 66429
diff changeset
533 _CONFIG_VARS['abiflags'] = ''
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
534
79480
15949f34e08f #16135: Removal of OS/2 support (Python code partial cleanup)
Jesus Cea <jcea@jcea.es>
parents: 78295
diff changeset
535 if os.name == 'nt':
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
536 _init_non_posix(_CONFIG_VARS)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
537 if os.name == 'posix':
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
538 _init_posix(_CONFIG_VARS)
61403
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
539 # Setting 'userbase' is done below the call to the
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
540 # init function to enable using 'get_config_var' in
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
541 # the init-function.
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
542 _CONFIG_VARS['userbase'] = _getuserbase()
3fae7cb49209 Merged revisions 80967 via svnmerge from
Ronald Oussoren <ronaldoussoren@mac.com>
parents: 59532
diff changeset
543
78295
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
544 # Always convert srcdir to an absolute path
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
545 srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE)
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
546 if os.name == 'posix':
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
547 if _PYTHON_BUILD:
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
548 # If srcdir is a relative path (typically '.' or '..')
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
549 # then it should be interpreted relative to the directory
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
550 # containing Makefile.
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
551 base = os.path.dirname(get_makefile_filename())
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
552 srcdir = os.path.join(base, srcdir)
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
553 else:
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
554 # srcdir is not meaningful since the installation is
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
555 # spread about the filesystem. We choose the
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
556 # directory containing the Makefile since we know it
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
557 # exists.
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
558 srcdir = os.path.dirname(get_makefile_filename())
d2f448dbc30d Issue #15364: Fix sysconfig.get_config_var('srcdir') to be an absolute path.
Richard Oudkerk <shibturn@gmail.com>
parents: 78216
diff changeset
559 _CONFIG_VARS['srcdir'] = _safe_realpath(srcdir)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
560
78216
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
561 # OS X platforms require special customization to handle
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
562 # multi-architecture, multi-os-version installers
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
563 if sys.platform == 'darwin':
78216
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
564 import _osx_support
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
565 _osx_support.customize_config_vars(_CONFIG_VARS)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
566
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
567 if args:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
568 vals = []
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
569 for name in args:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
570 vals.append(_CONFIG_VARS.get(name))
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
571 return vals
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
572 else:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
573 return _CONFIG_VARS
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
574
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
575
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
576 def get_config_var(name):
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
577 """Return the value of a single variable using the dictionary returned by
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
578 'get_config_vars()'.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
579
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
580 Equivalent to get_config_vars().get(name)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
581 """
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
582 return get_config_vars().get(name)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
583
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
584
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
585 def get_platform():
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
586 """Return a string that identifies the current platform.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
587
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
588 This is used mainly to distinguish platform-specific build directories and
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
589 platform-specific built distributions. Typically includes the OS name
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
590 and version and the architecture (as supplied by 'os.uname()'),
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
591 although the exact information included depends on the OS; eg. for IRIX
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
592 the architecture isn't particularly important (IRIX only runs on SGI
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
593 hardware), but for Linux the kernel version isn't particularly
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
594 important.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
595
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
596 Examples of returned values:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
597 linux-i586
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
598 linux-alpha (?)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
599 solaris-2.6-sun4u
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
600 irix-5.3
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
601 irix64-6.2
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
602
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
603 Windows will return one of:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
604 win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
605 win-ia64 (64bit Windows on Itanium)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
606 win32 (all others - specifically, sys.platform is returned)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
607
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
608 For other non-POSIX platforms, currently just returns 'sys.platform'.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
609 """
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
610 if os.name == 'nt':
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
611 # sniff sys.version for architecture.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
612 prefix = " bit ("
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
613 i = sys.version.find(prefix)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
614 if i == -1:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
615 return sys.platform
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
616 j = sys.version.find(")", i)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
617 look = sys.version[i+len(prefix):j].lower()
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
618 if look == 'amd64':
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
619 return 'win-amd64'
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
620 if look == 'itanium':
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
621 return 'win-ia64'
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
622 return sys.platform
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
623
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
624 if os.name != "posix" or not hasattr(os, 'uname'):
78216
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
625 # XXX what about the architecture? NT is Intel or Alpha
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
626 return sys.platform
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
627
77886
cfbe51e66749 - Issue #14330: For cross builds, don't use host python, use host search paths
doko@ubuntu.com
parents: 77755
diff changeset
628 # Set for cross builds explicitly
cfbe51e66749 - Issue #14330: For cross builds, don't use host python, use host search paths
doko@ubuntu.com
parents: 77755
diff changeset
629 if "_PYTHON_HOST_PLATFORM" in os.environ:
cfbe51e66749 - Issue #14330: For cross builds, don't use host python, use host search paths
doko@ubuntu.com
parents: 77755
diff changeset
630 return os.environ["_PYTHON_HOST_PLATFORM"]
cfbe51e66749 - Issue #14330: For cross builds, don't use host python, use host search paths
doko@ubuntu.com
parents: 77755
diff changeset
631
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
632 # Try to distinguish various flavours of Unix
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
633 osname, host, release, version, machine = os.uname()
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
634
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
635 # Convert the OS name to lowercase, remove '/' characters
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
636 # (to accommodate BSD/OS), and translate spaces (for "Power Macintosh")
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
637 osname = osname.lower().replace('/', '')
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
638 machine = machine.replace(' ', '_')
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
639 machine = machine.replace('/', '-')
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
640
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
641 if osname[:5] == "linux":
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
642 # At least on Linux/Intel, 'machine' is the processor --
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
643 # i386, etc.
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
644 # XXX what about Alpha, SPARC, etc?
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
645 return "%s-%s" % (osname, machine)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
646 elif osname[:5] == "sunos":
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
647 if release[0] >= "5": # SunOS 5 == Solaris 2
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
648 osname = "solaris"
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
649 release = "%d.%s" % (int(release[0]) - 3, release[2:])
74489
37efae3bf912 Yet another emergency fix for #13803 bootstrap issue: Under Solaris, distutils doesn't include bitness in the directory name
Jesus Cea <jcea@jcea.es>
parents: 70352
diff changeset
650 # We can't use "platform.architecture()[0]" because a
37efae3bf912 Yet another emergency fix for #13803 bootstrap issue: Under Solaris, distutils doesn't include bitness in the directory name
Jesus Cea <jcea@jcea.es>
parents: 70352
diff changeset
651 # bootstrap problem. We use a dict to get an error
37efae3bf912 Yet another emergency fix for #13803 bootstrap issue: Under Solaris, distutils doesn't include bitness in the directory name
Jesus Cea <jcea@jcea.es>
parents: 70352
diff changeset
652 # if some suspicious happens.
37efae3bf912 Yet another emergency fix for #13803 bootstrap issue: Under Solaris, distutils doesn't include bitness in the directory name
Jesus Cea <jcea@jcea.es>
parents: 70352
diff changeset
653 bitness = {2147483647:"32bit", 9223372036854775807:"64bit"}
74491
147ad02875fa And yet another emergency fix for #13803 bootstrap issue: Under Solaris, distutils doesn't include bitness in the directory name
Jesus Cea <jcea@jcea.es>
parents: 74489
diff changeset
654 machine += ".%s" % bitness[sys.maxsize]
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
655 # fall through to standard osname-release-machine representation
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
656 elif osname[:4] == "irix": # could be "irix64"!
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
657 return "%s-%s" % (osname, release)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
658 elif osname[:3] == "aix":
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
659 return "%s-%s.%s" % (osname, version, release)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
660 elif osname[:6] == "cygwin":
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
661 osname = "cygwin"
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
662 rel_re = re.compile(r'[\d.]+')
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
663 m = rel_re.match(release)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
664 if m:
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
665 release = m.group()
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
666 elif osname[:6] == "darwin":
78216
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
667 import _osx_support
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
668 osname, release, machine = _osx_support.get_platform_osx(
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
669 get_config_vars(),
d76b83803e7e Issue #15184: Ensure consistent results of OS X configuration
Ned Deily <nad@acm.org>
parents: 78126
diff changeset
670 osname, release, machine)
58558
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
671
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
672 return "%s-%s-%s" % (osname, release, machine)
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
673
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
674
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
675 def get_python_version():
5aa90248a99f Merged revisions 77704,77752 via svnmerge from
Tarek Ziadé <ziade.tarek@gmail.com>
parents:
diff changeset
676 return _PY_VERSION_SHORT
61896
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
677
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
678
61896
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
679 def _print_dict(title, data):
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
680 for index, (key, value) in enumerate(sorted(data.items())):
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
681 if index == 0:
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
682 print('%s: ' % (title))
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
683 print('\t%s = "%s"' % (key, value))
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
684
61896
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
685
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
686 def _main():
66373
66e0f5c65158 r84925 followup: add docstring for get_makefile_filename (+PEP 257 fixes)
Éric Araujo <merwok@netwok.org>
parents: 65993
diff changeset
687 """Display all information sysconfig detains."""
72975
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
688 if '--generate-posix-vars' in sys.argv:
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
689 _generate_posix_vars()
70160b53117f Issue #13150: sysconfig no longer parses the Makefile and config.h files
Antoine Pitrou <solipsis@pitrou.net>
parents: 72854
diff changeset
690 return
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
691 print('Platform: "%s"' % get_platform())
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
692 print('Python version: "%s"' % get_python_version())
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
693 print('Current installation scheme: "%s"' % _get_default_scheme())
70411
e5ff8ca071ee Minor cleanup in sysconfig.
Éric Araujo <merwok@netwok.org>
parents: 70194
diff changeset
694 print()
61896
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
695 _print_dict('Paths', get_paths())
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
696 print()
61896
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
697 _print_dict('Variables', get_config_vars())
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
698
70194
1a31c3be88b1 initial import of the packaging package in the standard library
Tarek Ziade <tarek@ziade.org>
parents: 70144
diff changeset
699
61896
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
700 if __name__ == '__main__':
703287a99939 Made sysconfig a script that displays useful information - #8770
Tarek Ziadé <ziade.tarek@gmail.com>
parents: 61765
diff changeset
701 _main()