Browse Source

Merge pull request #992 from commodo/python-patch-updates

python: patch updates
Steven Barth 10 years ago
parent
commit
66331c6de2

+ 3
- 0
lang/python/files/python-package.mk View File

@@ -25,6 +25,9 @@ define HostPython
25 25
 	(	export PYTHONPATH="$(PYTHONPATH)"; \
26 26
 		export PYTHONOPTIMIZE=""; \
27 27
 		export PYTHONDONTWRITEBYTECODE=1; \
28
+		export _python_sysroot="$(STAGING_DIR)"; \
29
+		export _python_prefix="/usr"; \
30
+		export _python_exec_prefix="/usr"; \
28 31
 		$(1) \
29 32
 		$(HOST_PYTHON_BIN) $(2); \
30 33
 	)

lang/python/patches/110-enable-zlib.patch → lang/python/patches/001-enable-zlib.patch View File


lang/python/patches/120-do-not-add-include-dirs-when-cross-compiling.patch → lang/python/patches/002-do-not-add-include-dirs-when-cross-compiling.patch View File


lang/python/patches/130-do-not-compile-tests-at-build.patch → lang/python/patches/003-do-not-compile-tests-at-build.patch View File


lang/python/patches/140-do-not-write-bytes-codes.patch → lang/python/patches/004-do-not-write-bytes-codes.patch View File


lang/python/patches/150-fix-libffi-x86-64-configure.patch → lang/python/patches/005-fix-libffi-x86-64-configure.patch View File


lang/python/patches/160-remove-debian-multiarch-support.patch → lang/python/patches/006-remove-debian-multiarch-support.patch View File


lang/python/patches/170-distutils-do-not-adjust-path.patch → lang/python/patches/007-distutils-do-not-adjust-path.patch View File


+ 54
- 0
lang/python/patches/008-distutils-use-python-sysroot.patch View File

@@ -0,0 +1,54 @@
1
+Adjust library/header paths for cross-compilation
2
+
3
+When cross-compiling third-party extensions, the get_python_inc() or
4
+get_python_lib() can be called, to return the path to headers or
5
+libraries. However, they use the sys.prefix of the host Python, which
6
+returns incorrect paths when cross-compiling (paths pointing to host
7
+headers and libraries).
8
+
9
+In order to fix this, we introduce the _python_sysroot, _python_prefix
10
+and _python_exec_prefix variables, that allow to override these
11
+values, and get correct header/library paths when cross-compiling
12
+third-party Python modules.
13
+
14
+The _python_sysroot variable is also used to prefix the LIBDIR value
15
+taken from the sysconfigdata module.
16
+
17
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
18
+
19
+Index: b/Lib/distutils/sysconfig.py
20
+===================================================================
21
+--- a/Lib/distutils/sysconfig.py
22
++++ b/Lib/distutils/sysconfig.py
23
+@@ -19,8 +19,13 @@
24
+ from distutils.errors import DistutilsPlatformError
25
+ 
26
+ # These are needed in a couple of spots, so just compute them once.
27
+-PREFIX = os.path.normpath(sys.prefix)
28
+-EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
29
++if "_python_sysroot" in os.environ:
30
++    _sysroot=os.environ.get('_python_sysroot')
31
++    PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_prefix'))
32
++    EXEC_PREFIX = os.path.normpath(_sysroot + os.environ.get('_python_exec_prefix'))
33
++else:
34
++    PREFIX = os.path.normpath(sys.prefix)
35
++    EXEC_PREFIX = os.path.normpath(sys.exec_prefix)
36
+ 
37
+ # Path to the base directory of the project. On Windows the binary may
38
+ # live in project/PCBuild9.  If we're dealing with an x64 Windows build,
39
+Index: b/Lib/distutils/command/build_ext.py
40
+===================================================================
41
+--- a/Lib/distutils/command/build_ext.py
42
++++ b/Lib/distutils/command/build_ext.py
43
+@@ -237,7 +237,10 @@
44
+         if (sysconfig.get_config_var('Py_ENABLE_SHARED')):
45
+             if not sysconfig.python_build:
46
+                 # building third party extensions
47
+-                self.library_dirs.append(sysconfig.get_config_var('LIBDIR'))
48
++                libdir = sysconfig.get_config_var('LIBDIR')
49
++                if "_python_sysroot" in os.environ:
50
++                    libdir = os.environ.get("_python_sysroot") + libdir
51
++                self.library_dirs.append(libdir)
52
+             else:
53
+                 # building python standard extensions
54
+                 self.library_dirs.append('.')