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

Configure Feed

Select the types of activity you want to include in your feed.

selftests: Deescalate error reporting

Commit 7e47389142b8 ("selftests: Preserve subtarget failures in
all/install") updated the propagation of errors from indivdual kselftest
targets to be similar to that seen with FORCE_TARGETS. While it would
be really nice to be in a position to do this currently it is premature
to do this as the default behaviour.

At present we default to trying to build all selftests but a combination
of code quality issues and build dependencies mean that it is almost
certain that at least one of them will fail to build (for example,
several depend on clang so don't work in a GCC container) and a top
level failure in the kselftest build reported. Further, the resulting
failures mean that the install target does not run at all so any build
problem is escallated to a complete failure to produce a kselftest
tarball so CI systems that run into issues loose all selftests coverage.
This has been causing disruption to a range of CI systems including
KernelCI, mine and Arm's internal one.

Revert the commit, users who need this behaviour should be able to use
FORCE_TARGETS for the time being. At present users that do this (such
as linux-next) are most likely building a subset of targets known to
succeed in their environments.

Link: https://lore.kernel.org/r/20260416-selftests-deescalate-error-reporting-v1-1-38e7c0536227@kernel.org
Fixes: 7e47389142b8 ("selftests: Preserve subtarget failures in all/install")
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>

authored by

Mark Brown and committed by
Shuah Khan
cad6f326 f8e0a5a1

+4 -4
+4 -4
tools/testing/selftests/Makefile
··· 209 209 .DEFAULT_GOAL := all 210 210 211 211 all: 212 - @ret=0; \ 212 + @ret=1; \ 213 213 for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \ 214 214 BUILD_TARGET=$$BUILD/$$TARGET; \ 215 215 mkdir $$BUILD_TARGET -p; \ 216 216 $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \ 217 217 O=$(abs_objtree) \ 218 218 $(if $(FORCE_TARGETS),|| exit); \ 219 - [ $$? -eq 0 ] || ret=1; \ 219 + ret=$$((ret * $$?)); \ 220 220 done; exit $$ret; 221 221 222 222 run_tests: all ··· 274 274 install -m 744 kselftest/ksft.py $(INSTALL_PATH)/kselftest/ 275 275 install -m 744 run_kselftest.sh $(INSTALL_PATH)/ 276 276 rm -f $(TEST_LIST) 277 - @ret=0; \ 277 + @ret=1; \ 278 278 for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \ 279 279 BUILD_TARGET=$$BUILD/$$TARGET; \ 280 280 $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install \ ··· 283 283 OBJ_PATH=$(INSTALL_PATH) \ 284 284 O=$(abs_objtree) \ 285 285 $(if $(FORCE_TARGETS),|| exit); \ 286 - [ $$? -eq 0 ] || ret=1; \ 286 + ret=$$((ret * $$?)); \ 287 287 done; exit $$ret; 288 288 289 289