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

Arnaldo Carvalho de Melo
2021-11-06T21:20:16Z

Em Sat, Nov 06, 2021 at 06:05:07PM -0300, Arnaldo Carvalho de Melo escreveu:
> 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@isovalent.com> 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@isovalent.com>
> > > > > ---
> > > > > 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 :-\

What I have, with your patch, is at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tmp.perf/core

It has both patches, as its needed for the BUILD_BPF_SKEL=1 mode to
build correctly with/without LIBBPF_DYNAMIC=1.

- Arnaldo

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

--

- Arnaldo