hc
2025-02-14 bbb9540dc49f70f6b703d1c8d1b85fa5f602d86e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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