Re: [PATCH 3/3] selftests/bpf: Route test_kmods build artifacts to OUTPUT
Ihor Solodrai <[email protected]>
| Newsgroups | org.kernel.vger.linux-kselftest,org.kernel.vger.bpf,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/28/26 5:06 PM, Ricardo B. Marlière (SUSE) wrote: > [...] > > diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile > index 7d42632f9d42..b150a66f3c25 100644 > --- a/tools/testing/selftests/bpf/Makefile > +++ b/tools/testing/selftests/bpf/Makefile > @@ -135,6 +135,9 @@ TEST_PROGS_EXTENDED := \ > TEST_KMODS := bpf_testmod.ko bpf_test_no_cfi.ko bpf_test_modorder_x.ko \ > bpf_test_modorder_y.ko bpf_test_rqspinlock.ko > TEST_KMOD_TARGETS = $(addprefix $(OUTPUT)/,$(TEST_KMODS)) > +# Build directory for kernel modules: routed to $(OUTPUT)/test_kmods when > +# OUTPUT is set so that kbuild intermediates stay out of the source tree. > +TEST_KMODS_OUTDIR := $(if $(OUTPUT),$(OUTPUT)/test_kmods,test_kmods) > > # Compile but not part of 'make run_tests' > TEST_GEN_PROGS_EXTENDED = \ > @@ -163,8 +166,8 @@ override define CLEAN > $(Q)$(RM) -r $(TEST_GEN_FILES) > $(Q)$(RM) -r $(TEST_KMODS) > $(Q)$(RM) -r $(EXTRA_CLEAN) > - $(Q)$(MAKE) -C test_kmods clean > - $(Q)$(MAKE) -C libarena clean > + $(Q)$(MAKE) -C test_kmods $(if $(OUTPUT),OUTPUT=$(OUTPUT)/test_kmods) clean > + $(Q)$(MAKE) -C libarena $(if $(OUTPUT),OUTPUT=$(OUTPUT)/libarena) clean This is broken. What happens if the caller set OUTPUT but not O= ? If at linux root you do: $ make defconfig && make -j$(nproc) $ mkdir -p /tmp/kout $ make -C tools/testing/selftests/bpf OUTPUT=/tmp/kout clean it destroys the root Makefile: $ git diff --stat -- Makefile Makefile | 2364 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 1 file changed, 5 insertions(+), 2359 deletions(-) $ cat Makefile # Automatically generated by /home/isolodrai/sandbox/2026-08-06.review.out-of-tree-fixes/linux/Makefile: don't edit export KBUILD_OUTPUT = /home/isolodrai/sandbox/2026-08-06.review.out-of-tree-fixes/linux export KBUILD_EXTMOD = /home/isolodrai/sandbox/2026-08-06.review.out-of-tree-fixes/linux/tools/testing/selftests/bpf/test_kmods export KBUILD_EXTMOD_OUTPUT = /tmp/kout/test_kmods include /home/isolodrai/sandbox/2026-08-06.review.out-of-tree-fixes/linux/Makefile pw-bot: cr Also the selftests clean loop runs clean rules this way [1]: clean: @for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \ BUILD_TARGET=$$BUILD/$$TARGET; \ $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\ done; [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/tools/testing/selftests/Makefile?h=v7.2-rc6#n325 > $(Q)$(MAKE) docs-clean > endef > > [...] >