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

From: Arnaldo Carvalho de Melo
Date: Sat Nov 06 2021 - 16:12:56 EST


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

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