瀏覽代碼

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>
James Hilliard 9 月之前
父節點
當前提交
1459c0a6f0
共有 4 個文件被更改,包括 41 次插入12 次删除
  1. 3 3
      docs/manual/adding-packages-directory.adoc
  2. 7 7
      docs/manual/adding-packages-python.adoc
  3. 29 2
      package/pkg-python.mk
  4. 2 0
      utils/scanpypi

+ 3 - 3
docs/manual/adding-packages-directory.adoc

@@ -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

+ 7 - 7
docs/manual/adding-packages-python.adoc

@@ -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

+ 29 - 2
package/pkg-python.mk

@@ -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)

+ 2 - 0
utils/scanpypi

@@ -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: