Commit 43e8832f authored by John Hubbard's avatar John Hubbard Committed by Andrew Morton
Browse files

Revert "selftests: error out if kernel header files are not yet built"

This reverts commit 9fc96c7c ("selftests: error out if kernel header
files are not yet built").

It turns out that requiring the kernel headers to be built as a
prerequisite to building selftests, does not work in many cases. For
example, Peter Zijlstra writes:

"My biggest beef with the whole thing is that I simply do not want to use
'make headers', it doesn't work for me.

I have a ton of output directories and I don't care to build tools into
the output dirs, in fact some of them flat out refuse to work that way
(bpf comes to mind)." [1]

Therefore, stop erroring out on the selftests build. Additional patches
will be required in order to change over to not requiring the kernel
headers.

[1] https://lore.kernel.org/20231208221007.GO28727@noisy.programming.kicks-ass.net

Link: https://lkml.kernel.org/r/20231209020144.244759-1-jhubbard@nvidia.com


Fixes: 9fc96c7c ("selftests: error out if kernel header files are not yet built")
Signed-off-by: default avatarJohn Hubbard <jhubbard@nvidia.com>
Cc: Anders Roxell <anders.roxell@linaro.org>
Cc: Muhammad Usama Anjum <usama.anjum@collabora.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Peter Xu <peterx@redhat.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Marcos Paulo de Souza <mpdesouza@suse.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 1dd11e97
Loading
Loading
Loading
Loading
+1 −20
Original line number Diff line number Diff line
@@ -155,12 +155,10 @@ ifneq ($(KBUILD_OUTPUT),)
  abs_objtree := $(realpath $(abs_objtree))
  BUILD := $(abs_objtree)/kselftest
  KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include
  KHDR_DIR := ${abs_objtree}/usr/include
else
  BUILD := $(CURDIR)
  abs_srctree := $(shell cd $(top_srcdir) && pwd)
  KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include
  KHDR_DIR := ${abs_srctree}/usr/include
  DEFAULT_INSTALL_HDR_PATH := 1
endif

@@ -174,7 +172,7 @@ export KHDR_INCLUDES
# all isn't the first target in the file.
.DEFAULT_GOAL := all

all: kernel_header_files
all:
	@ret=1;							\
	for TARGET in $(TARGETS); do				\
		BUILD_TARGET=$$BUILD/$$TARGET;			\
@@ -185,23 +183,6 @@ all: kernel_header_files
		ret=$$((ret * $$?));				\
	done; exit $$ret;

kernel_header_files:
	@ls $(KHDR_DIR)/linux/*.h >/dev/null 2>/dev/null;                          \
	if [ $$? -ne 0 ]; then                                                     \
            RED='\033[1;31m';                                                  \
            NOCOLOR='\033[0m';                                                 \
            echo;                                                              \
            echo -e "$${RED}error$${NOCOLOR}: missing kernel header files.";   \
            echo "Please run this and try again:";                             \
            echo;                                                              \
            echo "    cd $(top_srcdir)";                                       \
            echo "    make headers";                                           \
            echo;                                                              \
	    exit 1;                                                                \
	fi

.PHONY: kernel_header_files

run_tests: all
	@for TARGET in $(TARGETS); do \
		BUILD_TARGET=$$BUILD/$$TARGET;	\
+3 −37
Original line number Diff line number Diff line
@@ -44,26 +44,10 @@ endif
selfdir = $(realpath $(dir $(filter %/lib.mk,$(MAKEFILE_LIST))))
top_srcdir = $(selfdir)/../../..

ifeq ("$(origin O)", "command line")
  KBUILD_OUTPUT := $(O)
ifeq ($(KHDR_INCLUDES),)
KHDR_INCLUDES := -isystem $(top_srcdir)/usr/include
endif

ifneq ($(KBUILD_OUTPUT),)
  # Make's built-in functions such as $(abspath ...), $(realpath ...) cannot
  # expand a shell special character '~'. We use a somewhat tedious way here.
  abs_objtree := $(shell cd $(top_srcdir) && mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) && pwd)
  $(if $(abs_objtree),, \
    $(error failed to create output directory "$(KBUILD_OUTPUT)"))
  # $(realpath ...) resolves symlinks
  abs_objtree := $(realpath $(abs_objtree))
  KHDR_DIR := ${abs_objtree}/usr/include
else
  abs_srctree := $(shell cd $(top_srcdir) && pwd)
  KHDR_DIR := ${abs_srctree}/usr/include
endif

KHDR_INCLUDES := -isystem $(KHDR_DIR)

# The following are built by lib.mk common compile rules.
# TEST_CUSTOM_PROGS should be used by tests that require
# custom build rule and prevent common build rule use.
@@ -74,25 +58,7 @@ 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: kernel_header_files $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) \
     $(TEST_GEN_FILES)

kernel_header_files:
	@ls $(KHDR_DIR)/linux/*.h >/dev/null 2>/dev/null;                      \
	if [ $$? -ne 0 ]; then                                                 \
            RED='\033[1;31m';                                                  \
            NOCOLOR='\033[0m';                                                 \
            echo;                                                              \
            echo -e "$${RED}error$${NOCOLOR}: missing kernel header files.";   \
            echo "Please run this and try again:";                             \
            echo;                                                              \
            echo "    cd $(top_srcdir)";                                       \
            echo "    make headers";                                           \
            echo;                                                              \
	    exit 1; \
	fi

.PHONY: kernel_header_files
all: $(TEST_GEN_PROGS) $(TEST_GEN_PROGS_EXTENDED) $(TEST_GEN_FILES)

define RUN_TESTS
	BASE_DIR="$(selfdir)";			\