[v2] meta: rename pip_install_wheel.bbclass to python_pep517.bbclass

Message ID 20220311120302.3020992-1-ross.burton@arm.com
State Accepted, archived
Commit 3bdf64b97facce9706cc579bdbc9a80e0d48428f
Headers show
Series [v2] meta: rename pip_install_wheel.bbclass to python_pep517.bbclass | expand

Commit Message

Ross Burton March 11, 2022, 12:03 p.m. UTC
pip_install_wheel shouldn't restricted to just using Pip to install
wheels (the installer module is simplier and likely a better option),
and in the future may be extended to also provide do_compile() using
the build module.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta/classes/flit_core.bbclass                |  6 ++---
 ...ll_wheel.bbclass => python_pep517.bbclass} | 27 ++++++++++---------
 meta/classes/setuptools3.bbclass              |  8 +++---
 meta/classes/setuptools_build_meta.bbclass    |  6 ++---
 .../python/python3-flit-core_3.7.1.bb         |  2 +-
 .../python/python3-pip_22.0.3.bb              |  2 +-
 .../python/python3-setuptools_59.5.0.bb       |  2 +-
 .../python/python3-wheel_0.37.1.bb            |  2 +-
 8 files changed, 29 insertions(+), 26 deletions(-)
 rename meta/classes/{pip_install_wheel.bbclass => python_pep517.bbclass} (56%)

Patch

diff --git a/meta/classes/flit_core.bbclass b/meta/classes/flit_core.bbclass
index ce162bb75b..1ef8ce9429 100644
--- a/meta/classes/flit_core.bbclass
+++ b/meta/classes/flit_core.bbclass
@@ -1,4 +1,4 @@ 
-inherit pip_install_wheel python3native python3-dir setuptools3-base
+inherit python_pep517 python3native python3-dir setuptools3-base
 
 DEPENDS += "python3 python3-flit-core-native"
 
@@ -12,8 +12,8 @@  PEP517_SOURCE_PATH ?= "${S}"
 # TODO: ideally this uses pypa/build
 flit_core_do_compile () {
     cd ${PEP517_SOURCE_PATH}
-    nativepython3 -mflit_core.wheel --outdir ${PIP_INSTALL_DIST_PATH}
+    nativepython3 -mflit_core.wheel --outdir ${PEP517_WHEEL_PATH}
 }
-do_compile[cleandirs] += "${PIP_INSTALL_DIST_PATH}"
+do_compile[cleandirs] += "${PEP517_WHEEL_PATH}"
 
 EXPORT_FUNCTIONS do_configure do_compile
diff --git a/meta/classes/pip_install_wheel.bbclass b/meta/classes/python_pep517.bbclass
similarity index 56%
rename from meta/classes/pip_install_wheel.bbclass
rename to meta/classes/python_pep517.bbclass
index 29cd544aa3..76660e70f8 100644
--- a/meta/classes/pip_install_wheel.bbclass
+++ b/meta/classes/python_pep517.bbclass
@@ -1,9 +1,12 @@ 
+# Common infrastructure for Python packages that use PEP-517 compliant packaging.
+# https://www.python.org/dev/peps/pep-0517/
+
 DEPENDS:append = " python3-pip-native"
 
 # The directory where wheels should be written too. Build classes
 # will ideally [cleandirs] this but we don't do that here in case
 # a recipe wants to install prebuilt wheels.
-PIP_INSTALL_DIST_PATH ?= "${WORKDIR}/dist"
+PEP517_WHEEL_PATH ?= "${WORKDIR}/dist"
 
 PIP_INSTALL_ARGS = "\
     -vvvv \
@@ -15,24 +18,24 @@  PIP_INSTALL_ARGS = "\
     --prefix=${prefix} \
 "
 
-PIP_INSTALL_PYTHON = "python3"
-PIP_INSTALL_PYTHON:class-native = "nativepython3"
+PEP517_INSTALL_PYTHON = "python3"
+PEP517_INSTALL_PYTHON:class-native = "nativepython3"
 
