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

As we have many python packages using the poetry(poetry-core) build
system we should add a setup type for it so that we don't have to
manually specify the host-python-poetry-core 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-23 16:09:33 -06:00 committed by Thomas Petazzoni
parent f27fc081e8
commit 0205f4c2b8
4 changed files with 42 additions and 13 deletions

View File

@ -429,7 +429,7 @@ 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+, +hatch+, +pep517+,
for Python modules that use the +flit+, +hatch+, +pep517+, +poetry+
+setuptools+, +setuptools-rust+ or +maturin+ mechanisms. We cover
them through a xref:python-package-tutorial[tutorial] and a
xref:python-package-reference[reference].

View File

@ -51,8 +51,8 @@ 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 six
supported ones are +flit+, +hatch+, +pep517+, +setuptools+,
this case the +setuptools+ Python build system is used. The seven
supported ones are +flit+, +hatch+, +pep517+, +poetry+, +setuptools+,
+setuptools-rust+ and +maturin+.
Finally, on line 16, we invoke the +python-package+ macro that
@ -96,14 +96,14 @@ 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+, +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
should use +pep517+.
by the package. The seven supported values are +flit+, +hatch+,
+pep517+, +poetry+, +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 should use +pep517+.
A few additional variables, specific to the Python infrastructure, can
optionally be defined, depending on the package's needs. Many of them

View File

@ -258,6 +258,33 @@ HOST_PKG_PYTHON_MATURIN_BUILD_CMD = \
HOST_PKG_PYTHON_MATURIN_INSTALL_CMD = \
$(HOST_PKG_PYTHON_PEP517_INSTALL_CMD)
# Target poetry packages
PKG_PYTHON_POETRY_ENV = \
$(PKG_PYTHON_PEP517_ENV)
PKG_PYTHON_POETRY_BUILD_CMD = \
$(PKG_PYTHON_PEP517_BUILD_CMD)
PKG_PYTHON_POETRY_INSTALL_TARGET_CMD = \
$(PKG_PYTHON_PEP517_INSTALL_TARGET_CMD)
PKG_PYTHON_POETRY_INSTALL_STAGING_CMD = \
$(PKG_PYTHON_PEP517_INSTALL_STAGING_CMD)
PKG_PYTHON_POETRY_DEPENDENCIES = \
$(PKG_PYTHON_PEP517_DEPENDENCIES) \
host-python-poetry-core
# Host poetry packages
HOST_PKG_PYTHON_POETRY_ENV = \
$(HOST_PKG_PYTHON_PEP517_ENV)
HOST_PKG_PYTHON_POETRY_BUILD_CMD = \
$(HOST_PKG_PYTHON_PEP517_BUILD_CMD)
HOST_PKG_PYTHON_POETRY_INSTALL_CMD = \
$(HOST_PKG_PYTHON_PEP517_INSTALL_CMD)
################################################################################
# inner-python-package -- defines how the configuration, compilation
# and installation of a Python package should be done, implements a
@ -284,8 +311,8 @@ endif
$(2)_SETUP_TYPE_UPPER = $$(call UPPERCASE,$$($(2)_SETUP_TYPE))
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'.")
ifneq ($$(filter-out setuptools setuptools-rust pep517 flit flit-bootstrap hatch maturin poetry,$$($(2)_SETUP_TYPE)),)
$$(error "Invalid $(2)_SETUP_TYPE. Valid options are 'maturin', 'setuptools', 'setuptools-rust', 'pep517', 'flit', 'hatch' or 'poetry'.")
endif
ifeq ($(4)-$$($(2)_SETUP_TYPE),target-flit-bootstrap)
$$(error flit-bootstrap setup type only supported for host packages)

View File

@ -419,6 +419,8 @@ class BuildrootPackage():
self.setup_metadata['method'] = 'flit'
elif build_backend == 'hatchling.build':
self.setup_metadata['method'] = 'hatch'
elif build_backend == 'poetry.core.masonry.api':
self.setup_metadata['method'] = 'poetry'
elif build_backend == 'setuptools.build_meta':
self.setup_metadata['method'] = 'setuptools'
else: