diff --git a/meta/classes/distutils-base.bbclass b/meta/classes/distutils-base.bbclass index 5d6d9981e0..2e151ded38 100644 --- a/meta/classes/distutils-base.bbclass +++ b/meta/classes/distutils-base.bbclass @@ -1,17 +1,5 @@ -EXTRA_OEMAKE = "" DEPENDS += "${@["python-native python", ""][(bb.data.getVar('PACKAGES', d, 1) == '')]}" RDEPENDS += "python-core" -def python_dir(d): - staging_incdir = bb.data.getVar( "STAGING_INCDIR", d, 1 ) - if os.path.exists( "%s/python2.5" % staging_incdir ): return "python2.5" - if os.path.exists( "%s/python2.4" % staging_incdir ): return "python2.4" - if os.path.exists( "%s/python2.3" % staging_incdir ): return "python2.3" - raise "No Python in STAGING_INCDIR. Forgot to build python-native ?" - -PYTHON_DIR = "${@python_dir(d)}" -FILES_${PN} = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*" -FILES_${PN}-dbg = "${libdir}/${PYTHON_DIR}/site-packages/.debug \ - ${libdir}/${PYTHON_DIR}/site-packages/*/.debug \ - ${libdir}/${PYTHON_DIR}/site-packages/*/*/.debug" +inherit distutils-common-base diff --git a/meta/classes/distutils-common-base.bbclass b/meta/classes/distutils-common-base.bbclass new file mode 100644 index 0000000000..01bf9eaeba --- /dev/null +++ b/meta/classes/distutils-common-base.bbclass @@ -0,0 +1,30 @@ +EXTRA_OEMAKE = "" + +export STAGING_INCDIR +export STAGING_LIBDIR + +def python_dir(d): + import os, bb + staging_incdir = bb.data.getVar( "STAGING_INCDIR", d, 1 ) + for majmin in "2.6 2.5 2.4 2.3".split(): + if os.path.exists( "%s/python%s" % ( staging_incdir, majmin ) ): return "python%s" % majmin + if not "python-native" in bb.data.getVar( "DEPENDS", d, 1 ).split(): + raise "No Python in STAGING_INCDIR. Forgot to build python-native ?" + return "INVALID" + +PYTHON_DIR = "${@python_dir(d)}" + +PACKAGES = "${PN}-dev ${PN}-dbg ${PN}-doc ${PN}" + +FILES_${PN} = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*" + +FILES_${PN}-dev += "\ + ${datadir}/pkgconfig \ + ${libdir}/pkgconfig \ + ${libdir}/${PYTHON_DIR}/site-packages/*.la \ +" +FILES_${PN}-dbg = "\ + ${libdir}/${PYTHON_DIR}/site-packages/.debug \ + ${libdir}/${PYTHON_DIR}/site-packages/*/.debug \ + ${libdir}/${PYTHON_DIR}/site-packages/*/*/.debug \ +" diff --git a/meta/classes/distutils-native-base.bbclass b/meta/classes/distutils-native-base.bbclass new file mode 100644 index 0000000000..2703fe0740 --- /dev/null +++ b/meta/classes/distutils-native-base.bbclass @@ -0,0 +1,3 @@ +DEPENDS += "${@["python-native", ""][(bb.data.getVar('PACKAGES', d, 1) == '')]}" + +inherit distutils-common-base diff --git a/meta/classes/distutils.bbclass b/meta/classes/distutils.bbclass index 0b9bdfe1a9..245ef7d859 100644 --- a/meta/classes/distutils.bbclass +++ b/meta/classes/distutils.bbclass @@ -25,10 +25,10 @@ distutils_stage_headers() { } distutils_stage_all() { - install -d ${STAGING_DIR_HOST}${prefix}/${PYTHON_DIR}/site-packages STAGING_INCDIR=${STAGING_INCDIR} \ STAGING_LIBDIR=${STAGING_LIBDIR} \ - PYTHONPATH=${STAGING_DIR_HOST}${prefix}/${PYTHON_DIR}/site-packages \ + install -d ${STAGING_DIR_HOST}${libdir}/${PYTHON_DIR}/site-packages + PYTHONPATH=${STAGING_DIR_HOST}${libdir}/${PYTHON_DIR}/site-packages \ BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \ ${STAGING_BINDIR_NATIVE}/python setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \ oefatal "python setup.py install (stage) execution failed." @@ -60,7 +60,14 @@ distutils_do_install() { fi rm -f ${D}${libdir}/${PYTHON_DIR}/site-packages/easy-install.pth - + + # + # FIXME: Bandaid against wrong datadir computation + # + if test -e ${D}${datadir}/share; then + mv -f ${D}${datadir}/share/* ${D}${datadir}/ + fi + find ${D}${libdir}/${PYTHON_DIR}/site-packages -iname '*.pyo' -exec rm {} \; }