mirror of
https://git.yoctoproject.org/poky
synced 2026-07-27 07:27:12 +00:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
3873efd33c
commit
b2f8367dff
@@ -27,6 +27,8 @@ file://fix-ast.h-dependency.patch \
|
|||||||
file://makerace.patch \
|
file://makerace.patch \
|
||||||
${DISTRO_SRC_URI} \
|
${DISTRO_SRC_URI} \
|
||||||
file://python3-fix-build-error-with-Readline-6.3.patch \
|
file://python3-fix-build-error-with-Readline-6.3.patch \
|
||||||
|
file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
|
||||||
|
file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
|
||||||
"
|
"
|
||||||
SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c"
|
SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c"
|
||||||
SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb"
|
SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb"
|
||||||
|
|||||||
+50
@@ -0,0 +1,50 @@
|
|||||||
|
From 8dad810f3a3d073f09ad72e1a3ee0a895eab2ca1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Yang <liezhi.yang@windriver.com>
|
||||||
|
Date: Sun, 18 Jan 2015 19:05:36 -0800
|
||||||
|
Subject: [PATCH] setup.py:check cross_compiling when get FLAGS
|
||||||
|
|
||||||
|
Fixed when compile target pythnon3:
|
||||||
|
gcc -isystem/path/to/sysroots/x86_64-linux/usr/include \
|
||||||
|
-L=/path/to/sysroots/x86_64-linux/usr/lib
|
||||||
|
|
||||||
|
This is incorrect, the native sysroot should not be used by target
|
||||||
|
python3.
|
||||||
|
|
||||||
|
Upstream-Status: Pending
|
||||||
|
|
||||||
|
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
|
||||||
|
---
|
||||||
|
setup.py | 10 ++++++++--
|
||||||
|
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index e8339cd..83fd31f 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -238,7 +238,10 @@ class PyBuildExt(build_ext):
|
||||||
|
# unfortunately, distutils doesn't let us provide separate C and C++
|
||||||
|
# compilers
|
||||||
|
if compiler is not None:
|
||||||
|
- (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
|
||||||
|
+ if cross_compiling:
|
||||||
|
+ (ccshared,cflags) = (os.environ.get('CCSHARED') or '', os.environ.get('CFLAGS') or '')
|
||||||
|
+ else:
|
||||||
|
+ (ccshared,cflags) = sysconfig.get_config_vars('CCSHARED','CFLAGS')
|
||||||
|
args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags
|
||||||
|
self.compiler.set_executables(**args)
|
||||||
|
|
||||||
|
@@ -457,7 +460,10 @@ class PyBuildExt(build_ext):
|
||||||
|
('LDFLAGS', '-R', self.compiler.runtime_library_dirs),
|
||||||
|
('LDFLAGS', '-L', self.compiler.library_dirs),
|
||||||
|
('CPPFLAGS', '-I', self.compiler.include_dirs)):
|
||||||
|
- env_val = sysconfig.get_config_var(env_var)
|
||||||
|
+ if cross_compiling:
|
||||||
|
+ env_val = os.environ.get(env_var)
|
||||||
|
+ else:
|
||||||
|
+ env_val = sysconfig.get_config_var(env_var)
|
||||||
|
if env_val:
|
||||||
|
# To prevent optparse from raising an exception about any
|
||||||
|
# options in env_val that it doesn't know about we strip out
|
||||||
|
--
|
||||||
|
1.7.9.5
|
||||||
|
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
From fc93b3cc23b4f9698ae92a42986dbb02b6f19588 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Yang <liezhi.yang@windriver.com>
|
||||||
|
Date: Sun, 18 Jan 2015 06:29:50 -0800
|
||||||
|
Subject: [PATCH] sysconfig.py: add _PYTHON_PROJECT_SRC
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
Upstream-Status: Pending
|
||||||
|
|
||||||
|
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
|
||||||
|
---
|
||||||
|
Lib/distutils/sysconfig.py | 5 ++++-
|
||||||
|
Lib/sysconfig.py | 5 ++++-
|
||||||
|
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
|
||||||
|
index a545ab9..74317d1 100644
|
||||||
|
--- a/Lib/distutils/sysconfig.py
|
||||||
|
+++ b/Lib/distutils/sysconfig.py
|
||||||
|
@@ -554,7 +554,10 @@ def get_config_vars(*args):
|
||||||
|
_config_vars['exec_prefix'] = EXEC_PREFIX
|
||||||
|
|
||||||
|
# Always convert srcdir to an absolute path
|
||||||
|
- srcdir = _config_vars.get('srcdir', project_base)
|
||||||
|
+ if "_PYTHON_PROJECT_SRC" in os.environ:
|
||||||
|
+ srcdir = os.path.abspath(os.environ["_PYTHON_PROJECT_SRC"])
|
||||||
|
+ else:
|
||||||
|
+ srcdir = _config_vars.get('srcdir', project_base)
|
||||||
|
if os.name == 'posix':
|
||||||
|
if python_build:
|
||||||
|
# If srcdir is a relative path (typically '.' or '..')
|
||||||
|
diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
|
||||||
|
index 7287f11..cc92998 100644
|
||||||
|
--- a/Lib/sysconfig.py
|
||||||
|
+++ b/Lib/sysconfig.py
|
||||||
|
@@ -562,7 +562,10 @@ def get_config_vars(*args):
|
||||||
|
_CONFIG_VARS['userbase'] = _getuserbase()
|
||||||
|
|
||||||
|
# Always convert srcdir to an absolute path
|
||||||
|
- srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE)
|
||||||
|
+ if "_PYTHON_PROJECT_SRC" in os.environ:
|
||||||
|
+ srcdir = os.path.abspath(os.environ["_PYTHON_PROJECT_SRC"])
|
||||||
|
+ else:
|
||||||
|
+ srcdir = _CONFIG_VARS.get('srcdir', _PROJECT_BASE)
|
||||||
|
if os.name == 'posix':
|
||||||
|
if _PYTHON_BUILD:
|
||||||
|
# If srcdir is a relative path (typically '.' or '..')
|
||||||
|
--
|
||||||
|
1.7.9.5
|
||||||
|
|
||||||
@@ -39,6 +39,8 @@ SRC_URI += "\
|
|||||||
file://avoid-ncursesw-include-path.patch \
|
file://avoid-ncursesw-include-path.patch \
|
||||||
file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
|
file://python3-use-CROSSPYTHONPATH-for-PYTHON_FOR_BUILD.patch \
|
||||||
file://python3-setup.py-no-host-headers-libs.patch \
|
file://python3-setup.py-no-host-headers-libs.patch \
|
||||||
|
file://sysconfig.py-add-_PYTHON_PROJECT_SRC.patch \
|
||||||
|
file://setup.py-check-cross_compiling-when-get-FLAGS.patch \
|
||||||
"
|
"
|
||||||
SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c"
|
SRC_URI[md5sum] = "f3ebe34d4d8695bf889279b54673e10c"
|
||||||
SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb"
|
SRC_URI[sha256sum] = "e526e9b612f623888364d30cc9f3dfc34dcef39065c713bdbcddf47df84d8dcb"
|
||||||
@@ -66,6 +68,10 @@ TARGET_CC_ARCH += "-DNDEBUG -fno-inline"
|
|||||||
EXTRA_OEMAKE += "CROSS_COMPILE=yes"
|
EXTRA_OEMAKE += "CROSS_COMPILE=yes"
|
||||||
EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
|
EXTRA_OECONF += "CROSSPYTHONPATH=${STAGING_LIBDIR_NATIVE}/python${PYTHON_MAJMIN}/lib-dynload/"
|
||||||
|
|
||||||
|
export CROSS_COMPILE = "${TARGET_PREFIX}"
|
||||||
|
export _PYTHON_PROJECT_BASE = "${B}"
|
||||||
|
export _PYTHON_PROJECT_SRC = "${S}"
|
||||||
|
|
||||||
# No ctypes option for python 3
|
# No ctypes option for python 3
|
||||||
PYTHONLSBOPTS = ""
|
PYTHONLSBOPTS = ""
|
||||||
|
|
||||||
@@ -107,8 +113,6 @@ do_compile() {
|
|||||||
# then call do_install twice we get Makefile.orig == Makefile.sysroot
|
# then call do_install twice we get Makefile.orig == Makefile.sysroot
|
||||||
install -m 0644 Makefile Makefile.sysroot
|
install -m 0644 Makefile Makefile.sysroot
|
||||||
|
|
||||||
export CROSS_COMPILE="${TARGET_PREFIX}"
|
|
||||||
export PYTHONBUILDDIR="${B}"
|
|
||||||
oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
|
oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/python3-native/pgen \
|
||||||
HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
|
HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python3-native/python3 \
|
||||||
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
||||||
@@ -135,8 +139,6 @@ do_install() {
|
|||||||
# go to ${D}${STAGING...}/...
|
# go to ${D}${STAGING...}/...
|
||||||
install -m 0644 Makefile.orig Makefile
|
install -m 0644 Makefile.orig Makefile
|
||||||
|
|
||||||
export CROSS_COMPILE="${TARGET_PREFIX}"
|
|
||||||
export PYTHONBUILDDIR="${B}"
|
|
||||||
install -d ${D}${libdir}/pkgconfig
|
install -d ${D}${libdir}/pkgconfig
|
||||||
install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config
|
install -d ${D}${libdir}/python${PYTHON_MAJMIN}/config
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user