# This class will build a wheel in do_compile, and use pypa/installer to install
# it in do_install.
-DEPENDS:append = " python3-installer-native"
+DEPENDS:append = " python3-picobuild-native python3-installer-native"
# Where to execute the build process from
PEP517_SOURCE_PATH ?= "${S}"
-# The PEP517 build API entry point
-PEP517_BUILD_API ?= "unset"
-
# The directory where wheels will be written
PEP517_WHEEL_PATH ?= "${WORKDIR}/dist"
+PEP517_PICOBUILD_OPTS ?= ""
+
# The interpreter to use for installed scripts
PEP517_INSTALL_PYTHON = "python3"
PEP517_INSTALL_PYTHON:class-native = "nativepython3"
# When we have Python 3.11 we can parse pyproject.toml to determine the build
# API entry point directly
python_pep517_do_compile () {
- cd ${PEP517_SOURCE_PATH}
- nativepython3 -c "import ${PEP517_BUILD_API} as api; api.build_wheel('${PEP517_WHEEL_PATH}')"
+ nativepython3 -m picobuild --source ${PEP517_SOURCE_PATH} --dest ${PEP517_WHEEL_PATH} --wheel ${PEP517_PICOBUILD_OPTS}
}
do_compile[cleandirs] += "${PEP517_WHEEL_PATH}"
inherit pypi python_flit_core
# Need to install by hand as there's a dependency loop
-DEPENDS:remove:class-native = " python3-installer-native"
+DEPENDS:remove:class-native = " python3-picobuild-native python3-installer-native"
DEPENDS:append:class-native = " unzip-native"
# We need the full flit tarball
inherit pypi python_flit_core
-# Bootstrap the native install by installing with ourself
-DEPENDS:remove:class-native = "python3-installer-native"
+# Bootstrap the native build
+DEPENDS:remove:class-native = "python3-picobuild-native python3-installer-native"
INSTALL_WHEEL_COMPILE_BYTECODE:class-native = "--no-compile-bytecode"
+do_compile:class-native () {
+ python_flit_core_do_manual_build
+}
+
do_install:prepend:class-native() {
export PYTHONPATH="${S}/src"
}