classes: Add distutils for python3
In line with python2 add distutils and setuptools classes for handing python3 Use python-distribute instead of python-setuptools in setuptools bbclass Remove --single-version-externally-managed since its setuptools specific and we dont use it anymore Do build_ext as separate step during compile Add DISTUTILS_BUILD_EXT_ARGS for modules to pass flags to build_ext step in setup.py Add build_ext as sepate step during compile and add the cross sysrooted library and headers since we are cross compiling Use ${PYTHON_PN} in place of hardcoding python name Remove the /etc/share if its empty Since OE-Core times we now have machine specific sysroots for targets unlike before when we used arch specific sysroots so reflect that here Use MACHINE for sysroot when not building for build host Python's machinery replaces directories in sysroot path to match OE's staging area sysroots. Earlier we use to have HOST_SYS represent sysroot always but now we use MACHINE to represent target sysroots but HOST_SYS to represent host sysroot. This patch caters to that difference (From OE-Core rev: 8bb0206ed67228c88dd5bc2d8b36ce28f48b78f4) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
8314590f09
commit
0221af0f4e
|
@ -0,0 +1,77 @@
|
|||
DISTUTILS_BUILD_ARGS ?= ""
|
||||
DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}"
|
||||
DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \
|
||||
--install-data=${STAGING_DATADIR}"
|
||||
DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \
|
||||
--install-data=${D}/${datadir}"
|
||||
|
||||
distutils_do_compile() {
|
||||
STAGING_INCDIR=${STAGING_INCDIR} \
|
||||
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
||||
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
|
||||
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py build ${DISTUTILS_BUILD_ARGS} || \
|
||||
bbfatal "${PYTHON_PN} setup.py build_ext execution failed."
|
||||
}
|
||||
|
||||
distutils_stage_headers() {
|
||||
install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
|
||||
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
|
||||
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
|
||||
bbfatal "${PYTHON_PN} setup.py install_headers execution failed."
|
||||
}
|
||||
|
||||
distutils_stage_all() {
|
||||
STAGING_INCDIR=${STAGING_INCDIR} \
|
||||
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
||||
install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
|
||||
PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
|
||||
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
|
||||
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
|
||||
bbfatal "${PYTHON_PN} setup.py install (stage) execution failed."
|
||||
}
|
||||
|
||||
distutils_do_install() {
|
||||
echo "Beginning ${PN} Install ..."
|
||||
install -d ${D}${PYTHON_SITEPACKAGES_DIR}
|
||||
echo "Step 2 of ${PN} Install ..."
|
||||
STAGING_INCDIR=${STAGING_INCDIR} \
|
||||
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
||||
PYTHONPATH=${D}/${PYTHON_SITEPACKAGES_DIR} \
|
||||
BUILD_SYS=${BUILD_SYS} HOST_SYS=${HOST_SYS} \
|
||||
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
|
||||
bbfatal "${PYTHON_PN} setup.py install execution failed."
|
||||
|
||||
echo "Step 3 of ${PN} Install ..."
|
||||
# support filenames with *spaces*
|
||||
find ${D} -name "*.py" -print0 | while read -d $'\0' i ; do \
|
||||
sed -i -e s:${D}::g $i
|
||||
done
|
||||
|
||||
echo "Step 4 of ${PN} Install ..."
|
||||
if test -e ${D}${bindir} ; then
|
||||
for i in ${D}${bindir}/* ; do \
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Step 4 of ${PN} Install ..."
|
||||
if test -e ${D}${sbindir}; then
|
||||
for i in ${D}${sbindir}/* ; do \
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Step 5 of ${PN} Install ..."
|
||||
rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
|
||||
|
||||
#
|
||||
# FIXME: Bandaid against wrong datadir computation
|
||||
#
|
||||
if test -e ${D}${datadir}/share; then
|
||||
mv -f ${D}${datadir}/share/* ${D}${datadir}/
|
||||
fi
|
||||
}
|
||||
|
||||
#EXPORT_FUNCTIONS do_compile do_install
|
||||
|
||||
export LDSHARED="${CCLD} -shared"
|
|
@ -0,0 +1,5 @@
|
|||
DEPENDS += "${@["${PYTHON_PN}-native ${PYTHON_PN}", ""][(d.getVar('PACKAGES', True) == '')]}"
|
||||
RDEPENDS_${PN} += "${@['', '${PYTHON_PN}-core']['${CLASSOVERRIDE}' == 'class-target']}"
|
||||
|
||||
inherit distutils-common-base python3native
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
PYTHON_BASEVERSION = "3.3"
|
||||
|
||||
inherit distutils-native-base
|
|
@ -0,0 +1,98 @@
|
|||
inherit distutils3-base
|
||||
|
||||
DISTUTILS_BUILD_ARGS ?= ""
|
||||
DISTUTILS_BUILD_EXT_ARGS ?= ""
|
||||
DISTUTILS_STAGE_HEADERS_ARGS ?= "--install-dir=${STAGING_INCDIR}/${PYTHON_DIR}"
|
||||
DISTUTILS_STAGE_ALL_ARGS ?= "--prefix=${STAGING_DIR_HOST}${prefix} \
|
||||
--install-data=${STAGING_DATADIR}"
|
||||
DISTUTILS_INSTALL_ARGS ?= "--prefix=${D}/${prefix} \
|
||||
--install-data=${D}/${datadir}"
|
||||
|
||||
distutils3_do_compile() {
|
||||
if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
|
||||
SYS=${MACHINE}
|
||||
else
|
||||
SYS=${HOST_SYS}
|
||||
fi
|
||||
STAGING_INCDIR=${STAGING_INCDIR} \
|
||||
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
||||
BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
|
||||
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
|
||||
build ${DISTUTILS_BUILD_ARGS} || \
|
||||
bbfatal "${PYTHON_PN} setup.py build_ext execution failed."
|
||||
}
|
||||
|
||||
distutils3_stage_headers() {
|
||||
install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
|
||||
if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
|
||||
SYS=${MACHINE}
|
||||
else
|
||||
SYS=${HOST_SYS}
|
||||
fi
|
||||
BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
|
||||
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
|
||||
bbfatal "${PYTHON_PN} setup.py install_headers execution failed."
|
||||
}
|
||||
|
||||
distutils3_stage_all() {
|
||||
if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
|
||||
SYS=${MACHINE}
|
||||
else
|
||||
SYS=${HOST_SYS}
|
||||
fi
|
||||
STAGING_INCDIR=${STAGING_INCDIR} \
|
||||
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
||||
install -d ${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR}
|
||||
PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} \
|
||||
BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
|
||||
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
|
||||
bbfatal "${PYTHON_PN} setup.py install (stage) execution failed."
|
||||
}
|
||||
|
||||
distutils3_do_install() {
|
||||
install -d ${D}${PYTHON_SITEPACKAGES_DIR}
|
||||
if [ ${BUILD_SYS} != ${HOST_SYS} ]; then
|
||||
SYS=${MACHINE}
|
||||
else
|
||||
SYS=${HOST_SYS}
|
||||
fi
|
||||
STAGING_INCDIR=${STAGING_INCDIR} \
|
||||
STAGING_LIBDIR=${STAGING_LIBDIR} \
|
||||
PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR} \
|
||||
BUILD_SYS=${BUILD_SYS} HOST_SYS=${SYS} \
|
||||
${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
|
||||
bbfatal "${PYTHON_PN} setup.py install execution failed."
|
||||
|
||||
# support filenames with *spaces*
|
||||
find ${D} -name "*.py" -print0 | while read -d $'\0' i ; do \
|
||||
sed -i -e s:${D}::g "$i"
|
||||
done
|
||||
|
||||
if test -e ${D}${bindir} ; then
|
||||
for i in ${D}${bindir}/* ; do \
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN}:${bindir}/env\ ${PYTHON_PN}:g $i
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
|
||||
done
|
||||
fi
|
||||
|
||||
if test -e ${D}${sbindir}; then
|
||||
for i in ${D}${sbindir}/* ; do \
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}/python-${PYTHON_PN}/${PYTHON_PN}:${bindir}/env\ ${PYTHON_PN}:g $i
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
|
||||
done
|
||||
fi
|
||||
|
||||
rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth
|
||||
|
||||
#
|
||||
# FIXME: Bandaid against wrong datadir computation
|
||||
#
|
||||
if test -e ${D}${datadir}/share; then
|
||||
mv -f ${D}${datadir}/share/* ${D}${datadir}/
|
||||
rmdir ${D}${datadir}/share
|
||||
fi
|
||||
}
|
||||
|
||||
EXPORT_FUNCTIONS do_compile do_install
|
||||
|
||||
export LDSHARED="${CCLD} -shared"
|
|
@ -1,9 +1,8 @@
|
|||
inherit distutils
|
||||
|
||||
DEPENDS += "python-setuptools-native"
|
||||
DEPENDS += "python-distribute-native"
|
||||
|
||||
DISTUTILS_INSTALL_ARGS = "--root=${D} \
|
||||
--single-version-externally-managed \
|
||||
--prefix=${prefix} \
|
||||
--install-lib=${PYTHON_SITEPACKAGES_DIR} \
|
||||
--install-data=${datadir}"
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
inherit distutils3
|
||||
|
||||
DEPENDS += "python3-distribute-native"
|
||||
|
||||
DISTUTILS_INSTALL_ARGS = "--root=${D} \
|
||||
--prefix=${prefix} \
|
||||
--install-lib=${PYTHON_SITEPACKAGES_DIR} \
|
||||
--install-data=${datadir}"
|
Loading…
Reference in New Issue