1# 2# Copyright OpenEmbedded Contributors 3# 4# SPDX-License-Identifier: MIT 5# 6 7# This class is for packages which use the deprecated setuptools behaviour, 8# specifically custom install tasks which don't work correctly with bdist_wheel. 9# This behaviour is deprecated in setuptools[1] and won't work in the future, so 10# all users of this should consider their options: pure Python modules can use a 11# modern Python tool such as build[2], or packages which are doing more (such as 12# installing init scripts) should use a fully-featured build system such as Meson. 13# 14# [1] https://setuptools.pypa.io/en/latest/history.html#id142 15# [2] https://pypi.org/project/build/ 16 17inherit setuptools3-base 18 19B = "${WORKDIR}/build" 20 21SETUPTOOLS_BUILD_ARGS ?= "" 22SETUPTOOLS_INSTALL_ARGS ?= "--root=${D} \ 23 --prefix=${prefix} \ 24 --install-lib=${PYTHON_SITEPACKAGES_DIR} \ 25 --install-data=${datadir}" 26 27SETUPTOOLS_PYTHON = "python3" 28SETUPTOOLS_PYTHON:class-native = "nativepython3" 29 30SETUPTOOLS_SETUP_PATH ?= "${S}" 31 32setuptools3_legacy_do_configure() { 33 : 34} 35 36setuptools3_legacy_do_compile() { 37 cd ${SETUPTOOLS_SETUP_PATH} 38 NO_FETCH_BUILD=1 \ 39 STAGING_INCDIR=${STAGING_INCDIR} \ 40 STAGING_LIBDIR=${STAGING_LIBDIR} \ 41 ${STAGING_BINDIR_NATIVE}/python3-native/python3 setup.py \ 42 build --build-base=${B} ${SETUPTOOLS_BUILD_ARGS} || \ 43 bbfatal_log "'python3 setup.py build ${SETUPTOOLS_BUILD_ARGS}' execution failed." 44} 45setuptools3_legacy_do_compile[vardepsexclude] = "MACHINE" 46 47setuptools3_legacy_do_install() { 48 cd ${SETUPTOOLS_SETUP_PATH} 49 install -d ${D}${PYTHON_SITEPACKAGES_DIR} 50 STAGING_INCDIR=${STAGING_INCDIR} \ 51 STAGING_LIBDIR=${STAGING_LIBDIR} \ 52 PYTHONPATH=${D}${PYTHON_SITEPACKAGES_DIR}:$PYTHONPATH \ 53 ${STAGING_BINDIR_NATIVE}/python3-native/python3 setup.py \ 54 build --build-base=${B} install --skip-build ${SETUPTOOLS_INSTALL_ARGS} || \ 55 bbfatal_log "'python3 setup.py install ${SETUPTOOLS_INSTALL_ARGS}' execution failed." 56 57 # support filenames with *spaces* 58 find ${D} -name "*.py" -exec grep -q ${D} {} \; \ 59 -exec sed -i -e s:${D}::g {} \; 60 61 for i in ${D}${bindir}/* ${D}${sbindir}/*; do 62 if [ -f "$i" ]; then 63 sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${SETUPTOOLS_PYTHON}:g $i 64 sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i 65 fi 66 done 67 68 rm -f ${D}${PYTHON_SITEPACKAGES_DIR}/easy-install.pth 69 70 # 71 # FIXME: Bandaid against wrong datadir computation 72 # 73 if [ -e ${D}${datadir}/share ]; then 74 mv -f ${D}${datadir}/share/* ${D}${datadir}/ 75 rmdir ${D}${datadir}/share 76 fi 77} 78setuptools3_legacy_do_install[vardepsexclude] = "MACHINE" 79 80EXPORT_FUNCTIONS do_configure do_compile do_install 81 82export LDSHARED="${CCLD} -shared" 83DEPENDS += "python3-setuptools-native" 84 85