On Thu 2024-12-05 17:17:56, Siddharth Menon wrote: > Currently, kselftests does not have a generalised mechanism to skip compilation > and run tests when required kernel configuration flags are missing. > > This patch introduces a check to validate the presence of required config flags > specified in the selftest makefile. In case scripts/config is not found, > this check is skipped. > > Use TEST_CONFIG_DEPS to check for specific config options before compiling, > example usage: > ``` > TEST_CONFIG_DEPS := CONFIG_LIVEPATCH CONFIG_DYNAMIC_DEBUG What is the reason to add another set of dependencies, please? Both CONFIG_LIVEPATCH CONFIG_DYNAMIC_DEBUG are already mentioned in tools/testing/selftests/livepatch/config IMHO, the new check should read the dependencies from the existing tools/testing/selftests/<test>/config file. > --- a/tools/testing/selftests/lib.mk > +++ b/tools/testing/selftests/lib.mk > @@ -97,7 +97,21 @@ TEST_GEN_PROGS := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS)) > TEST_GEN_PROGS_EXTENDED := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_PROGS_EXTENDED)) > TEST_GEN_FILES := $(patsubst %,$(OUTPUT)/%,$(TEST_GEN_FILES)) > > -all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES) \ > +KDIR ?= /lib/modules/$(shell uname -r)/build > + > +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 It somehow does not work here. I get: tools/testing/selftests/livepatch # make run_tests grep: .config: No such file or directory grep: .config: No such file or directory grep: .config: No such file or directory grep: .config: No such file or directory ../lib.mk:112: *** Missing required config flags: CONFIG_LIVEPATCH CONFIG_DYNAMIC_DEBUG. Stop. I run the livepatch tests the following way. 1. On my workstation, I build the kernel RPMs using make rpm-pkg 2. In qemu test system, I mount the build directory from the workstation and install both kernel and kernel-devel packages: rpm -ivh rpmbuild/RPMS/x86_64/kernel-6.12.0_default+-35.x86_64.rpm rpm -ivh rpmbuild/RPMS/x86_64/kernel-devel-6.12.0_default+-35.x86_64.rpm and reboot 3. In rebooted qemu test system, I mount once again the build directory from the workstation and run the tests: cd tools/testing/selftests/livepatch make run_tests The "grep" errors come from the "scripts/config" command. For example: tools/testing/selftests/livepatch # /lib/modules/6.12.0-default+/build/scripts/config -s CONFIG_LIVEPATCH grep: .config: No such file or directory grep: .config: No such file or directory undef It helps to define patch to the config file installed by the devel package: tools/testing/selftests/livepatch # /lib/modules/6.12.0-default+/build/scripts/config --file /lib/modules/6.12.0-default+/config -s CONFIG_LIVEPATCH y But I am not sure if this works when people run the "make" in the original build directory on the workstation. Best Regards, Petr