mirror of
https://git.yoctoproject.org/git/poky
synced 2026-01-01 13:58:04 +00:00
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
77
meta/classes/distutils-tools.bbclass
Normal file
77
meta/classes/distutils-tools.bbclass
Normal file
|
|
@ -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"
|
||||
5
meta/classes/distutils3-base.bbclass
Normal file
5
meta/classes/distutils3-base.bbclass
Normal file
|
|
@ -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
|
||||
|
||||
3
meta/classes/distutils3-native-base.bbclass
Normal file
3
meta/classes/distutils3-native-base.bbclass
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
PYTHON_BASEVERSION = "3.3"
|
||||
|
||||
inherit distutils-native-base
|
||||
98
meta/classes/distutils3.bbclass
Normal file
98
meta/classes/distutils3.bbclass
Normal file
|
|
@ -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}"
|
||||
|
|
|
|||
8
meta/classes/setuptools3.bbclass
Normal file
8
meta/classes/setuptools3.bbclass
Normal file
|
|
@ -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
Block a user