On 02/08/2022 15:29, Shuah Khan wrote:
On 8/2/22 3:51 AM, Mickaël Salaün wrote:
Hi,
This change breaks the Landlock test build when performed on the tools/testing/selftests/landlock directory because the (non-system/up-to-date) kernel headers aren't found. Looking at the use of top_srcdir and HDR_PATH, it seems that multiple subsystems are using this feature. I consider this change a regression.
I did a build test from the top level before sending the pull request and didn't catch this breakage as a result. This breaks when build is run from the test directory.
We have had several problems related to khdr_dir and target and decided to move away from it with this change.
It also removes the check on up-to-date kernel headers (thanks to the Makefile's target timestamp).
I wasn't CCed for this change impacting Landlock [1]. Please keep in mind to add at least maintainers and related mailing-lists for changes on related subsystems.
That is the usual practice and if I notice missing maintainers, I add them. We missed this one.
The following patch almost revert commit a917dd94b832 ("selftests/landlock: drop deprecated headers dependency") and partially fixes commit 49de12ba06ef ("selftests: drop KSFT_KHDR_INSTALL make target"):
Guillaume,
Will you be able to look at this and send a patch on top? I will send another pull request before merge window closes?
Sure, I'll take a look today.
Also I'll see if we can add some extra build tests in KernelCI for the kselftest tree to catch issues like these automatically.
Best wishes, Guillaume
--- a/tools/testing/selftests/landlock/Makefile +++ b/tools/testing/selftests/landlock/Makefile @@ -9,10 +9,13 @@ TEST_GEN_PROGS := $(src_test:.c=) TEST_GEN_PROGS_EXTENDED := true
OVERRIDE_TARGETS := 1 +top_srcdir = ../../../.. include ../lib.mk
+khdr_dir = $(top_srcdir)/usr/include
$(OUTPUT)/true: true.c $(LINK.c) $< $(LDLIBS) -o $@ -static
-$(OUTPUT)/%_test: %_test.c ../kselftest_harness.h common.h - $(LINK.c) $< $(LDLIBS) -o $@ -lcap +$(OUTPUT)/%_test: %_test.c $(khdr_dir)/linux/landlock.h ../kselftest_harness.h common.h + $(LINK.c) $< $(LDLIBS) -o $@ -lcap -I$(khdr_dir)
This doesn't fix the header timestamp check though.
thanks, -- Shuah