From 9ead8e762e977d41b0107553b4827f9a7edc252f Mon Sep 17 00:00:00 2001 From: Konrad Weihmann Date: Wed, 2 Mar 2022 10:18:22 +0100 Subject: pip_install_wheel: improve wheel handling - replace python3 prefix when guessing the wheel name as there are still plenty of recipes out there that do use python3 prefixes - remove all previously generated wheels matching the glob to avoid installing any outdated blob via cleandirs in setuptools3 class. Unfortunetaly proposed dist-dir or bdist-dir are not respected by setuptools, likely due because they are overridable by the setup script - don't use PV in glob, as PV doesn't necessarily align with the version used inside of the setuptools configuration. this will avoid having the user set PYPA_WHEEL in a lot of recipes - respect SETUPTOOLS_SETUP_PATH in PIP_INSTALL_DIST_PATH and use B as a fallback only (in case this class is inherited without setuptools3 class being there as well). recipes like python3-smbus run in a subfolder of the workspace and were failing in before this adjustment (From OE-Core rev: 6f2d85a7b7d94101f2ce67115166fa86c185650f) Signed-off-by: Konrad Weihmann Signed-off-by: Richard Purdie --- meta/classes/pip_install_wheel.bbclass | 8 +++++--- meta/classes/setuptools3.bbclass | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/meta/classes/pip_install_wheel.bbclass b/meta/classes/pip_install_wheel.bbclass index 5b7e5cd706..3beff685bb 100644 --- a/meta/classes/pip_install_wheel.bbclass +++ b/meta/classes/pip_install_wheel.bbclass @@ -1,12 +1,14 @@ DEPENDS:append = " python3-pip-native" def guess_pip_install_package_name(d): + import re '''https://www.python.org/dev/peps/pep-0491/#escaping-and-unicode''' - return (d.getVar('PYPI_PACKAGE') or d.getVar('BPN')).replace('-', '_') + name = d.getVar('PYPI_PACKAGE') or re.sub(r"^python3-", "", d.getVar('BPN')) + return name.replace('-', '_') PIP_INSTALL_PACKAGE ?= "${@guess_pip_install_package_name(d)}" -PIP_INSTALL_DIST_PATH ?= "${B}/dist" -PYPA_WHEEL ??= "${PIP_INSTALL_DIST_PATH}/${PIP_INSTALL_PACKAGE}-${PV}-*.whl" +PIP_INSTALL_DIST_PATH ?= "${@d.getVar('SETUPTOOLS_SETUP_PATH') or d.getVar('B')}/dist" +PYPA_WHEEL ??= "${PIP_INSTALL_DIST_PATH}/${PIP_INSTALL_PACKAGE}-*-*.whl" PIP_INSTALL_ARGS ?= "\ -vvvv \ diff --git a/meta/classes/setuptools3.bbclass b/meta/classes/setuptools3.bbclass index 12561340b0..564996c556 100644 --- a/meta/classes/setuptools3.bbclass +++ b/meta/classes/setuptools3.bbclass @@ -28,6 +28,7 @@ setuptools3_do_compile() { bbfatal_log "'${PYTHON_PN} setup.py bdist_wheel ${SETUPTOOLS_BUILD_ARGS}' execution failed." } setuptools3_do_compile[vardepsexclude] = "MACHINE" +do_compile[cleandirs] += "${SETUPTOOLS_SETUP_PATH}/dist" setuptools3_do_install() { cd ${SETUPTOOLS_SETUP_PATH} -- cgit v1.2.3-54-g00ecf