mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-01 13:58:04 +00:00
Drop backports, rebase other patches. 0001-main.c-if-OEPYTHON3HOME-is-set-use-instead-of-PYTHON.patch is removed as the use case (allowing python 2 and 3 to coexist in SDKs) is no longer relevant with Python 2.x reaching end of line and upstream has refactored the code making a rebase difficult. If needed, please re-add the patch to py2, rather than py3. Python 3.8 no longer adds "m" to "3.8" in paths, so adjust the recipes and classes accordingly. The manifest for the 3.8.0 version is updated; particularly pkgutil module is now packaged in -core (as other things in core need it); this also necessitates allowing empty -pkgutil package to avoid breakage across layers. (From OE-Core rev: e6ab9f16b92aa1abdae82c535c1a452a1341b0e2) Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
215 lines
8.5 KiB
Diff
215 lines
8.5 KiB
Diff
From a078b6ff1492e848ad1055764fb9a414abaf3e12 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 | 22 ++++++++++++++--------
|
|
Python/getplatform.c | 10 ++++++++++
|
|
Python/sysmodule.c | 2 ++
|
|
6 files changed, 33 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/Include/pythonrun.h b/Include/pythonrun.h
|
|
index 46091e0..61b2e15 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_AnyFileExFlags(
|
|
diff --git a/Lib/site.py b/Lib/site.py
|
|
index a065ab0..1d720ef 100644
|
|
--- a/Lib/site.py
|
|
+++ b/Lib/site.py
|
|
@@ -335,12 +335,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 65665df..be49140 100644
|
|
--- a/Makefile.pre.in
|
|
+++ b/Makefile.pre.in
|
|
@@ -143,7 +143,7 @@ LIBDIR= @libdir@
|
|
MANDIR= @mandir@
|
|
INCLUDEDIR= @includedir@
|
|
CONFINCLUDEDIR= $(exec_prefix)/include
|
|
-SCRIPTDIR= $(prefix)/lib
|
|
+SCRIPTDIR= @libdir@
|
|
ABIFLAGS= @ABIFLAGS@
|
|
|
|
# Detailed destination directories
|
|
@@ -753,6 +753,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
|
|
@@ -868,7 +869,7 @@ regen-symbol: $(srcdir)/Include/graminit.h
|
|
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 b727f66..c003e46 100644
|
|
--- a/Modules/getpath.c
|
|
+++ b/Modules/getpath.c
|
|
@@ -128,6 +128,7 @@ typedef struct {
|
|
wchar_t *exec_prefix; /* EXEC_PREFIX macro */
|
|
|
|
wchar_t *lib_python; /* "lib/pythonX.Y" */
|
|
+ wchar_t *multilib_python; /* "lib[suffix]/pythonX.Y" */
|
|
|
|
int prefix_found; /* found platform independent libraries? */
|
|
int exec_prefix_found; /* found the platform dependent libraries? */
|
|
@@ -386,7 +387,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
|
|
if (delim) {
|
|
*delim = L'\0';
|
|
}
|
|
- status = joinpath(prefix, calculate->lib_python, prefix_len);
|
|
+ status = joinpath(prefix, calculate->multilib_python, prefix_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -444,7 +445,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
|
|
do {
|
|
/* Path: <argv0_path or substring> / <lib_python> / LANDMARK */
|
|
size_t n = wcslen(prefix);
|
|
- status = joinpath(prefix, calculate->lib_python, prefix_len);
|
|
+ status = joinpath(prefix, calculate->multilib_python, prefix_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -467,7 +468,7 @@ search_for_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
|
|
if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) {
|
|
return PATHLEN_ERR();
|
|
}
|
|
- status = joinpath(prefix, calculate->lib_python, prefix_len);
|
|
+ status = joinpath(prefix, calculate->multilib_python, prefix_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -510,7 +511,7 @@ calculate_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
|
|
if (safe_wcscpy(prefix, calculate->prefix, prefix_len) < 0) {
|
|
return PATHLEN_ERR();
|
|
}
|
|
- status = joinpath(prefix, calculate->lib_python, prefix_len);
|
|
+ status = joinpath(prefix, calculate->multilib_python, prefix_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -635,7 +636,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
|
|
return PATHLEN_ERR();
|
|
}
|
|
}
|
|
- status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
|
|
+ status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -667,7 +668,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
|
|
do {
|
|
/* Path: <argv0_path or substring> / <lib_python> / "lib-dynload" */
|
|
size_t n = wcslen(exec_prefix);
|
|
- status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
|
|
+ status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -689,7 +690,7 @@ search_for_exec_prefix(PyCalculatePath *calculate, _PyPathConfig *pathconfig,
|
|
if (safe_wcscpy(exec_prefix, calculate->exec_prefix, exec_prefix_len) < 0) {
|
|
return PATHLEN_ERR();
|
|
}
|
|
- status = joinpath(exec_prefix, calculate->lib_python, exec_prefix_len);
|
|
+ status = joinpath(exec_prefix, calculate->multilib_python, exec_prefix_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
return status;
|
|
}
|
|
@@ -928,7 +929,7 @@ calculate_argv0_path(PyCalculatePath *calculate, const wchar_t *program_full_pat
|
|
return PATHLEN_ERR();
|
|
}
|
|
reduce(argv0_path);
|
|
- status = joinpath(argv0_path, calculate->lib_python, argv0_path_len);
|
|
+ status = joinpath(argv0_path, calculate->multilib_python, argv0_path_len);
|
|
if (_PyStatus_EXCEPTION(status)) {
|
|
PyMem_RawFree(wbuf);
|
|
return status;
|
|
@@ -1201,6 +1202,10 @@ calculate_init(PyCalculatePath *calculate, const PyConfig *config)
|
|
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);
|
|
+ }
|
|
|
|
calculate->warnings = config->pathconfig_warnings;
|
|
calculate->pythonpath_env = config->pythonpath_env;
|
|
@@ -1216,6 +1221,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 5b0fb81..0dce754 100644
|
|
--- a/Python/sysmodule.c
|
|
+++ b/Python/sysmodule.c
|
|
@@ -2668,6 +2668,8 @@ _PySys_InitCore(_PyRuntimeState *runtime, PyInterpreterState *interp,
|
|
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",
|