[PATCH v3 03/15] python/mkvenv: add 'checktests' and 'functests' dependency groups

John Snow posted 15 patches 1 week, 2 days ago
Maintainers: "Alex Bennée" <alex.bennee@linaro.org>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Thomas Huth <thuth@redhat.com>, Ed Maste <emaste@freebsd.org>, Li-Wen Hsu <lwhsu@freebsd.org>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>
[PATCH v3 03/15] python/mkvenv: add 'checktests' and 'functests' dependency groups
Posted by John Snow 1 week, 2 days ago
'checktests' contains depedencies *required* to run "make check", and as
such, we promise that these dependencies can be sourced from the user's
distribution repository or from vendored packages so that "make check"
can be executed offline in an isolated build environment.

In contrast, pygdbmi is only needed for functional tests and not tests
in general; we do not make the same offline/isolated guarantees for
functional tests, and this dependency group is allowed to fetch
dependencies from PyPI at runtime.

For the time being, Amend the "check-venv" target to install both
dependency groups, to avoid a duplicate dependency between them.

Signed-off-by: John Snow <jsnow@redhat.com>
---
 pythondeps.toml        | 10 +++++++++-
 tests/Makefile.include |  2 +-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/pythondeps.toml b/pythondeps.toml
index 1657953ff65..14ceb4e7787 100644
--- a/pythondeps.toml
+++ b/pythondeps.toml
@@ -31,6 +31,14 @@ meson = { accepted = ">=1.9.0", installed = "1.9.0", canary = "meson" }
 sphinx = { accepted = ">=3.4.3", installed = "6.2.1", canary = "sphinx-build" }
 sphinx_rtd_theme = { accepted = ">=0.5", installed = "1.2.2" }
 
-[testdeps]
+# This test group is for dependencies required to run "make check"
+# successfully, and should only include depedencies that can be
+# guaranteed via configure from system packages, or python packages we
+# vendor.
+[checktests]
 "qemu.qmp" = { accepted = ">=0.0.5", installed = "0.0.5" }
+
+# This test group is for functional tests, and can include dependencies
+# fetched from PyPI.
+[functests]
 pygdbmi = { accepted = ">=0.11.0.0", installed = "0.11.0.0" }
diff --git a/tests/Makefile.include b/tests/Makefile.include
index d4dfbf3716d..40b114bd158 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -98,7 +98,7 @@ quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \
 
 $(TESTS_VENV_TOKEN): $(SRC_PATH)/pythondeps.toml
 	$(call quiet-venv-pip,install -e "$(SRC_PATH)/python/")
-	$(MKVENV_ENSUREGROUP) $< testdeps
+	$(MKVENV_ENSUREGROUP) $< checktests functests
 	$(call quiet-command, touch $@)
 
 check-venv: $(TESTS_VENV_TOKEN)
-- 
2.51.1
Re: [PATCH v3 03/15] python/mkvenv: add 'checktests' and 'functests' dependency groups
Posted by Thomas Huth 1 week, 1 day ago
On 05/12/2025 07.00, John Snow wrote:
> 'checktests' contains depedencies *required* to run "make check", and as
> such, we promise that these dependencies can be sourced from the user's
> distribution repository or from vendored packages so that "make check"
> can be executed offline in an isolated build environment.
> 
> In contrast, pygdbmi is only needed for functional tests and not tests
> in general; we do not make the same offline/isolated guarantees for
> functional tests, and this dependency group is allowed to fetch
> dependencies from PyPI at runtime.
> 
> For the time being, Amend the "check-venv" target to install both
> dependency groups, to avoid a duplicate dependency between them.
> 
> Signed-off-by: John Snow <jsnow@redhat.com>
> ---
>   pythondeps.toml        | 10 +++++++++-
>   tests/Makefile.include |  2 +-
>   2 files changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/pythondeps.toml b/pythondeps.toml
> index 1657953ff65..14ceb4e7787 100644
> --- a/pythondeps.toml
> +++ b/pythondeps.toml
> @@ -31,6 +31,14 @@ meson = { accepted = ">=1.9.0", installed = "1.9.0", canary = "meson" }
>   sphinx = { accepted = ">=3.4.3", installed = "6.2.1", canary = "sphinx-build" }
>   sphinx_rtd_theme = { accepted = ">=0.5", installed = "1.2.2" }
>   
> -[testdeps]
> +# This test group is for dependencies required to run "make check"
> +# successfully, and should only include depedencies that can be
> +# guaranteed via configure from system packages, or python packages we
> +# vendor.
> +[checktests]
>   "qemu.qmp" = { accepted = ">=0.0.5", installed = "0.0.5" }
> +
> +# This test group is for functional tests, and can include dependencies
> +# fetched from PyPI.
> +[functests]
>   pygdbmi = { accepted = ">=0.11.0.0", installed = "0.11.0.0" }
> diff --git a/tests/Makefile.include b/tests/Makefile.include
> index d4dfbf3716d..40b114bd158 100644
> --- a/tests/Makefile.include
> +++ b/tests/Makefile.include
> @@ -98,7 +98,7 @@ quiet-venv-pip = $(quiet-@)$(call quiet-command-run, \
>   
>   $(TESTS_VENV_TOKEN): $(SRC_PATH)/pythondeps.toml
>   	$(call quiet-venv-pip,install -e "$(SRC_PATH)/python/")
> -	$(MKVENV_ENSUREGROUP) $< testdeps
> +	$(MKVENV_ENSUREGROUP) $< checktests functests
>   	$(call quiet-command, touch $@)
>   
>   check-venv: $(TESTS_VENV_TOKEN)

Reviewed-by: Thomas Huth <thuth@redhat.com>