5cf293b1f9
When using distutils for a python package based on a python-setuptools installation script that sets up a console script, the header of the console script created by setuptools points to the python-native path. The console scripts are commonly executed in the image, but not in the sysroot environment. Therefore, the header of the console scripts should point to the python interpreter in the image. Setuptools does not allow to set the path of the python interpreter via some command-line argument. Hence after the installation script ran, the distutils class replaces the path in the console script files created by the installation. (From OE-Core rev: 11229def87d048c51190b9bd275c73d1f8bf6007) Signed-off-by: Lukas Bulwahn <Lukas.Bulwahn@oss.bmw-carit.de> sgw - added \ to protect the space. Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
76 lines
2.9 KiB
Text
76 lines
2.9 KiB
Text
inherit distutils-base
|
|
|
|
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-native/python setup.py build ${DISTUTILS_BUILD_ARGS} || \
|
|
bbfatal "python 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-native/python setup.py install_headers ${DISTUTILS_STAGE_HEADERS_ARGS} || \
|
|
bbfatal "python 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-native/python setup.py install ${DISTUTILS_STAGE_ALL_ARGS} || \
|
|
bbfatal "python setup.py install (stage) execution failed."
|
|
}
|
|
|
|
distutils_do_install() {
|
|
install -d ${D}${PYTHON_SITEPACKAGES_DIR}
|
|
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-native/python setup.py install --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${DISTUTILS_INSTALL_ARGS} || \
|
|
bbfatal "python setup.py install execution failed."
|
|
|
|
for i in `find ${D} -name "*.py"` ; 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-native/python:${bindir}/env\ python: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-native/python:${bindir}/env\ python: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"
|