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
|
Add some cross-compilation fixes to distutils
Inspired by work done by Marc Kleine-Budde <mkl@pengutronix.de> in
PTXdist.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Lib/distutils/sysconfig.py | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
Index: Python-2.7.2/Lib/distutils/sysconfig.py
===================================================================
--- Python-2.7.2.orig/Lib/distutils/sysconfig.py
+++ Python-2.7.2/Lib/distutils/sysconfig.py
@@ -19,13 +19,22 @@
from distutils.errors import DistutilsPlatformError
# These are needed in a couple of spots, so just compute them once.
-PREFIX = os.path.normpath(sys.prefix)
-EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
+EXECUTABLE_DIRNAME = os.path.dirname(os.path.realpath(sys.executable))
+if os.environ.get('CROSS_COMPILING') == 'yes':
+ _sysroot=os.environ.get('_python_sysroot')
+ PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix'))
+ EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix'))
+ if '_python_srcdir' in os.environ:
+ EXECUTABLE_DIRNAME = os.path.normpath(os.environ['_python_srcdir'])
+else:
+ PREFIX = os.path.normpath(sys.prefix)
+ EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
+
# Path to the base directory of the project. On Windows the binary may
# live in project/PCBuild9. If we're dealing with an x64 Windows build,
# it'll live in project/PCbuild/amd64.
-project_base = os.path.dirname(os.path.abspath(sys.executable))
+project_base = EXECUTABLE_DIRNAME
if os.name == "nt" and "pcbuild" in project_base[-8:].lower():
project_base = os.path.abspath(os.path.join(project_base, os.path.pardir))
# PC/VS7.1
@@ -74,7 +83,7 @@
if os.name == "posix":
if python_build:
- buildir = os.path.dirname(sys.executable)
+ buildir = EXECUTABLE_DIRNAME
if plat_specific:
# python.h is located in the buildir
inc_dir = buildir
@@ -206,7 +215,7 @@
def get_makefile_filename():
"""Return full pathname of installed Makefile from the Python build."""
if python_build:
- return os.path.join(os.path.dirname(sys.executable), "Makefile")
+ return os.path.join(EXECUTABLE_DIRNAME, "Makefile")
lib_dir = get_python_lib(plat_specific=1, standard_lib=1)
return os.path.join(lib_dir, "config", "Makefile")
Index: Python-2.7.2/configure.in
===================================================================
--- Python-2.7.2.orig/configure.in
+++ Python-2.7.2/configure.in
@@ -4328,6 +4328,21 @@
CROSS_COMPILING=$cross_compiling
AC_SUBST(CROSS_COMPILING)
+#
+# Cross compiling
+#
+# special RUNSHARED
+if test "$cross_compiling" = "yes"; then
+ RUNSHARED="\
+ CROSS_COMPILING=yes \
+ _python_cross_host=${ac_cv_host} \
+ _python_sysroot=\"\$(sysroot)\" \
+ _python_srcdir=\"\$(srcdir)\" \
+ _python_prefix=\"\$(prefix)\" \
+ _python_exec_prefix=\"\$(exec_prefix)\""
+fi
+
+
# generate output files
AC_CONFIG_FILES(Makefile.pre Modules/Setup.config Misc/python.pc)
AC_CONFIG_FILES([Modules/ld_so_aix], [chmod +x Modules/ld_so_aix])
|