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

From: Ingo Molnar
Date: Wed Jun 05 2024 - 03:15:31 EST



* 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>

There's a new issue btw: see the 'invalid escape sequence' warnings below.
This is on a pretty stock Unbuntu 24.04 desktop.

Thanks,

Ingo

<unknown>:1: SyntaxWarning: invalid escape sequence '\S'
ASCIIDOC perf-config.xml
<unknown>:1: SyntaxWarning: invalid escape sequence '\S'
<unknown>:1: SyntaxWarning: invalid escape sequence '\S'
<unknown>:1: SyntaxWarning: invalid escape sequence '\S'
<unknown>:1: SyntaxWarning: invalid escape sequence '\S'
ASCIIDOC perf-daemon.xml
<unknown>:1: SyntaxWarning: invalid escape sequence '\S'
<unknown>:1: SyntaxWarning: invalid escape sequence '\S'
ASCIIDOC perf-data.xml
ASCIIDOC perf-diff.xml