[BUG] Re: [PATCH bpf-next] perf build: Install libbpf headers locally when building

From: Arnaldo Carvalho de Melo
Date: Sat Nov 06 2021 - 17:05:15 EST


Em Sat, Nov 06, 2021 at 05:12:48PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Sat, Nov 06, 2021 at 04:29:16PM -0300, Arnaldo Carvalho de Melo escreveu:
> > Em Fri, Nov 05, 2021 at 11:38:50AM -0700, Andrii Nakryiko escreveu:
> > > On Thu, Nov 4, 2021 at 7:02 PM Quentin Monnet <quentin@xxxxxxxxxxxxx> wrote:
> > > >
> > > > API headers from libbpf should not be accessed directly from the
> > > > library's source directory. Instead, they should be exported with "make
> > > > install_headers". Let's adjust perf's Makefile to install those headers
> > > > locally when building libbpf.
> > > >
> > > > Signed-off-by: Quentin Monnet <quentin@xxxxxxxxxxxxx>
> > > > ---
> > > > Note: Sending to bpf-next because it's directly related to libbpf, and
> > > > to similar patches merged through bpf-next, but maybe Arnaldo prefers to
> > > > take it?
> > >
> > > Arnaldo would know better how to thoroughly test it, so I'd prefer to
> > > route this through perf tree. Any objections, Arnaldo?
> >
> > Preliminary testing passed for 'BUILD_BPF_SKEL=1' with without
> > LIBBPF_DYNAMIC=1 (using the system's libbpf-devel to build perf), so far
> > so good, so I tentatively applied it, will see with the full set of
> > containers.
>
> Because all the preliminary tests used O= to have that OUTPUT variable
> set, when we do simply:
>
> make -C tools/perf

So I'll have to remove it now as my container builds test both O= and
in-place builds (make -C tools/perf), I know many people (Jiri for
instance) don't use O=.

I tried to fix this but run out of time today, visits arriving soon, so
I'll try to come back to this tomorrow early morning, to push what I
have in to Linus, that is blocked by this now :-\

- Arnaldo

> it breaks:
>
> ⬢[acme@toolbox perf]$ make -C tools clean > /dev/null 2>&1
> ⬢[acme@toolbox perf]$ make JOBS=1 -C tools/perf
> make: Entering directory '/var/home/acme/git/perf/tools/perf'
> BUILD: Doing 'make -j1' parallel build
> HOSTCC fixdep.o
> HOSTLD fixdep-in.o
> LINK fixdep
> <SNIP ABI sync warnings>
>
> Auto-detecting system features:
> ... dwarf: [ on ]
> ... dwarf_getlocations: [ on ]
> ... glibc: [ on ]
> ... libbfd: [ on ]
> ... libbfd-buildid: [ on ]
> ... libcap: [ on ]
> ... libelf: [ on ]
> ... libnuma: [ on ]
> ... numa_num_possible_cpus: [ on ]
> ... libperl: [ on ]
> ... libpython: [ on ]
> ... libcrypto: [ on ]
> ... libunwind: [ on ]
> ... libdw-dwarf-unwind: [ on ]
> ... zlib: [ on ]
> ... lzma: [ on ]
> ... get_cpuid: [ on ]
> ... bpf: [ on ]
> ... libaio: [ on ]
> ... libzstd: [ on ]
> ... disassembler-four-args: [ on ]
>
>
> CC fd/array.o
> LD fd/libapi-in.o
> CC fs/fs.o
> CC fs/tracing_path.o
> CC fs/cgroup.o
> LD fs/libapi-in.o
> CC cpu.o
> CC debug.o
> CC str_error_r.o
> LD libapi-in.o
> AR libapi.a
> CC exec-cmd.o
> CC help.o
> CC pager.o
> CC parse-options.o
> CC run-command.o
> CC sigchain.o
> CC subcmd-config.o
> LD libsubcmd-in.o
> AR libsubcmd.a
> CC core.o
> CC cpumap.o
> CC threadmap.o
> CC evsel.o
> CC evlist.o
> CC mmap.o
> CC zalloc.o
> CC xyarray.o
> CC lib.o
> LD libperf-in.o
> AR libperf.a
> make[2]: *** No rule to make target 'libbpf', needed by 'libbpf/libbpf.a'. Stop.
> make[1]: *** [Makefile.perf:240: sub-make] Error 2
> make: *** [Makefile:70: all] Error 2
> make: Leaving directory '/var/home/acme/git/perf/tools/perf'
> ⬢[acme@toolbox perf]$
>
> Trying to fix...
>
> - Arnaldo

--

- Arnaldo