Message ID | 20250521164250.135776-6-alex.bennee@linaro.org |
---|---|
State | New |
Headers | show |
Series | Maintainer updates for May (testing, plugins, virtio-gpu) - pre-PR | expand |
On 2025/05/22 1:42, Alex Bennée wrote: > The user can run a subset of the tcg tests directly, e.g.: > > make run-tcg-tests-hexagon-linux-user > > but in this case we fail if there has not been a full build to ensure > all the test-plugins are there. Fix the dependency to ensure we always > will build them before running tests. > > Signed-off-by: Alex Bennée <alex.bennee@linaro.org> > --- > tests/Makefile.include | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tests/Makefile.include b/tests/Makefile.include > index 23fb722d42..7f7f62cbf6 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -46,7 +46,7 @@ $(foreach TARGET,$(TCG_TESTS_TARGETS), \ > $(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak)) > > .PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%) > -$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak > +$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak test-plugins I don't think this is going to work. test-plugins will invoke run-ninja, which is defined as follows: run-ninja: config-host.mak ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),) +$(if $(MAKE.nq),@:,$(quiet-@)$(NINJA) $(NINJAFLAGS) \ $(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat) $(ninja-cmd-goals) should contain test-plugins, but it doesn't if I understand it correctly. > $(call quiet-command, \ > $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS), \ > "BUILD","$* guest-tests")
Akihiko Odaki <akihiko.odaki@daynix.com> writes: > On 2025/05/22 1:42, Alex Bennée wrote: >> The user can run a subset of the tcg tests directly, e.g.: >> make run-tcg-tests-hexagon-linux-user >> but in this case we fail if there has not been a full build to >> ensure >> all the test-plugins are there. Fix the dependency to ensure we always >> will build them before running tests. >> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> >> --- >> tests/Makefile.include | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> diff --git a/tests/Makefile.include b/tests/Makefile.include >> index 23fb722d42..7f7f62cbf6 100644 >> --- a/tests/Makefile.include >> +++ b/tests/Makefile.include >> @@ -46,7 +46,7 @@ $(foreach TARGET,$(TCG_TESTS_TARGETS), \ >> $(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak)) >> .PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%) >> -$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak >> +$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak test-plugins > > I don't think this is going to work. > > test-plugins will invoke run-ninja, which is defined as follows: > > run-ninja: config-host.mak > ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),) > +$(if $(MAKE.nq),@:,$(quiet-@)$(NINJA) $(NINJAFLAGS) \ > $(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat) > > $(ninja-cmd-goals) should contain test-plugins, but it doesn't if I > understand it correctly. It certainly does: ➜ rm -rf tests/tcg/plugins/ 🕙11:31:03 alex@draig:qemu.git/builds/all on HEAD (61e51c3) (REBASING 5/26) [$?] ➜ make test-plugins /home/alex/lsrc/qemu.git/builds/all/pyvenv/bin/meson introspect --targets --tests --benchmarks | /home/alex/lsrc/qemu.git/builds/all/pyvenv/bin/python3 -B scripts/mtest2make.py > Makefile.mtest [1/14] Compiling C object tests/tcg/plugins/libbb.so.p/bb.c.o [2/14] Linking target tests/tcg/plugins/libbb.so [3/14] Compiling C object tests/tcg/plugins/libempty.so.p/empty.c.o [4/14] Linking target tests/tcg/plugins/libempty.so [5/14] Compiling C object tests/tcg/plugins/libinline.so.p/inline.c.o [6/14] Linking target tests/tcg/plugins/libinline.so [7/14] Compiling C object tests/tcg/plugins/libinsn.so.p/insn.c.o [8/14] Linking target tests/tcg/plugins/libinsn.so [9/14] Compiling C object tests/tcg/plugins/libmem.so.p/mem.c.o [10/14] Linking target tests/tcg/plugins/libmem.so [11/14] Compiling C object tests/tcg/plugins/libreset.so.p/reset.c.o [12/14] Linking target tests/tcg/plugins/libreset.so [13/14] Compiling C object tests/tcg/plugins/libsyscall.so.p/syscall.c.o [14/14] Linking target tests/tcg/plugins/libsyscall.so > >> $(call quiet-command, \ >> $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS), \ >> "BUILD","$* guest-tests")
On 2025/05/22 19:31, Alex Bennée wrote: > Akihiko Odaki <akihiko.odaki@daynix.com> writes: > >> On 2025/05/22 1:42, Alex Bennée wrote: >>> The user can run a subset of the tcg tests directly, e.g.: >>> make run-tcg-tests-hexagon-linux-user >>> but in this case we fail if there has not been a full build to >>> ensure >>> all the test-plugins are there. Fix the dependency to ensure we always >>> will build them before running tests. >>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> >>> --- >>> tests/Makefile.include | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> diff --git a/tests/Makefile.include b/tests/Makefile.include >>> index 23fb722d42..7f7f62cbf6 100644 >>> --- a/tests/Makefile.include >>> +++ b/tests/Makefile.include >>> @@ -46,7 +46,7 @@ $(foreach TARGET,$(TCG_TESTS_TARGETS), \ >>> $(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak)) >>> .PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%) >>> -$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak >>> +$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak test-plugins >> >> I don't think this is going to work. >> >> test-plugins will invoke run-ninja, which is defined as follows: >> >> run-ninja: config-host.mak >> ifneq ($(filter $(ninja-targets), $(ninja-cmd-goals)),) >> +$(if $(MAKE.nq),@:,$(quiet-@)$(NINJA) $(NINJAFLAGS) \ >> $(sort $(filter $(ninja-targets), $(ninja-cmd-goals))) | cat) >> >> $(ninja-cmd-goals) should contain test-plugins, but it doesn't if I >> understand it correctly. > > It certainly does: > > ➜ rm -rf tests/tcg/plugins/ > 🕙11:31:03 alex@draig:qemu.git/builds/all on HEAD (61e51c3) (REBASING 5/26) [$?] > ➜ make test-plugins > /home/alex/lsrc/qemu.git/builds/all/pyvenv/bin/meson introspect --targets --tests --benchmarks | /home/alex/lsrc/qemu.git/builds/all/pyvenv/bin/python3 -B scripts/mtest2make.py > Makefile.mtest > [1/14] Compiling C object tests/tcg/plugins/libbb.so.p/bb.c.o > [2/14] Linking target tests/tcg/plugins/libbb.so > [3/14] Compiling C object tests/tcg/plugins/libempty.so.p/empty.c.o > [4/14] Linking target tests/tcg/plugins/libempty.so > [5/14] Compiling C object tests/tcg/plugins/libinline.so.p/inline.c.o > [6/14] Linking target tests/tcg/plugins/libinline.so > [7/14] Compiling C object tests/tcg/plugins/libinsn.so.p/insn.c.o > [8/14] Linking target tests/tcg/plugins/libinsn.so > [9/14] Compiling C object tests/tcg/plugins/libmem.so.p/mem.c.o > [10/14] Linking target tests/tcg/plugins/libmem.so > [11/14] Compiling C object tests/tcg/plugins/libreset.so.p/reset.c.o > [12/14] Linking target tests/tcg/plugins/libreset.so > [13/14] Compiling C object tests/tcg/plugins/libsyscall.so.p/syscall.c.o > [14/14] Linking target tests/tcg/plugins/libsyscall.so > ninja-cmd-goals is defined as follows: ninja-cmd-goals = $(or $(MAKECMDGOALS), all) ninja-cmd-goals += $(foreach g, $(MAKECMDGOALS), $(.ninja-goals.$g)) If you run "make test-plugins", $(ninja-cmd-goals) will contain "test-plugins" because $(MAKECMDGOALS) will be "test-plugins". It won't if you run "make run-tcg-tests-hexagon-linux-user". Regards, Akihiko Odaki
diff --git a/tests/Makefile.include b/tests/Makefile.include index 23fb722d42..7f7f62cbf6 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -46,7 +46,7 @@ $(foreach TARGET,$(TCG_TESTS_TARGETS), \ $(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak)) .PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%) -$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak +$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak test-plugins $(call quiet-command, \ $(MAKE) -C tests/tcg/$* $(SUBDIR_MAKEFLAGS), \ "BUILD","$* guest-tests")
The user can run a subset of the tcg tests directly, e.g.: make run-tcg-tests-hexagon-linux-user but in this case we fail if there has not been a full build to ensure all the test-plugins are there. Fix the dependency to ensure we always will build them before running tests. Signed-off-by: Alex Bennée <alex.bennee@linaro.org> --- tests/Makefile.include | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)