All of lore.kernel.org
 help / color / mirror / Atom feed
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



  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.