-pip_install_wheel_do_install () {
-    COUNT=$(find ${PIP_INSTALL_DIST_PATH} -name '*.whl' | wc -l)
+python_pep517_do_install () {
+    COUNT=$(find ${PEP517_WHEEL_PATH} -name '*.whl' | wc -l)
     if test $COUNT -eq 0; then
-        bbfatal No wheels found in ${PIP_INSTALL_DIST_PATH}
+        bbfatal No wheels found in ${PEP517_WHEEL_PATH}
     elif test $COUNT -gt 1; then
-        bbfatal More than one wheel found in ${PIP_INSTALL_DIST_PATH}, this should not happen
+        bbfatal More than one wheel found in ${PEP517_WHEEL_PATH}, this should not happen
     fi
 
-    nativepython3 -m pip install ${PIP_INSTALL_ARGS} ${PIP_INSTALL_DIST_PATH}/*.whl
+    nativepython3 -m pip install ${PIP_INSTALL_ARGS} ${PEP517_WHEEL_PATH}/*.whl
 
     cd ${D}
     for i in ${D}${bindir}/* ${D}${sbindir}/*; do
         if [ -f "$i" ]; then
-            sed -i -e "1s,#!.*nativepython3,#!${USRBINPATH}/env ${PIP_INSTALL_PYTHON}," $i
-            sed -i -e "s:${PYTHON}:${USRBINPATH}/env\ ${PIP_INSTALL_PYTHON}:g" $i
+            sed -i -e "1s,#!.*nativepython3,#!${USRBINPATH}/env ${PEP517_INSTALL_PYTHON}," $i
+            sed -i -e "s:${PYTHON}:${USRBINPATH}/env\ ${PEP517_INSTALL_PYTHON}:g" $i
             sed -i -e "s:${STAGING_BINDIR_NATIVE}:${bindir}:g" $i
             # Not everything we find may be Python, so ignore errors
             nativepython3 -mpy_compile $(realpath --relative-to=${D} $i) || true
@@ -41,9 +44,9 @@  pip_install_wheel_do_install () {
 }
 
 # A manual do_install that just uses unzip for bootstrapping purposes. Callers should DEPEND on unzip-native.
-pip_install_wheel_do_bootstrap_install () {
+python_pep517_do_bootstrap_install () {
     install -d ${D}${PYTHON_SITEPACKAGES_DIR}
-    unzip -d ${D}${PYTHON_SITEPACKAGES_DIR} ${PIP_INSTALL_DIST_PATH}/*.whl
+    unzip -d ${D}${PYTHON_SITEPACKAGES_DIR} ${PEP517_WHEEL_PATH}/*.whl
 }
 
 EXPORT_FUNCTIONS do_install
diff --git a/meta/classes/setuptools3.bbclass b/meta/classes/setuptools3.bbclass
index dcf3561b8d..556bc801af 100644
--- a/meta/classes/setuptools3.bbclass
+++ b/meta/classes/setuptools3.bbclass
@@ -1,4 +1,4 @@ 
-inherit setuptools3-base pip_install_wheel
+inherit setuptools3-base python_pep517
 
 # bdist_wheel builds in ./dist
 #B = "${WORKDIR}/build"
@@ -17,14 +17,14 @@  setuptools3_do_compile() {
         STAGING_INCDIR=${STAGING_INCDIR} \
         STAGING_LIBDIR=${STAGING_LIBDIR} \
         ${STAGING_BINDIR_NATIVE}/${PYTHON_PN}-native/${PYTHON_PN} setup.py \
-        bdist_wheel --verbose --dist-dir ${PIP_INSTALL_DIST_PATH} ${SETUPTOOLS_BUILD_ARGS} || \
+        bdist_wheel --verbose --dist-dir ${PEP517_WHEEL_PATH} ${SETUPTOOLS_BUILD_ARGS} || \
         bbfatal_log "'${PYTHON_PN} setup.py bdist_wheel ${SETUPTOOLS_BUILD_ARGS}' execution failed."
 }
 setuptools3_do_compile[vardepsexclude] = "MACHINE"
-do_compile[cleandirs] += "${PIP_INSTALL_DIST_PATH}"
+do_compile[cleandirs] += "${PEP517_WHEEL_PATH}"
 
 setuptools3_do_install() {
-        pip_install_wheel_do_install
+        python_pep517_do_install
 }
 
 EXPORT_FUNCTIONS do_configure do_compile do_install
diff --git a/meta/classes/setuptools_build_meta.bbclass b/meta/classes/setuptools_build_meta.bbclass
index 787fbd5f36..424be85608 100644
--- a/meta/classes/setuptools_build_meta.bbclass
+++ b/meta/classes/setuptools_build_meta.bbclass
@@ -1,4 +1,4 @@ 
-inherit pip_install_wheel setuptools3-base
+inherit setuptools3-base python_pep517
 
 DEPENDS += "python3-setuptools-native python3-wheel-native"
 
@@ -12,8 +12,8 @@  setuptools_build_meta_do_configure () {
 # TODO: ideally this uses pypa/build
 setuptools_build_meta_do_compile () {
     cd ${PEP517_SOURCE_PATH}
-    nativepython3 -c "from setuptools import build_meta; build_meta.build_wheel('${PIP_INSTALL_DIST_PATH}')"
+    nativepython3 -c "from setuptools import build_meta; build_meta.build_wheel('${PEP517_WHEEL_PATH}')"
 }
-do_compile[cleandirs] += "${PIP_INSTALL_DIST_PATH}"
+do_compile[cleandirs] += "${PEP517_WHEEL_PATH}"
 
 EXPORT_FUNCTIONS do_configure do_compile
diff --git a/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb b/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb
index 1f14345d50..b12b8e42d7 100644
--- a/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb
+++ b/meta/recipes-devtools/python/python3-flit-core_3.7.1.bb
@@ -21,7 +21,7 @@  PYPI_PACKAGE = "flit"
 PEP517_SOURCE_PATH = "${S}/flit_core"
 
 do_install:class-native () {
-    pip_install_wheel_do_bootstrap_install
+    python_pep517_do_bootstrap_install
 }
 
 PACKAGES =+ "${PN}-tests"
diff --git a/meta/recipes-devtools/python/python3-pip_22.0.3.bb b/meta/recipes-devtools/python/python3-pip_22.0.3.bb
index bce3b68861..bfeeee789c 100644
--- a/meta/recipes-devtools/python/python3-pip_22.0.3.bb
+++ b/meta/recipes-devtools/python/python3-pip_22.0.3.bb
@@ -19,7 +19,7 @@  SRC_URI += "file://reproducible.patch"
 SRC_URI[sha256sum] = "f29d589df8c8ab99c060e68ad294c4a9ed896624f6368c5349d70aa581b333d0"
 
 do_install:class-native() {
-    pip_install_wheel_do_bootstrap_install
+    python_pep517_do_bootstrap_install
 
     # pip install would normally generate [console_scripts] in ${bindir}
     install -d ${D}/${bindir}
diff --git a/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
index 7cd67b85f9..d93972b9a0 100644
--- a/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
+++ b/meta/recipes-devtools/python/python3-setuptools_59.5.0.bb
@@ -22,7 +22,7 @@  DEPENDS:remove:class-native = "python3-pip-native python3-setuptools-native"
 DEPENDS:append:class-native = " unzip-native"
 
 do_install:class-native() {
-    pip_install_wheel_do_bootstrap_install
+    python_pep517_do_bootstrap_install
 }
 
 RDEPENDS:${PN} = "\
diff --git a/meta/recipes-devtools/python/python3-wheel_0.37.1.bb b/meta/recipes-devtools/python/python3-wheel_0.37.1.bb
index cf0d8191b4..a339e65824 100644
--- a/meta/recipes-devtools/python/python3-wheel_0.37.1.bb
+++ b/meta/recipes-devtools/python/python3-wheel_0.37.1.bb
@@ -13,7 +13,7 @@  SRC_URI += " file://0001-Backport-pyproject.toml-from-flit-backend-branch.patch"
 DEPENDS:remove:class-native = "python3-pip-native"
 
 do_install:class-native () {
-    pip_install_wheel_do_bootstrap_install
+    python_pep517_do_bootstrap_install
 
     # pip install would normally generate [project.scripts] in ${bindir}
     install -d ${D}/${bindir}