* [Buildroot] [PATCH 1/1] package/pkg-python.mk: add poetry setup type
@ 2024-10-23 22:09 James Hilliard
2024-11-04 22:19 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 2+ messages in thread
From: James Hilliard @ 2024-10-23 22:09 UTC (permalink / raw)
To: buildroot; +Cc: James Hilliard, Thomas Petazzoni
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>
---
docs/manual/adding-packages-directory.adoc | 2 +-
docs/manual/adding-packages-python.adoc | 20 +++++++-------
package/pkg-python.mk | 31 ++++++++++++++++++++--
utils/scanpypi | 2 ++
4 files changed, 42 insertions(+), 13 deletions(-)
diff --git a/docs/manual/adding-packages-directory.adoc b/docs/manual/adding-packages-directory.adoc
index cb19f3bac9..348c065798 100644
--- a/docs/manual/adding-packages-directory.adoc
+++ b/docs/manual/adding-packages-directory.adoc
@@ -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].
diff --git a/docs/manual/adding-packages-python.adoc b/docs/manual/adding-packages-python.adoc
index 790e2899cf..b42c06e54c 100644
--- a/docs/manual/adding-packages-python.adoc
+++ b/docs/manual/adding-packages-python.adoc
@@ -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
diff --git a/package/pkg-python.mk b/package/pkg-python.mk
index 3c607b5277..32ace4aac1 100644
--- a/package/pkg-python.mk
+++ b/package/pkg-python.mk
@@ -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)
diff --git a/utils/scanpypi b/utils/scanpypi
index f832d5cab0..af62c01632 100755
--- a/utils/scanpypi
+++ b/utils/scanpypi
@@ -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:
--
2.34.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Buildroot] [PATCH 1/1] package/pkg-python.mk: add poetry setup type
2024-10-23 22:09 [Buildroot] [PATCH 1/1] package/pkg-python.mk: add poetry setup type James Hilliard
@ 2024-11-04 22:19 ` Thomas Petazzoni via buildroot
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-11-04 22:19 UTC (permalink / raw)
To: James Hilliard; +Cc: buildroot
On Wed, 23 Oct 2024 16:09:33 -0600
James Hilliard <james.hilliard1@gmail.com> wrote:
> 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>
> ---
> docs/manual/adding-packages-directory.adoc | 2 +-
> docs/manual/adding-packages-python.adoc | 20 +++++++-------
> package/pkg-python.mk | 31 ++++++++++++++++++++--
> utils/scanpypi | 2 ++
> 4 files changed, 42 insertions(+), 13 deletions(-)
Applied to master, thanks.
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-11-04 22:19 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-23 22:09 [Buildroot] [PATCH 1/1] package/pkg-python.mk: add poetry setup type James Hilliard
2024-11-04 22:19 ` Thomas Petazzoni via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox