@@ -1,12 +1,13 @@
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('-', '_')
+ return (d.getVar('PYPI_PACKAGE') or re.sub(r"^python3-", "", d.getVar('BPN')).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 \
@@ -28,6 +29,8 @@ PIP_INSTALL_PYTHON = "python3"
PIP_INSTALL_PYTHON:class-native = "nativepython3"
pip_install_wheel_do_install () {
+ # cleanup previously generated files
+ rm -f ${PYPA_WHEEL}
nativepython3 -m pip install ${PIP_INSTALL_ARGS} ${PYPA_WHEEL} ||
bbfatal_log "Failed to pip install wheel. Check the logs."
- 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 - 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 Signed-off-by: Konrad Weihmann <kweihmann@outlook.com> --- v2: fix type in python3 prefix replacement meta/classes/pip_install_wheel.bbclass | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)