2025-03-25 16:02 UTC+0530 ~ Venkat Rao Bagalkote <venka...@linux.ibm.com> > Greetings!!! > > > bpftool fails to complie on linux-next-20250324 repo. > > > Error: > > make: *** No rule to make target 'bpftool', needed by '/home/linux/ > tools/testing/selftests/bpf/tools/include/vmlinux.h'. Stop. > make: *** Waiting for unfinished jobs.....
Thanks! Would be great to have a bit more context on the error (and on how to reproduce) for next time. Bpftool itself seems to compile fine, the error shows that it's building it from the context of the selftests that seems broken. > Git bisect points to commit: 8a635c3856ddb74ed3fe7c856b271cdfeb65f293 as > first bad commit. Thank you Venkat for the bisect! On a quick look, that commit introduced a definition for BPFTOOL in tools/scripts/Makefile.include: diff --git a/tools/scripts/Makefile.include .../Makefile.include index 0aa4005017c7..71bbe52721b3 100644 --- a/tools/scripts/Makefile.include +++ b/tools/scripts/Makefile.include @@ -91,6 +91,9 @@ LLVM_CONFIG ?= llvm-config LLVM_OBJCOPY ?= llvm-objcopy LLVM_STRIP ?= llvm-strip +# Some tools require bpftool +BPFTOOL ?= bpftool + ifeq ($(CC_NO_CLANG), 1) EXTRA_WARNINGS += -Wstrict-aliasing=3 But several utilities or selftests under tools/ include tools/scripts/Makefile.include _and_ use their own version of the $(BPFTOOL) variable, often assigning only if unset, for example in tools/testing/selftests/bpf/Makefile: BPFTOOL ?= $(DEFAULT_BPFTOOL) My guess is that the new definition from Makefile.include overrides this with simply "bpftool" as a value, and the Makefile fails to build it as a result. If I guessed correctly, one workaround would be to rename the variable in Makefile.include (and in whatever Makefile now relies on it) into something that is not used in the other Makefiles, for example BPFTOOL_BINARY. Please copy the BPF mailing list on changes impacting BPF tooling (or for BPF-related patchsets in general). Thanks, Quentin