On Thu, Dec 05, 2024 at 05:17:56PM +0530, Siddharth Menon wrote:
Currently, kselftests does not have a generalised mechanism to skip compilation and run tests when required kernel configuration flags are missing.
Should this be a build dependency or only a runtime dependency, or should these be separate options for cases where the selftest builds a module? If people are building the selftests once and then using them with a bunch of kernel builds it might be surprising if some of the binaries vanish.
-all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) \ +KDIR ?= /lib/modules/$(shell uname -r)/build
Shouldn't we try the current kernel tree, and for runtime checks /proc/config.gz would be good to check when it's enabled?
+define CHECK_CONFIG_DEPS
- $(if $(wildcard $(KDIR)/scripts/config),
$(eval MISSING_FLAGS := $(filter-out 1,$(foreach cfg,$(TEST_CONFIG_DEPS),\
$(shell cd $(KDIR) && scripts/config --state $(cfg) | grep -q '^\(y\|m\)$$' && echo 1 || echo $(cfg))))),
$(info Skipping CHECK_GEN_REQ: $(KDIR)/scripts/config not found)
- )
- $(if $(MISSING_FLAGS),$(error Missing required config flags: $(MISSING_FLAGS)))
+endef
This is going to use a separate set of config options to those listed in the config file in the selftest directory which is perhaps a bit surprising. OTOH we do have a lot of the selftests directories where not every test needs all the options so that's probably a good choice unless we make things finer grained which might be more trouble than it's worth.