From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
qemu-block@nongnu.org, "Cleber Rosa" <crosa@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Michael Roth" <michael.roth@amd.com>,
"Hanna Reitz" <hreitz@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Kevin Wolf" <kwolf@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"John Snow" <jsnow@redhat.com>
Subject: [PATCH 13/22] mtest2make: cleanup mtest-suites variables
Date: Mon, 17 Nov 2025 13:51:21 -0500 [thread overview]
Message-ID: <20251117185131.953681-14-jsnow@redhat.com> (raw)
In-Reply-To: <20251117185131.953681-1-jsnow@redhat.com>
From: Paolo Bonzini <pbonzini@redhat.com>
Remove the "--suite" argument from the .*.mtest-suites variables, and
add it only when actually computing the arguments to "meson test".
This makes it possible to look at the set of suites to set ninja-cmd-goals,
instead of doing it via many different .ninja-goals.* variables.
As a bonus, this removes code duplication between emit_suite_deps
and its caller emit_suite. Since emit_suite_deps would now be one or
two lines of code, integrate it into emit_suite directly.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: John Snow <jsnow@redhat.com>
---
Makefile | 4 +++-
scripts/mtest2make.py | 33 +++++++++++++--------------------
2 files changed, 16 insertions(+), 21 deletions(-)
diff --git a/Makefile b/Makefile
index 74c2da20372..9fb55dcf330 100644
--- a/Makefile
+++ b/Makefile
@@ -96,6 +96,8 @@ meson.stamp: config-host.mak
# 3. ensure meson-generated build files are up-to-date
+ninja-cmd-goals =
+
ifneq ($(NINJA),)
Makefile.ninja: build.ninja
$(quiet-@){ \
@@ -150,7 +152,7 @@ NINJAFLAGS = \
$(or $(filter -l% -j%, $(MAKEFLAGS)), \
$(if $(filter --jobserver-auth=%, $(MAKEFLAGS)),, -j1))) \
-d keepdepfile
-ninja-cmd-goals = $(or $(MAKECMDGOALS), all)
+ninja-cmd-goals += $(or $(MAKECMDGOALS), all)
ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g))
makefile-targets := build.ninja ctags TAGS cscope dist clean
diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py
index 2ef375fc6fb..af4ee56de54 100644
--- a/scripts/mtest2make.py
+++ b/scripts/mtest2make.py
@@ -20,12 +20,12 @@ def names(self, base):
return [base if speed == 'quick' else f'{base}-{speed}' for speed in self.speeds]
-print('''
+print(r'''
SPEED = quick
-.speed.quick = $(foreach s,$(sort $(filter-out %-slow %-thorough, $1)), --suite $s)
-.speed.slow = $(foreach s,$(sort $(filter-out %-thorough, $1)), --suite $s)
-.speed.thorough = $(foreach s,$(sort $1), --suite $s)
+.speed.quick = $(sort $(filter-out %-slow %-thorough, $1))
+.speed.slow = $(sort $(filter-out %-thorough, $1))
+.speed.thorough = $(sort $1)
TIMEOUT_MULTIPLIER ?= 1
.mtestargs = --no-rebuild -t $(TIMEOUT_MULTIPLIER)
@@ -34,8 +34,10 @@ def names(self, base):
endif
.mtestargs += $(subst -j,--num-processes , $(filter-out -j, $(lastword -j1 $(filter -j%, $(MAKEFLAGS)))))
-.check.mtestargs = $(MTESTARGS) $(.mtestargs) $(if $(V),--verbose,--print-errorlogs)
-.bench.mtestargs = $(MTESTARGS) $(.mtestargs) --benchmark --verbose''')
+.check.mtestargs = $(MTESTARGS) $(.mtestargs) $(if $(V),--verbose,--print-errorlogs) \
+ $(foreach s, $(sort $(.check.mtest-suites)), --suite $s)
+.bench.mtestargs = $(MTESTARGS) $(.mtestargs) --benchmark --verbose \
+ $(foreach s, $(sort $(.bench.mtest-suites)), --suite $s)''')
introspect = json.load(sys.stdin)
@@ -72,29 +74,20 @@ def emit_prolog(suites, prefix):
print(f'all-{prefix}-targets = {all_targets}')
print(f'all-{prefix}-xml = {all_xml}')
print(f'.PHONY: {prefix} do-meson-{prefix} {prefix}-report.junit.xml $(all-{prefix}-targets) $(all-{prefix}-xml)')
- print(f'ifeq ($(filter {prefix}, $(MAKECMDGOALS)),)')
- print(f'.{prefix}.mtestargs += $(call .speed.$(SPEED), $(.{prefix}.mtest-suites))')
- print(f'endif')
+ print(f'ninja-cmd-goals += $(foreach s, $(.{prefix}.mtest-suites), $(.{prefix}-$s.deps))')
print(f'{prefix}-build: run-ninja')
print(f'{prefix} $(all-{prefix}-targets): do-meson-{prefix}')
print(f'do-meson-{prefix}: run-ninja; $(if $(MAKE.n),,+)$(MESON) test $(.{prefix}.mtestargs)')
print(f'{prefix}-report.junit.xml $(all-{prefix}-xml): {prefix}-report%.junit.xml: run-ninja')
print(f'\t$(MAKE) {prefix}$* MTESTARGS="$(MTESTARGS) --logbase {prefix}-report$*" && ln -f meson-logs/$@ .')
-def emit_suite_deps(name, suite, prefix):
+def emit_suite(name, suite, prefix):
deps = ' '.join(suite.deps)
- targets = [f'{prefix}-{name}', f'{prefix}-report-{name}.junit.xml', f'{prefix}', f'{prefix}-report.junit.xml',
- f'{prefix}-build']
- print()
+ targets = f'{prefix}-{name} {prefix}-report-{name}.junit.xml {prefix} {prefix}-report.junit.xml {prefix}-build'
+ names = ' '.join(suite.names(name))
print(f'.{prefix}-{name}.deps = {deps}')
- for t in targets:
- print(f'.ninja-goals.{t} += $(.{prefix}-{name}.deps)')
-
-def emit_suite(name, suite, prefix):
- emit_suite_deps(name, suite, prefix)
- targets = f'{prefix}-{name} {prefix}-report-{name}.junit.xml {prefix} {prefix}-report.junit.xml'
print(f'ifneq ($(filter {targets}, $(MAKECMDGOALS)),)')
- print(f'.{prefix}.mtest-suites += ' + ' '.join(suite.names(name)))
+ print(f".{prefix}.mtest-suites += $(call .speed.$(SPEED), {names})")
print(f'endif')
targets = {t['id']: [os.path.relpath(f) for f in t['filename']]
--
2.51.1
next prev parent reply other threads:[~2025-11-17 18:55 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-17 18:51 [PATCH 00/22] python: drop qemu.qmp from qemu.git tree John Snow
2025-11-17 18:51 ` [PATCH 01/22] python/mkvenv: ensure HAVE_LIB variables are actually constants John Snow
2025-11-18 7:19 ` Thomas Huth
2025-11-17 18:51 ` [PATCH 02/22] python/qapi: add an ignore for Pylint 4.x John Snow
2025-11-18 7:28 ` Thomas Huth
2025-11-17 18:51 ` [PATCH 03/22] python/qapi: delint import statements John Snow
2025-11-18 7:28 ` Thomas Huth
2025-11-17 18:51 ` [PATCH 04/22] python/mkvenv: create timestamp file for each group "ensured" John Snow
2025-11-17 18:51 ` [PATCH 05/22] python/mkvenv: bump 'qemu.qmp' dependency for testdeps John Snow
2025-11-19 9:19 ` Thomas Huth
2025-11-19 21:10 ` John Snow
2025-11-17 18:51 ` [PATCH 06/22] python/mkvenv: rename 'testdeps' to 'functests' John Snow
2025-11-18 10:01 ` Thomas Huth
2025-11-18 18:22 ` John Snow
2025-11-17 18:51 ` [PATCH 07/22] python/mkvenv: add "checktests" dependency group John Snow
2025-11-18 10:01 ` Thomas Huth
2025-11-17 18:51 ` [PATCH 08/22] meson, mkvenv: add checktests and functests custom targets John Snow
2025-11-17 18:51 ` [PATCH 09/22] tests/iotests: Use configured python to run GitLab iotests John Snow
2025-11-18 7:17 ` Thomas Huth
2025-11-18 18:10 ` John Snow
2025-11-17 18:51 ` [PATCH 10/22] tests/iotests: use "make check-venv" to prepare for running iotests John Snow
2025-11-18 9:58 ` Thomas Huth
2025-11-17 18:51 ` [PATCH 11/22] python: add vendored qemu.qmp package John Snow
2025-11-19 9:29 ` Thomas Huth
2025-11-19 21:16 ` John Snow
2025-11-17 18:51 ` [PATCH 12/22] meson, mkvenv: make iotests depend on checktests group John Snow
2025-11-17 18:51 ` John Snow [this message]
2025-11-21 10:24 ` [PATCH 13/22] mtest2make: cleanup mtest-suites variables Paolo Bonzini
2025-11-17 18:51 ` [PATCH 14/22] mtest2make: add dependencies to the "speed-qualified" suite John Snow
2025-11-17 18:51 ` [PATCH 15/22] mtest2make: do not repeat the same speed over and over John Snow
2025-11-17 18:51 ` [PATCH 16/22] meson, mkvenv: make functional tests depend on functests group John Snow
2025-11-17 18:51 ` [PATCH 17/22] tests: forcibly run 'make check-venv' for crash tests John Snow
2025-11-17 19:06 ` Daniel P. Berrangé
2025-11-17 20:47 ` Paolo Bonzini
2025-11-18 21:50 ` John Snow
2025-11-19 8:05 ` Paolo Bonzini
2025-11-19 14:15 ` Thomas Huth
2025-11-19 23:03 ` John Snow
2025-11-17 18:51 ` [PATCH 18/22] python/mkvenv: add mechanism to install local package(s) John Snow
2025-11-17 18:51 ` [PATCH 19/22] mkvenv: add --no-build-isolation flag John Snow
2025-11-17 18:51 ` [PATCH 20/22] meson, mkvenv: add qemu.git/python/qemu package to pythondeps.toml John Snow
2025-11-17 18:51 ` [PATCH 21/22] tests/Makefile: replace old "check-venv" target with meson target John Snow
2025-11-17 18:51 ` [PATCH 22/22] python: delete qemu.qmp John Snow
2025-11-19 9:27 ` Thomas Huth
2025-11-19 21:14 ` John Snow
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251117185131.953681-14-jsnow@redhat.com \
--to=jsnow@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=crosa@redhat.com \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).