From 0fbdad1eaf541a8e92be81f39514cd249b3b0801 Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Tue, 5 Feb 2019 15:52:02 +0100
Subject: [PATCH] Do not hardcode "lib" as location for modules, site-packages
 and lib-dynload

Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>

---
 Include/pythonrun.h  |  2 ++
 Lib/site.py          |  4 ++--
 Makefile.pre.in      |  5 +++--
 Modules/getpath.c    | 18 ++++++++++++------
 Python/getplatform.c | 10 ++++++++++
 Python/sysmodule.c   |  2 ++
 6 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/Include/pythonrun.h b/Include/pythonrun.h
index 6f0c6fc..0a17edd 100644
--- a/Include/pythonrun.h
+++ b/Include/pythonrun.h
@@ -7,6 +7,8 @@
 extern "C" {
 #endif
 
+PyAPI_FUNC(const char *) Py_GetLib(void);
+
 #ifndef Py_LIMITED_API
 PyAPI_FUNC(int) PyRun_SimpleStringFlags(const char *, PyCompilerFlags *);
 PyAPI_FUNC(int) PyRun_AnyFileFlags(FILE *, const char *, PyCompilerFlags *);
diff --git a/Lib/site.py b/Lib/site.py
index ffd132b..b55f6d8 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -334,12 +334,12 @@ def getsitepackages(prefixes=None):
         seen.add(prefix)
 
         if os.sep == '/':
-            sitepackages.append(os.path.join(prefix, "lib",
+            sitepackages.append(os.path.join(prefix, sys.lib,
                                         "python%d.%d" % sys.version_info[:2],
                                         "site-packages"))
         else:
             sitepackages.append(prefix)
-            sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
+            sitepackages.append(os.path.join(prefix, sys.lib, "site-packages"))
     return sitepackages
 
 def addsitepackages(known_paths, prefixes=None):
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 6e81b2f..671a20e 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -142,7 +142,7 @@ LIBDIR=		@libdir@
 MANDIR=		@mandir@
 INCLUDEDIR=	@includedir@
 CONFINCLUDEDIR=	$(exec_prefix)/include
-SCRIPTDIR=	$(prefix)/lib
+SCRIPTDIR=	@libdir@
 ABIFLAGS=	@ABIFLAGS@
 
 # Detailed destination directories
@@ -768,6 +768,7 @@ Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
 		-DEXEC_PREFIX='"$(exec_prefix)"' \
 		-DVERSION='"$(VERSION)"' \
 		-DVPATH='"$(VPATH)"' \
+		-DLIB='"$(LIB)"' \
 		-o $@ $(srcdir)/Modules/getpath.c
 
 Programs/python.o: $(srcdir)/Programs/python.c
@@ -856,7 +857,7 @@ regen-opcode:
 Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h
 
 Python/getplatform.o: $(srcdir)/Python/getplatform.c
-		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
+		$(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c
 
 Python/importdl.o: $(srcdir)/Python/importdl.c
 		$(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
diff --git a/Modules/getpath.c b/Modules/getpath.c
index e6a3e8e..0c62af6 100644
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -123,6 +123,7 @@ typedef struct {
     wchar_t *exec_prefix;              /* EXEC_PREFIX define */
 
     wchar_t *lib_python;               /* "lib/pythonX.Y" */
+    wchar_t *multilib_python;               /* "lib[suffix]/pythonX.Y" */
     wchar_t argv0_path[MAXPATHLEN+1];
     wchar_t zip_path[MAXPATHLEN+1];    /* ".../lib/pythonXY.zip" */
 
@@ -314,7 +315,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
         if (delim) {
             *delim = L'\0';
         }
-        joinpath(prefix, calculate->lib_python);
+        joinpath(prefix, calculate->multilib_python);
         joinpath(prefix, LANDMARK);
         return 1;
     }
@@ -343,7 +344,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
     copy_absolute(prefix, calculate->argv0_path, MAXPATHLEN+1);
     do {
         n = wcslen(prefix);
-        joinpath(prefix, calculate->lib_python);
+        joinpath(prefix, calculate->multilib_python);
         joinpath(prefix, LANDMARK);
         if (ismodule(prefix)) {
             return 1;
@@ -355,7 +356,7 @@ search_for_prefix(const _PyCoreConfig *core_config,
     /* Look at configure's PREFIX */
     wcsncpy(prefix, calculate->prefix, MAXPATHLEN);
     prefix[MAXPATHLEN] = L'\0';
-    joinpath(prefix, calculate->lib_python);
+    joinpath(prefix, calculate->multilib_python);
     joinpath(prefix, LANDMARK);
     if (ismodule(prefix)) {
         return 1;
@@ -427,7 +428,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
             wcsncpy(exec_prefix, core_config->home, MAXPATHLEN);
         }
         exec_prefix[MAXPATHLEN] = L'\0';
-        joinpath(exec_prefix, calculate->lib_python);
+        joinpath(exec_prefix, calculate->multilib_python);
         joinpath(exec_prefix, L"lib-dynload");
         return 1;
     }
@@ -464,7 +465,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
     copy_absolute(exec_prefix, calculate->argv0_path, MAXPATHLEN+1);
     do {
         n = wcslen(exec_prefix);
-        joinpath(exec_prefix, calculate->lib_python);
+        joinpath(exec_prefix, calculate->multilib_python);
         joinpath(exec_prefix, L"lib-dynload");
         if (isdir(exec_prefix)) {
             return 1;
@@ -476,7 +477,7 @@ search_for_exec_prefix(const _PyCoreConfig *core_config,
     /* Look at configure's EXEC_PREFIX */
     wcsncpy(exec_prefix, calculate->exec_prefix, MAXPATHLEN);
     exec_prefix[MAXPATHLEN] = L'\0';
-    joinpath(exec_prefix, calculate->lib_python);
+    joinpath(exec_prefix, calculate->multilib_python);
     joinpath(exec_prefix, L"lib-dynload");
     if (isdir(exec_prefix)) {
         return 1;
@@ -871,6 +872,10 @@ calculate_init(PyCalculatePath *calculate,
     if (!calculate->lib_python) {
         return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
     }
+    calculate->multilib_python = Py_DecodeLocale(LIB "/python" VERSION, &len);
+    if (!calculate->multilib_python) {
+        return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
+    }
     return _Py_INIT_OK();
 }
 
@@ -882,6 +887,7 @@ calculate_free(PyCalculatePath *calculate)
     PyMem_RawFree(calculate->prefix);
     PyMem_RawFree(calculate->exec_prefix);
     PyMem_RawFree(calculate->lib_python);
+    PyMem_RawFree(calculate->multilib_python);
     PyMem_RawFree(calculate->path_env);
 }
 
diff --git a/Python/getplatform.c b/Python/getplatform.c
index 81a0f7a..d55396b 100644
--- a/Python/getplatform.c
+++ b/Python/getplatform.c
@@ -10,3 +10,13 @@ Py_GetPlatform(void)
 {
     return PLATFORM;
 }
+
+#ifndef LIB
+#define LIB "lib"
+#endif
+
+const char *
+Py_GetLib(void)
+{
+	return LIB;
+}
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index efe5b29..de77b17 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -2319,6 +2319,8 @@ _PySys_BeginInit(PyObject **sysmod)
                         PyUnicode_FromString(Py_GetCopyright()));
     SET_SYS_FROM_STRING("platform",
                         PyUnicode_FromString(Py_GetPlatform()));
+    SET_SYS_FROM_STRING("lib",
+                        PyUnicode_FromString(Py_GetLib()));
     SET_SYS_FROM_STRING("maxsize",
                         PyLong_FromSsize_t(PY_SSIZE_T_MAX));
     SET_SYS_FROM_STRING("float_info",
