summaryrefslogtreecommitdiffstats
path: root/package/python3/python3-003-sysconfigdata-install-location.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/python3/python3-003-sysconfigdata-install-location.patch')
-rw-r--r--package/python3/python3-003-sysconfigdata-install-location.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/package/python3/python3-003-sysconfigdata-install-location.patch b/package/python3/python3-003-sysconfigdata-install-location.patch
new file mode 100644
index 0000000000..af796d48d5
--- /dev/null
+++ b/package/python3/python3-003-sysconfigdata-install-location.patch
@@ -0,0 +1,76 @@
+Change the install location of _sysconfigdata.py
+
+The _sysconfigdata.py module contains definitions that are needed when
+building Python modules. In cross-compilation mode, when building
+Python extensions for the target, we need to use the _sysconfigdata.py
+of the target Python while executing the host Python.
+
+However until now, the _sysconfigdata.py module was installed in
+build/lib.<arch>-<version> directory, together with a number of
+architecture-specific shared objects, which cannot be used with the
+host Python.
+
+To solve this problem, this patch moves _sysconfigdata.py to a
+separate location, build/sysconfigdata.<arch>-<version>/, and only
+this directory gets added to the PYTHONPATH of the host Python
+interpreter when building Python modules for the target.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+Index: b/Makefile.pre.in
+===================================================================
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -543,6 +543,9 @@
+ # sys.path fixup -- see Modules/getpath.c.
+ pybuilddir.txt: $(BUILDPYTHON)
+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars
++ echo `cat pybuilddir.txt`/sysconfigdata > pysysconfigdatadir.txt
++ mkdir -p `cat pysysconfigdatadir.txt`
++ cp `cat pybuilddir.txt`/_sysconfigdata.py `cat pysysconfigdatadir.txt`
+
+ # Build the shared modules
+ # Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for
+@@ -1181,7 +1184,7 @@
+ else true; \
+ fi; \
+ done
+- @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py; \
++ @for i in $(srcdir)/Lib/*.py ; \
+ do \
+ if test -x $$i; then \
+ $(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
+@@ -1191,6 +1194,11 @@
+ echo $(INSTALL_DATA) $$i $(LIBDEST); \
+ fi; \
+ done
++ $(INSTALL_DATA) `cat pysysconfigdatadir.txt`/_sysconfigdata.py \
++ $(DESTDIR)$(LIBDEST)
++ mkdir -p $(DESTDIR)$(LIBDEST)/sysconfigdata
++ $(INSTALL_DATA) `cat pysysconfigdatadir.txt`/_sysconfigdata.py \
++ $(DESTDIR)$(LIBDEST)/sysconfigdata
+ @for d in $(LIBSUBDIRS); \
+ do \
+ a=$(srcdir)/Lib/$$d; \
+@@ -1513,7 +1521,7 @@
+ find build -name 'fficonfig.h' -exec rm -f {} ';' || true
+ find build -name '*.py' -exec rm -f {} ';' || true
+ find build -name '*.py[co]' -exec rm -f {} ';' || true
+- -rm -f pybuilddir.txt
++ -rm -f pybuilddir.txt pysysconfigdatadir.txt
+ -rm -f Lib/lib2to3/*Grammar*.pickle
+ -rm -f Modules/_testembed Modules/_freeze_importlib
+
+Index: b/configure.ac
+===================================================================
+--- a/configure.ac
++++ b/configure.ac
+@@ -67,7 +67,7 @@
+ AC_MSG_ERROR([python$PACKAGE_VERSION interpreter not found])
+ fi
+ AC_MSG_RESULT($interp)
+- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
++ PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pysysconfigdatadir.txt && echo $(abs_builddir)/`cat pysysconfigdatadir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp
+ fi
+ elif test "$cross_compiling" = maybe; then
+ AC_MSG_ERROR([Cross compiling required --host=HOST-TUPLE and --build=ARCH])
OpenPOWER on IntegriCloud