Re: Makefile.perf:1149: *** Missing bpftool input for generating vmlinux.h. Stop.

From: Ingo Molnar
Date: Wed Jun 05 2024 - 03:19:56 EST



* Ingo Molnar <mingo@xxxxxxxxxx> wrote:

>
> * Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
>
> > Hi Ian and Ingo,
> >
> > The failure happens when you don't have vmlinux.h or vmlinux with BTF.
> >
> > ifeq ($(VMLINUX_H),)
> > ifeq ($(VMLINUX_BTF),)
> > $(error Missing bpftool input for generating vmlinux.h)
> > endif
> > endif
> >
> > VMLINUX_BTF can be empty if you didn't build a kernel or
> > it doesn't have a BTF section and the current kernel also
> > has no BTF. This is totally ok.
> >
> > But VMLINUX_H should be set to the minimal version in
> > the source tree (unless you overwrite it manually) when you
> > don't pass GEN_VMLINUX_H=1 (which requires VMLINUX_BTF
> > should not be empty). The problem is that it's defined in
> > Makefile.config which is not included for `make clean`.
> >
> > Can you please verify if the below patch fixes it?
> >
> > Thanks,
> > Namhyung
> >
> > ---8<---
> >
> > diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> > index 5c35c0d89306..e6d56b555369 100644
> > --- a/tools/perf/Makefile.perf
> > +++ b/tools/perf/Makefile.perf
> > @@ -214,6 +214,7 @@ NON_CONFIG_TARGETS := clean python-clean TAGS tags
> > cscope help
> >
> > ifdef MAKECMDGOALS
> > ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),)
> > + VMLINUX_H=$(src-perf)/util/bpf_skel/vmlinux/vmlinux.h
> > config := 0
> > endif
> > endif
>
> Yeah, this appears to be doing the trick here - judging by a couple of
> tries of interrupted builds:
>
> Tested-by: Ingo Molnar <mingo@xxxxxxxxxx>

Specifically I also tested it on a failed tree, by merging in your fix the
build now progresses as expected. So this is fixed for good.

Thanks,

Ingo