[OE-core] [PATCH]] python: Unbreak Python third-party extensions
Michael Lippautz
michael.lippautz at gmail.com
Fri Apr 29 10:44:58 UTC 2011
This fixes compilation/linking of Python 3rd party extensions.
${STAGING_LIBDIR}/python<pyver>/config/Makefile needs the correct
INCDIR and LIBDIR settings to be used in cross compilation for the
target. 3rd party module use distutils.sysconfig which uses this
Makefile to create compiler/linker flags.
Workflow:
1) compile needs the staged/sysroot Makefile since it is needed
for compilation/linking
2) install needs the unmodified Makefile to install files (i.e.
headers) into the right directores. (otherwise they would be
installed in ${D}/${STAGING_...}
3) staging needs modified Makefile again
4) packaging needs unmodified to make compilation on the target
possible
Signed-off-by: Michael Lippautz <michael.lippautz at gmail.com>
---
meta/recipes-devtools/python/python_2.6.6.bb | 25 +++++++++++++++++++------
1 files changed, 19 insertions(+), 6 deletions(-)
diff --git a/meta/recipes-devtools/python/python_2.6.6.bb b/meta/recipes-devtools/python/python_2.6.6.bb
index 2939df4..44ace13 100644
--- a/meta/recipes-devtools/python/python_2.6.6.bb
+++ b/meta/recipes-devtools/python/python_2.6.6.bb
@@ -1,7 +1,7 @@
require python.inc
DEPENDS = "python-native db gdbm openssl readline sqlite3 zlib"
DEPENDS_sharprom = "python-native db readline zlib gdbm openssl"
-PR = "${INC_PR}.1"
+PR = "${INC_PR}.2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=38fdd546420fab09ac6bd3d8a1c83eb6"
DISTRO_SRC_URI ?= "file://sitecustomize.py"
@@ -41,11 +41,13 @@ do_compile_prepend() {
install -d ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
install -d ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/
install -m 0644 pyconfig.h ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
+
+ # remove hardcoded ccache, see http://bugs.openembedded.net/show_bug.cgi?id=4144
+ sed -i -e s,ccache,'$(CCACHE)', Makefile
+
install -m 0644 Makefile Makefile.orig
- install -m 0644 Makefile Makefile.backup
- sed -e 's,${includedir},${STAGING_INCDIR},' < Makefile.backup > Makefile
- install -m 0644 Makefile Makefile.backup
- sed -e 's,${libdir},${STAGING_LIBDIR},' < Makefile.backup > Makefile
+ sed -i -e 's,${includedir},${STAGING_INCDIR},' Makefile
+ sed -i -e 's,${libdir},${STAGING_LIBDIR},' Makefile
install -m 0644 Makefile ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/
}
@@ -68,14 +70,18 @@ do_compile() {
}
do_install() {
+ # make install needs the original Makefile, or otherwise the inclues would
+ # go to ${D}${STAGING...}/...
+ install -m 0644 Makefile Makefile.sysroot
install -m 0644 Makefile.orig Makefile
-
oe_runmake HOSTPGEN=${STAGING_BINDIR_NATIVE}/pgen \
HOSTPYTHON=${STAGING_BINDIR_NATIVE}/python \
STAGING_LIBDIR=${STAGING_LIBDIR} \
STAGING_INCDIR=${STAGING_INCDIR} \
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
DESTDIR=${D} LIBDIR=${libdir} install
+ install -m 0644 Makefile.sysroot ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
+ rm Makefile.sysroot
if [ -e ${WORKDIR}/sitecustomize.py ]; then
install -m 0644 ${WORKDIR}/sitecustomize.py ${D}/${libdir}/python${PYTHON_MAJMIN}
@@ -85,6 +91,13 @@ do_install() {
sed -i -e s,ccache,'$(CCACHE)', ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
}
+PACKAGE_PREPROCESS_FUNCS += "py_package_preprocess"
+
+py_package_preprocess () {
+ # copy back the old Makefile to fix target package
+ install -m 0644 Makefile.orig ${D}/${libdir}/python${PYTHON_MAJMIN}/config/Makefile
+}
+
require python-${PYTHON_MAJMIN}-manifest.inc
# manual dependency additions
--
1.7.3.4
More information about the Openembedded-core
mailing list