summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2015-01-18 19:10:32 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-01-23 11:36:27 +0000
commitb2f8367dff8a2db49b9296bd27a2e94a3619884d (patch)
tree4a95853b17d9acecfa59d27b2b35122f47267f8a
parent3873efd33c60010a096391b821ef9004755da1d5 (diff)
downloadpoky-b2f8367dff8a2db49b9296bd27a2e94a3619884d.tar.gz
python3: fix for cross compiling
Fixed: * python3 has introduced _PYTHON_PROJECT_BASE which is used for separate B and S, but it doesn't work when compile Modules, the target python3 runs python3-native's sysconfig to get srcdir which is the native's, there would be errors when native's srcdir has been removed, add _PYTHON_PROJECT_SRC to fix the problem. * Check cross_compiling when get FLAGS (From OE-Core rev: c33639963491f00f55b80299922895fe68b0637d) Signed-off-by: Robert Yang <liezhi.yang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/python/python3-native_3.3.3.bb2
-rw-r--r--meta/recipes-devtools/python/python3/setup.py-check-cross_compiling-when-get-FLAGS.patch50
-rw-r--r--meta/recipes-devtools/python/python3/sysconfig.py-add-_PYTHON_PROJECT_SRC.patch54
-rw-r--r--meta/recipes-devtools/python/python3_3.3.3.bb10
4 files changed, 112 insertions, 4 deletions
diff --git a/meta/recipes-devtools/python/python3-native_3.3.3.bb b/meta/recipes-devtools/python/python3-native_3.3.3.bb
index 9ae2a0b373..73ce0952bd 100644
--- a/meta/recipes-devtools/python/python3-native_3.3.3.bb
+++ b/meta/recipes-devtools/python/python3-native_3.3.3.bb
@@ -27,6 +27,8 @@ file://fix-ast.h-dependency.patch \
27file://makerace.patch \ 27file://makerace.patch \
28${DISTRO_SRC_URI} \ 28${DISTRO_SRC_URI} \
29file://python3-fix-build-error-with-Readline-6.3.patch \ 29file://python3-fix-build-error-with-Readline-6.3.patch \
30file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
31file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
30" 32"
31SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c" 33SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c"
32SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb" 34SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb"
diff --git a/meta/recipes-devtools/python/python3/setup.py-check-cross_compiling-when-get-FLAGS.patch b/meta/recipes-devtools/python/python3/setup.py-check-cross_compiling-when-get-FLAGS.patch
new file mode 100644
index 0000000000..fc2e12dfe5
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/setup.py-check-cross_compiling-when-get-FLAGS.patch
@@ -0,0 +1,50 @@
1From 8dad810f3a3d073f09ad72e1a3ee0a895eab2ca1 Mon Sep 17 00:00:00 2001
2From: Robert Yang <liezhi.yang@windriver.com>
3Date: Sun, 18 Jan 2015 19:05:36 -0800
4Subject: [PATCH] setup.py:check cross_compiling when get FLAGS
5
6Fixed when compile target pythnon3:
7gcc -isystem/path/to/sysroots/x86_64-linux/usr/include \
8 -L=/path/to/sysroots/x86_64-linux/usr/lib
9
10This is incorrect, the native sysroot should not be used by target
11python3.
12
13Upstream-Status: Pending
14
15Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
16---
17 setup.py | 10 ++++++++--
18 1 file changed, 8 insertions(+), 2 deletions(-)
19
20diff --git a/setup.py b/setup.py
21index e8339cd..83fd31f 100644
22--- a/setup.py
23+++ b/setup.py
24@@ -238,7 +238,10 @@ class PyBuildExt(build_ext):
25 # unfortunately, distutils doesn't let us provide separate C and C++
26 # compilers
27 if compiler is not None:
28- (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
29+ if cross_compiling:
30+ (ccshared,cflags) = (os.environ.get('CCSHARED') or '', os.environ.get('CFLAGS') or '')
31+ else:
32+ (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
33 args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
34 self.compiler.set_executables(**args)
35
36@@ -457,7 +460,10 @@ class PyBuildExt(build_ext):
37 ('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
38 ('LDFLAGS', '-L', self.compiler.library_dirs),
39 ('CPPFLAGS', '-I', self.compiler.include_dirs)):
40- env_val = sysconfig.get_config_var(env_var)
41+ if cross_compiling:
42+ env_val = os.environ.get(env_var)
43+ else:
44+ env_val = sysconfig.get_config_var(env_var)
45 if env_val:
46 # To prevent optparse from raising an exception about any
47 # options in env_val that it doesn't know about we strip out
48--
491.7.9.5
50
diff --git a/meta/recipes-devtools/python/python3/sysconfig.py-add-_PYTHON_PROJECT_SRC.patch b/meta/recipes-devtools/python/python3/sysconfig.py-add-_PYTHON_PROJECT_SRC.patch
new file mode 100644
index 0000000000..de07643f2b
--- /dev/null
+++ b/meta/recipes-devtools/python/python3/sysconfig.py-add-_PYTHON_PROJECT_SRC.patch
@@ -0,0 +1,54 @@
1From fc93b3cc23b4f9698ae92a42986dbb02b6f19588 Mon Sep 17 00:00:00 2001
2From: Robert Yang <liezhi.yang@windriver.com>
3Date: Sun, 18 Jan 2015 06:29:50 -0800
4Subject: [PATCH] sysconfig.py: add _PYTHON_PROJECT_SRC
5
6python3 has introduced _PYTHON_PROJECT_BASE which is used for separate B
7and S, but it doesn't work when compile Modules, the target python3 runs
8python3-native's sysconfig to get srcdir which is the native's, there
9would be errors when native's srcdir has been removed, add
10_PYTHON_PROJECT_SRC to fix the problem.
11
12Upstream-Status: Pending
13
14Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
15---
16 Lib/distutils/sysconfig.py | 5 ++++-
17 Lib/sysconfig.py | 5 ++++-
18 2 files changed, 8 insertions(+), 2 deletions(-)
19
20diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
21index a545ab9..74317d1 100644
22--- a/Lib/distutils/sysconfig.py
23+++ b/Lib/distutils/sysconfig.py
24@@ -554,7 +554,10 @@ def get_config_vars(*args):
25 _config_vars['exec_prefix'] = EXEC_PREFIX
26
27 # Always convert srcdir to an absolute path
28- srcdir = _config_vars.get('srcdir', project_base)
29+ if "_PYTHON_PROJECT_SRC" in os.environ:
30+ srcdir = os.path.abspath(os.environ["_PYTHON_PROJECT_SRC"])
31+ else:
32+ srcdir = _config_vars.get('srcdir', project_base)
33 if os.name == 'posix':
34 if python_build:
35 # If srcdir is a relative path (typically '.' or '..')
36diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
37index 7287f11..cc92998 100644
38--- a/Lib/sysconfig.py
39+++ b/Lib/sysconfig.py
40@@ -562,7 +562,10 @@ def get_config_vars(*args):
41 _CONFIG_VARS['userbase'] = _getuserbase()
42
43 # Always convert srcdir to an absolute path
44- srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE)
45+ if "_PYTHON_PROJECT_SRC" in os.environ:
46+ srcdir = os.path.abspath(os.environ["_PYTHON_PROJECT_SRC"])
47+ else:
48+ srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE)
49 if os.name == 'posix':
50 if _PYTHON_BUILD:
51 # If srcdir is a relative path (typically '.' or '..')
52--
531.7.9.5
54
diff --git a/meta/recipes-devtools/python/python3_3.3.3.bb b/meta/recipes-devtools/python/python3_3.3.3.bb
index efa98c09fa..6147408937 100644
--- a/meta/recipes-devtools/python/python3_3.3.3.bb
+++ b/meta/recipes-devtools/python/python3_3.3.3.bb
@@ -39,6 +39,8 @@ SRC_URI += "\
39 file://avoid-ncursesw-include-path.patch \ 39 file://avoid-ncursesw-include-path.patch \
40 file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \ 40 file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
41 file://python3-setup.py-no-host-headers-libs.patch \ 41 file://python3-setup.py-no-host-headers-libs.patch \
42 file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
43 file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
42 " 44 "
43SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c" 45SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c"
44SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb" 46SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb"
@@ -66,6 +68,10 @@ TARGET_CC_ARCH += "-DNDEBUG -fno-inline"
66EXTRA_OEMAKE += "CROSS_COMPILE=yes" 68EXTRA_OEMAKE += "CROSS_COMPILE=yes"
67EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/" 69EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
68 70
71export CROSS_COMPILE = "${TARGET_PREFIX}"
72export _PYTHON_PROJECT_BASE = "${B}"
73export _PYTHON_PROJECT_SRC = "${S}"
74
69# No ctypes option for python 3 75# No ctypes option for python 3
70PYTHONLSBOPTS = "" 76PYTHONLSBOPTS = ""
71 77
@@ -107,8 +113,6 @@ do_compile() {
107 # then call do_install twice we get Makefile.orig == Makefile.sysroot 113 # then call do_install twice we get Makefile.orig == Makefile.sysroot
108 install -m 0644 Makefile Makefile.sysroot 114 install -m 0644 Makefile Makefile.sysroot
109 115
110 export CROSS_COMPILE="${TARGET_PREFIX}"
111 export PYTHONBUILDDIR="${B}"
112 oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \ 116 oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
113 HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \ 117 HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
114 STAGING_LIBDIR=${STAGING_LIBDIR} \ 118 STAGING_LIBDIR=${STAGING_LIBDIR} \
@@ -135,8 +139,6 @@ do_install() {
135 # go to ${D}${STAGING...}/... 139 # go to ${D}${STAGING...}/...
136 install -m 0644 Makefile.orig Makefile 140 install -m 0644 Makefile.orig Makefile
137 141
138 export CROSS_COMPILE="${TARGET_PREFIX}"
139 export PYTHONBUILDDIR="${B}"
140 install -d ${D}${libdir}/pkgconfig 142 install -d ${D}${libdir}/pkgconfig
141 install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config 143 install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config
142 144