From patchwork Thu Jan 12 11:23:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 18067 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9E63FC61DB3 for ; Thu, 12 Jan 2023 11:23:47 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.52586.1673522622681963492 for ; Thu, 12 Jan 2023 03:23:42 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 62ED9AD7; Thu, 12 Jan 2023 03:24:24 -0800 (PST) Received: from oss-tx204.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D1CDA3F67D; Thu, 12 Jan 2023 03:23:41 -0800 (PST) From: Ross Burton To: openembedded-core@lists.openembedded.org Cc: nd@arm.com Subject: [PATCH 3/4] python_pep517: use python3-build, not picobuild Date: Thu, 12 Jan 2023 11:23:35 +0000 Message-Id: <20230112112336.2254765-3-ross.burton@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230112112336.2254765-1-ross.burton@arm.com> References: <20230112112336.2254765-1-ross.burton@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 12 Jan 2023 11:23:47 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/175793 Now that the bootstrap sequence for pypa/build is just python3-packaging, and python3-pyproject-hooks, we can use build instead of picobuild. The only change visible outside of this class is that the variable PEP517_PICOBUILD_OPTS is now PEP517_BUILD_OPTS, but I'm only aware of one recipe that used that variable. Signed-off-by: Ross Burton --- meta/classes-recipe/python_pep517.bbclass | 7 ++++--- meta/recipes-devtools/python/python3-build_0.10.0.bb | 11 ++++++++++- .../python/python3-flit-core_3.8.0.bb | 2 +- .../python/python3-installer_0.6.0.bb | 2 +- .../recipes-devtools/python/python3-packaging_22.0.bb | 7 +++++++ .../python/python3-pyproject-hooks_1.0.0.bb | 7 +++++++ 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/meta/classes-recipe/python_pep517.bbclass b/meta/classes-recipe/python_pep517.bbclass index 202dde0bc31..a1659c5f628 100644 --- a/meta/classes-recipe/python_pep517.bbclass +++ b/meta/classes-recipe/python_pep517.bbclass @@ -10,7 +10,7 @@ # This class will build a wheel in do_compile, and use pypa/installer to install # it in do_install. -DEPENDS:append = " python3-picobuild-native python3-installer-native" +DEPENDS:append = " python3-build-native python3-installer-native" # Where to execute the build process from PEP517_SOURCE_PATH ?= "${S}" @@ -18,7 +18,8 @@ PEP517_SOURCE_PATH ?= "${S}" # The directory where wheels will be written PEP517_WHEEL_PATH ?= "${WORKDIR}/dist" -PEP517_PICOBUILD_OPTS ?= "" +# Other options to pass to build +PEP517_BUILD_OPTS ?= "" # The interpreter to use for installed scripts PEP517_INSTALL_PYTHON = "python3" @@ -36,7 +37,7 @@ python_pep517_do_configure () { # When we have Python 3.11 we can parse pyproject.toml to determine the build # API entry point directly python_pep517_do_compile () { - nativepython3 -m picobuild --source ${PEP517_SOURCE_PATH} --dest ${PEP517_WHEEL_PATH} --wheel ${PEP517_PICOBUILD_OPTS} + nativepython3 -m build --no-isolation --wheel --outdir ${PEP517_WHEEL_PATH} ${PEP517_SOURCE_PATH} ${PEP517_BUILD_OPTS} } do_compile[cleandirs] += "${PEP517_WHEEL_PATH}" diff --git a/meta/recipes-devtools/python/python3-build_0.10.0.bb b/meta/recipes-devtools/python/python3-build_0.10.0.bb index bebc00a437d..770a32023d8 100644 --- a/meta/recipes-devtools/python/python3-build_0.10.0.bb +++ b/meta/recipes-devtools/python/python3-build_0.10.0.bb @@ -7,7 +7,16 @@ SRC_URI[sha256sum] = "d5b71264afdb5951d6704482aac78de887c80691c52b88a9ad195983ca inherit pypi python_flit_core -DEPENDS += "python3-packaging-native python3-pyproject-hooks-native" +DEPENDS += "python3-pyproject-hooks-native" + +DEPENDS:remove:class-native = "python3-build-native" + +# Skip dependencies as we're doing a minimal build to bootstrap +PEP517_BUILD_OPTS:class-native = "--skip-dependency-check" + +do_compile:prepend:class-native() { + export PYTHONPATH="${S}/src" +} RDEPENDS:${PN} += "python3-packaging python3-pyproject-hooks" diff --git a/meta/recipes-devtools/python/python3-flit-core_3.8.0.bb b/meta/recipes-devtools/python/python3-flit-core_3.8.0.bb index 3d815d53163..2e5b1e80695 100644 --- a/meta/recipes-devtools/python/python3-flit-core_3.8.0.bb +++ b/meta/recipes-devtools/python/python3-flit-core_3.8.0.bb @@ -13,7 +13,7 @@ SRC_URI[sha256sum] = "d0f2a8f4bd45dc794befbf5839ecc0fd3830d65a57bd52b5997542fac5 inherit pypi python_flit_core # Need to install by hand as there's a dependency loop -DEPENDS:remove:class-native = " python3-picobuild-native python3-installer-native" +DEPENDS:remove:class-native = " python3-build-native python3-installer-native" DEPENDS:append:class-native = " unzip-native" # We need the full flit tarball diff --git a/meta/recipes-devtools/python/python3-installer_0.6.0.bb b/meta/recipes-devtools/python/python3-installer_0.6.0.bb index e728e47cecb..a2130a4507a 100644 --- a/meta/recipes-devtools/python/python3-installer_0.6.0.bb +++ b/meta/recipes-devtools/python/python3-installer_0.6.0.bb @@ -13,7 +13,7 @@ SRC_URI[sha256sum] = "f3bd36cd261b440a88a1190b1becca0578fee90b4b62decc796932fdd5 inherit pypi python_flit_core # Bootstrap the native build -DEPENDS:remove:class-native = "python3-picobuild-native python3-installer-native" +DEPENDS:remove:class-native = "python3-build-native python3-installer-native" INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode" diff --git a/meta/recipes-devtools/python/python3-packaging_22.0.bb b/meta/recipes-devtools/python/python3-packaging_22.0.bb index bcf077d2c71..22f066416b7 100644 --- a/meta/recipes-devtools/python/python3-packaging_22.0.bb +++ b/meta/recipes-devtools/python/python3-packaging_22.0.bb @@ -8,3 +8,10 @@ SRC_URI[sha256sum] = "2198ec20bd4c017b8f9717e00f0c8714076fc2fd93816750ab48e2c41d inherit pypi python_flit_core BBCLASSEXTEND = "native nativesdk" + +# Bootstrap the native build +DEPENDS:remove:class-native = "python3-build-native" + +do_compile:class-native () { + python_flit_core_do_manual_build +} diff --git a/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb b/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb index 10d8225c3d5..9aca5918ec1 100644 --- a/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb +++ b/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb @@ -10,3 +10,10 @@ inherit pypi python_flit_core PYPI_PACKAGE = "pyproject_hooks" BBCLASSEXTEND = "native nativesdk" + +# Bootstrap the native build +DEPENDS:remove:class-native = "python3-build-native" + +do_compile:class-native () { + python_flit_core_do_manual_build +}