summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_sys.py1
-rw-r--r--Makefile.pre.in2
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2020-06-11-16-06-49.bpo-40947.72cZcR.rst2
-rw-r--r--Modules/getpath.c31
4 files changed, 23 insertions, 13 deletions
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 33b3459..d791513 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -486,6 +486,7 @@ class SysModuleTest(unittest.TestCase):
self.assertIsInstance(sys.platform, str)
self.assertIsInstance(sys.prefix, str)
self.assertIsInstance(sys.base_prefix, str)
+ self.assertIsInstance(sys.platlibdir, str)
self.assertIsInstance(sys.version, str)
vi = sys.version_info
self.assertIsInstance(vi[:], tuple)
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 44e9a89..dede887 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -775,7 +775,6 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
-DEXEC_PREFIX='"$(exec_prefix)"' \
-DVERSION='"$(VERSION)"' \
-DVPATH='"$(VPATH)"' \
- -DPLATLIBDIR='"$(PLATLIBDIR)"' \
-o $@ $(srcdir)/Modules/getpath.c
Programs/python.o: $(srcdir)/Programs/python.c
@@ -807,7 +806,6 @@ Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile
Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h
$(CC) -c $(PY_CORE_CFLAGS) \
-DABIFLAGS='"$(ABIFLAGS)"' \
- -DPLATLIBDIR='"$(PLATLIBDIR)"' \
$(MULTIARCH_CPPFLAGS) \
-o $@ $(srcdir)/Python/sysmodule.c
diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-06-11-16-06-49.bpo-40947.72cZcR.rst b/Misc/NEWS.d/next/Core and Builtins/2020-06-11-16-06-49.bpo-40947.72cZcR.rst
new file mode 100644
index 0000000..e7dfe06
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2020-06-11-16-06-49.bpo-40947.72cZcR.rst
@@ -0,0 +1,2 @@
+The Python :ref:`Path Configuration <init-path-config>` now takes
+:c:member:`PyConfig.platlibdir` in account.
diff --git a/Modules/getpath.c b/Modules/getpath.c
index 2a7971d..a84c858 100644
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -130,7 +130,7 @@ typedef struct {
wchar_t *exec_prefix_macro; /* EXEC_PREFIX macro */
wchar_t *vpath_macro; /* VPATH macro */
- wchar_t *lib_python; /* "lib/pythonX.Y" */
+ wchar_t *lib_python; /* <platlibdir> / "pythonX.Y" */
int prefix_found; /* found platform independent libraries? */
int exec_prefix_found; /* found the platform dependent libraries? */
@@ -810,7 +810,7 @@ calculate_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig)
"Could not find platform dependent libraries <exec_prefix>\n");
}
- /* <PLATLIBDIR> / "lib-dynload" */
+ /* <platlibdir> / "lib-dynload" */
wchar_t *lib_dynload = joinpath2(calculate->platlibdir,
L"lib-dynload");
if (lib_dynload == NULL) {
@@ -1296,8 +1296,10 @@ calculate_zip_path(PyCalculatePath *calculate)
{
PyStatus res;
- /* Path: <PLATLIBDIR> / "pythonXY.zip" */
- wchar_t *path = joinpath2(calculate->platlibdir, L"python" Py_STRINGIFY(PY_MAJOR_VERSION) Py_STRINGIFY(PY_MINOR_VERSION) L".zip");
+ /* Path: <platlibdir> / "pythonXY.zip" */
+ wchar_t *path = joinpath2(calculate->platlibdir,
+ L"python" Py_STRINGIFY(PY_MAJOR_VERSION) Py_STRINGIFY(PY_MINOR_VERSION)
+ L".zip");
if (path == NULL) {
return _PyStatus_NO_MEMORY();
}
@@ -1305,7 +1307,7 @@ calculate_zip_path(PyCalculatePath *calculate)
if (calculate->prefix_found > 0) {
/* Use the reduced prefix returned by Py_GetPrefix()
- Path: <basename(basename(prefix))> / <PLATLIBDIR> / "python00.zip" */
+ Path: <basename(basename(prefix))> / <platlibdir> / "pythonXY.zip" */
wchar_t *parent = _PyMem_RawWcsdup(calculate->prefix);
if (parent == NULL) {
res = _PyStatus_NO_MEMORY();
@@ -1431,6 +1433,11 @@ static PyStatus
calculate_init(PyCalculatePath *calculate, const PyConfig *config)
{
size_t len;
+
+ calculate->warnings = config->pathconfig_warnings;
+ calculate->pythonpath_env = config->pythonpath_env;
+ calculate->platlibdir = config->platlibdir;
+
const char *path = getenv("PATH");
if (path) {
calculate->path_env = Py_DecodeLocale(path, &len);
@@ -1457,14 +1464,16 @@ calculate_init(PyCalculatePath *calculate, const PyConfig *config)
return DECODE_LOCALE_ERR("VPATH macro", len);
}
- calculate->lib_python = Py_DecodeLocale(PLATLIBDIR "/python" VERSION, &len);
- if (!calculate->lib_python) {
+ // <platlibdir> / "pythonX.Y"
+ wchar_t *pyversion = Py_DecodeLocale("python" VERSION, &len);
+ if (!pyversion) {
return DECODE_LOCALE_ERR("VERSION macro", len);
}
-
- calculate->warnings = config->pathconfig_warnings;
- calculate->pythonpath_env = config->pythonpath_env;
- calculate->platlibdir = config->platlibdir;
+ calculate->lib_python = joinpath2(config->platlibdir, pyversion);
+ PyMem_RawFree(pyversion);
+ if (calculate->lib_python == NULL) {
+ return _PyStatus_NO_MEMORY();
+ }
return _PyStatus_OK();
}