Commit 6e7341b2 authored by Victor Stinner's avatar Victor Stinner Committed by GitHub

bpo-1294959: Add sys.platlibdir attribute (GH-18381)

Add --with-platlibdir option to the configure script: name of the
platform-specific library directory, stored in the new sys.platlitdir
attribute. It is used to build the path of platform-specific dynamic
libraries and the path of the standard library.

It is equal to "lib" on most platforms. On Fedora and SuSE, it is
equal to "lib64" on 64-bit systems.
Co-Authored-By: default avatarJan Matějek <jmatejek@suse.com>
Co-Authored-By: default avatarMatěj Cepl <mcepl@cepl.eu>
Co-Authored-By: default avatarCharalampos Stratakis <cstratak@redhat.com>
parent c6f749b2
...@@ -30,14 +30,14 @@ WINDOWS_SCHEME = { ...@@ -30,14 +30,14 @@ WINDOWS_SCHEME = {
INSTALL_SCHEMES = { INSTALL_SCHEMES = {
'unix_prefix': { 'unix_prefix': {
'purelib': '$base/lib/python$py_version_short/site-packages', 'purelib': '$base/lib/python$py_version_short/site-packages',
'platlib': '$platbase/lib/python$py_version_short/site-packages', 'platlib': '$platbase/$platlibdir/python$py_version_short/site-packages',
'headers': '$base/include/python$py_version_short$abiflags/$dist_name', 'headers': '$base/include/python$py_version_short$abiflags/$dist_name',
'scripts': '$base/bin', 'scripts': '$base/bin',
'data' : '$base', 'data' : '$base',
}, },
'unix_home': { 'unix_home': {
'purelib': '$base/lib/python', 'purelib': '$base/lib/python',
'platlib': '$base/lib/python', 'platlib': '$base/$platlibdir/python',
'headers': '$base/include/python/$dist_name', 'headers': '$base/include/python/$dist_name',
'scripts': '$base/bin', 'scripts': '$base/bin',
'data' : '$base', 'data' : '$base',
...@@ -298,6 +298,7 @@ class install(Command): ...@@ -298,6 +298,7 @@ class install(Command):
'sys_exec_prefix': exec_prefix, 'sys_exec_prefix': exec_prefix,
'exec_prefix': exec_prefix, 'exec_prefix': exec_prefix,
'abiflags': abiflags, 'abiflags': abiflags,
'platlibdir': sys.platlibdir,
} }
if HAS_USER_SITE: if HAS_USER_SITE:
......
...@@ -146,8 +146,15 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None): ...@@ -146,8 +146,15 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
prefix = plat_specific and EXEC_PREFIX or PREFIX prefix = plat_specific and EXEC_PREFIX or PREFIX
if os.name == "posix": if os.name == "posix":
libpython = os.path.join(prefix, if plat_specific or standard_lib:
"lib", "python" + get_python_version()) # Platform-specific modules (any module from a non-pure-Python
# module distribution) or standard Python library modules.
libdir = sys.platlibdir
else:
# Pure Python
libdir = "lib"
libpython = os.path.join(prefix, libdir,
"python" + get_python_version())
if standard_lib: if standard_lib:
return libpython return libpython
else: else:
......
...@@ -58,7 +58,8 @@ class InstallTestCase(support.TempdirManager, ...@@ -58,7 +58,8 @@ class InstallTestCase(support.TempdirManager,
libdir = os.path.join(destination, "lib", "python") libdir = os.path.join(destination, "lib", "python")
check_path(cmd.install_lib, libdir) check_path(cmd.install_lib, libdir)
check_path(cmd.install_platlib, libdir) platlibdir = os.path.join(destination, sys.platlibdir, "python")
check_path(cmd.install_platlib, platlibdir)
check_path(cmd.install_purelib, libdir) check_path(cmd.install_purelib, libdir)
check_path(cmd.install_headers, check_path(cmd.install_headers,
os.path.join(destination, "include", "python", "foopkg")) os.path.join(destination, "include", "python", "foopkg"))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment