Currently, when we run the BPF selftests with the following command:
'make -C tools/testing/selftests TARGETS=bpf SKIP_TARGETS=""'
The command generates untracked files and directories: ''' Untracked files: (use "git add <file>..." to include in what will be committed) tools/testing/selftests/bpfFEATURE-DUMP.selftests tools/testing/selftests/bpffeature/ '''
The core reason is our Makefile(tools/testing/selftests/bpf/Makefile) was written like this: ''' OUTPUT := $(OUTPUT)/ $(eval include ../../../build/Makefile.feature) OUTPUT := $(patsubst %/,%,$(OUTPUT)) '''
This way of assigning values to OUTPUT will never be effective for the variable OUTPUT provided via the command argument and sub makefile called like this(tools/testing/selftests/Makefile): ''' all: ... $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET '''
As stated in the GNU make documentation: ''' An argument that contains '=' specifies the value of a variable: 'v=x' sets the value of the variable v to x. If you specify a value in this way, all ordinary assignments of the same variable in the makefile are ignored; we say they have been overridden by the command line argument. '''
According to GNU make, we use override Directive to fix this issue: ''' If you want to set the variable in the makefile even though it was set with a command argument, you can use an override directive, which is a line that looks like this: override variable := value
Link: https://www.gnu.org/software/make/manual/make.html#Override-Directive Fixes: dc3a8804d790 ("selftests/bpf: Adapt OUTPUT appending logic to lower versions of Make")
Signed-off-by: Jiayuan Chen mrpre@163.com --- tools/testing/selftests/bpf/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index 9e870e519c30..eb4d21651aa7 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -202,9 +202,9 @@ ifeq ($(shell expr $(MAKE_VERSION) >= 4.4), 1) $(let OUTPUT,$(OUTPUT)/,\ $(eval include ../../../build/Makefile.feature)) else -OUTPUT := $(OUTPUT)/ +override OUTPUT := $(OUTPUT)/ $(eval include ../../../build/Makefile.feature) -OUTPUT := $(patsubst %/,%,$(OUTPUT)) +override OUTPUT := $(patsubst %/,%,$(OUTPUT)) endif endif
base-commit: a7c205120d339b6ad2557fe3f33fdf20394f1a0f
linux-kselftest-mirror@lists.linaro.org