| From e3f3c454ec4992a2283640cef0a35da5a05fb399 Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| Date: Tue, 7 Mar 2017 22:17:59 +0100 |
| Subject: [PATCH] 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> |
| [Peter: update for 2.7.16] |
| Signed-off-by: Peter Korsgaard <peter@korsgaard.com> |
| --- |
| Makefile.pre.in | 12 ++++++++++-- |
| configure.ac | 2 +- |
| 2 files changed, 11 insertions(+), 3 deletions(-) |
| |
| diff --git a/Makefile.pre.in b/Makefile.pre.in |
| index 9297e7fc89..49d3c0926f 100644 |
| --- a/Makefile.pre.in |
| +++ b/Makefile.pre.in |
| @@ -509,6 +509,9 @@ pybuilddir.txt: $(BUILDPYTHON) |
| rm -f ./pybuilddir.txt ; \ |
| exit 1 ; \ |
| fi |
| + echo `cat pybuilddir.txt`/sysconfigdata > pysysconfigdatadir.txt |
| + mkdir -p `cat pysysconfigdatadir.txt` |
| + cp `cat pybuilddir.txt`/_sysconfigdata.py `cat pysysconfigdatadir.txt` |
| |
| # This is shared by the math and cmath modules |
| Modules/_math.o: Modules/_math.c Modules/_math.h |
| @@ -1091,7 +1094,7 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c |
| else true; \ |
| fi; \ |
| done |
| - @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \ |
| + @for i in $(srcdir)/Lib/*.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \ |
| do \ |
| if test -x $$i; then \ |
| $(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \ |
| @@ -1101,6 +1104,11 @@ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c |
| 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; \ |
| @@ -1426,7 +1434,7 @@ distclean: clobber |
| Modules/Setup Modules/Setup.local Modules/Setup.config \ |
| Modules/ld_so_aix Modules/python.exp Misc/python.pc |
| -rm -f python*-gdb.py |
| - -rm -f pybuilddir.txt |
| + -rm -f pybuilddir.txt pysysconfigdatadir.txt |
| # Issue #28258: set LC_ALL to avoid issues with Estonian locale. |
| # Expansion is performed here by shell (spawned by make) itself before |
| # arguments are passed to find. So LC_ALL=C must be set as a separate |
| diff --git a/configure.ac b/configure.ac |
| index aecf6066e8..7143172b98 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -36,7 +36,7 @@ if test "$cross_compiling" = yes; then |
| 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]) |
| -- |
| 2.11.0 |
| |