package/pkg-python.mk: add hatch setup type

As we have many python packages using the hatch(hatchling) build
system we should add a setup type for it so that we don't have to
manually specify the host-python-hatchling dependency.

Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
James Hilliard 2024-10-08 16:27:24 -06:00 committed by Thomas Petazzoni
parent 7e739d49b2
commit 1459c0a6f0
4 changed files with 41 additions and 12 deletions

View File

@ -429,9 +429,9 @@ different way, using different infrastructures:
and xref:cmake-package-reference[reference].
* *Makefiles for Python modules*: We have a dedicated infrastructure
for Python modules that use the +flit+, +pep517+, +setuptools+,
+setuptools-rust+ or +maturin+ mechanisms. We cover them through a
xref:python-package-tutorial[tutorial] and a
for Python modules that use the +flit+, +hatch+, +pep517+,
+setuptools+, +setuptools-rust+ or +maturin+ mechanisms. We cover
them through a xref:python-package-tutorial[tutorial] and a
xref:python-package-reference[reference].
* *Makefiles for Lua modules*: We have a dedicated infrastructure for

View File

@ -51,9 +51,9 @@ On line 13, we declare our dependencies, so that they are built
before the build process of our package starts.
On line 14, we declare the specific Python build system being used. In
this case the +setuptools+ Python build system is used. The five
supported ones are +flit+, +pep517+, +setuptools+, +setuptools-rust+
and +maturin+.
this case the +setuptools+ Python build system is used. The six
supported ones are +flit+, +hatch+, +pep517+, +setuptools+,
+setuptools-rust+ and +maturin+.
Finally, on line 16, we invoke the +python-package+ macro that
generates all the Makefile rules that actually allow the package to be
@ -96,10 +96,10 @@ Note that:
One variable specific to the Python infrastructure is mandatory:
* +PYTHON_FOO_SETUP_TYPE+, to define which Python build system is used
by the package. The five supported values are +flit+, +pep517+ and
+setuptools+, +setuptools-rust+ and +maturin+. If you don't know
which one is used in your package, look at the +setup.py+ or
+pyproject.toml+ file in your package source code, and see whether
by the package. The five supported values are +flit+, +hatch+,
+pep517+ and +setuptools+, +setuptools-rust+ and +maturin+. If you
don't know which one is used in your package, look at the +setup.py+
or +pyproject.toml+ file in your package source code, and see whether
it imports things from the +flit+ module or the +setuptools+
module. If the package is using a +pyproject.toml+ file without any
build-system requires and with a local in-tree backend-path one

View File

@ -200,6 +200,33 @@ HOST_PKG_PYTHON_FLIT_BOOTSTRAP_BUILD_CMD = \
HOST_PKG_PYTHON_FLIT_BOOTSTRAP_INSTALL_CMD = \
$(HOST_PKG_PYTHON_PEP517_INSTALL_CMD)
# Target hatch packages
PKG_PYTHON_HATCH_ENV = \
$(PKG_PYTHON_PEP517_ENV)
PKG_PYTHON_HATCH_BUILD_CMD = \
$(PKG_PYTHON_PEP517_BUILD_CMD)
PKG_PYTHON_HATCH_INSTALL_TARGET_CMD = \
$(PKG_PYTHON_PEP517_INSTALL_TARGET_CMD)
PKG_PYTHON_HATCH_INSTALL_STAGING_CMD = \
$(PKG_PYTHON_PEP517_INSTALL_STAGING_CMD)
PKG_PYTHON_HATCH_DEPENDENCIES = \
$(PKG_PYTHON_PEP517_DEPENDENCIES) \
host-python-hatchling
# Host hatch packages
HOST_PKG_PYTHON_HATCH_ENV = \
$(HOST_PKG_PYTHON_PEP517_ENV)
HOST_PKG_PYTHON_HATCH_BUILD_CMD = \
$(HOST_PKG_PYTHON_PEP517_BUILD_CMD)
HOST_PKG_PYTHON_HATCH_INSTALL_CMD = \
$(HOST_PKG_PYTHON_PEP517_INSTALL_CMD)
# Target maturin packages
PKG_PYTHON_MATURIN_ENV = \
$(PKG_PYTHON_PEP517_ENV) \
@ -257,8 +284,8 @@ endif
$(2)_SETUP_TYPE_UPPER = $$(call UPPERCASE,$$($(2)_SETUP_TYPE))
ifneq ($$(filter-out setuptools setuptools-rust pep517 flit flit-bootstrap maturin,$$($(2)_SETUP_TYPE)),)
$$(error "Invalid $(2)_SETUP_TYPE. Valid options are 'maturin', 'setuptools', 'setuptools-rust', 'pep517' or 'flit'.")
ifneq ($$(filter-out setuptools setuptools-rust pep517 flit flit-bootstrap hatch maturin,$$($(2)_SETUP_TYPE)),)
$$(error "Invalid $(2)_SETUP_TYPE. Valid options are 'maturin', 'setuptools', 'setuptools-rust', 'pep517', 'flit' or 'hatch'.")
endif
ifeq ($(4)-$$($(2)_SETUP_TYPE),target-flit-bootstrap)
$$(error flit-bootstrap setup type only supported for host packages)

View File

@ -417,6 +417,8 @@ class BuildrootPackage():
self.build_backend = build_backend
if build_backend == 'flit_core.buildapi':
self.setup_metadata['method'] = 'flit'
elif build_backend == 'hatchling.build':
self.setup_metadata['method'] = 'hatch'
elif build_backend == 'setuptools.build_meta':
self.setup_metadata['method'] = 'setuptools'
else: