Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/powerpc: Fix emit_tests to work with run_kselftest.sh

In order to use run_kselftest.sh the list of tests must be emitted to
populate kselftest-list.txt.

The powerpc Makefile is written to use EMIT_TESTS. But support for
EMIT_TESTS was dropped in commit d4e59a536f50 ("selftests: Use runner.sh
for emit targets"). Although prior to that commit a548de0fe8e1
("selftests: lib.mk: add test execute bit check to EMIT_TESTS") had
already broken run_kselftest.sh for powerpc due to the executable check
using the wrong path.

It can be fixed by replacing the EMIT_TESTS definitions with actual
emit_tests rules in the powerpc Makefiles. This makes run_kselftest.sh
able to run powerpc tests:

$ cd linux
$ export ARCH=powerpc
$ export CROSS_COMPILE=powerpc64le-linux-gnu-
$ make headers
$ make -j -C tools/testing/selftests install
$ grep -c "^powerpc" tools/testing/selftests/kselftest_install/kselftest-list.txt
182

Fixes: d4e59a536f50 ("selftests: Use runner.sh for emit targets")
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230921072623.828772-1-mpe@ellerman.id.au

+9 -9
+3 -4
tools/testing/selftests/powerpc/Makefile
··· 59 59 done; 60 60 endef 61 61 62 - override define EMIT_TESTS 62 + emit_tests: 63 63 +@for TARGET in $(SUB_DIRS); do \ 64 64 BUILD_TARGET=$(OUTPUT)/$$TARGET; \ 65 - $(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET emit_tests;\ 65 + $(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET $@;\ 66 66 done; 67 - endef 68 67 69 68 override define CLEAN 70 69 +@for TARGET in $(SUB_DIRS); do \ ··· 76 77 tags: 77 78 find . -name '*.c' -o -name '*.h' | xargs ctags 78 79 79 - .PHONY: tags $(SUB_DIRS) 80 + .PHONY: tags $(SUB_DIRS) emit_tests
+6 -5
tools/testing/selftests/powerpc/pmu/Makefile
··· 30 30 +TARGET=event_code_tests; BUILD_TARGET=$$OUTPUT/$$TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests 31 31 endef 32 32 33 - DEFAULT_EMIT_TESTS := $(EMIT_TESTS) 34 - override define EMIT_TESTS 35 - $(DEFAULT_EMIT_TESTS) 33 + emit_tests: 34 + for TEST in $(TEST_GEN_PROGS); do \ 35 + BASENAME_TEST=`basename $$TEST`; \ 36 + echo "$(COLLECTION):$$BASENAME_TEST"; \ 37 + done 36 38 +TARGET=ebb; BUILD_TARGET=$$OUTPUT/$$TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET emit_tests 37 39 +TARGET=sampling_tests; BUILD_TARGET=$$OUTPUT/$$TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET emit_tests 38 40 +TARGET=event_code_tests; BUILD_TARGET=$$OUTPUT/$$TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -s -C $$TARGET emit_tests 39 - endef 40 41 41 42 DEFAULT_INSTALL_RULE := $(INSTALL_RULE) 42 43 override define INSTALL_RULE ··· 65 64 event_code_tests: 66 65 TARGET=$@; BUILD_TARGET=$$OUTPUT/$$TARGET; mkdir -p $$BUILD_TARGET; $(MAKE) OUTPUT=$$BUILD_TARGET -k -C $$TARGET all 67 66 68 - .PHONY: all run_tests ebb sampling_tests event_code_tests 67 + .PHONY: all run_tests ebb sampling_tests event_code_tests emit_tests