Re: [RFC PATCH v9 02/50] tools build: Add feature check for eBPF API

From: Arnaldo Carvalho de Melo
Date: Tue Jun 30 2015 - 10:35:12 EST


Em Tue, Jun 30, 2015 at 10:29:08AM +0800, Wangnan (F) escreveu:
> On 2015/6/30 3:41, Arnaldo Carvalho de Melo wrote:
> >>So, what should I do now? I want to have that OFF line turned to "on",
> >>so that I can test this stuff.

> >>But the changelog says nothing about it, lemme check the cover letter,
> >>but having to do that is annoying, one expects to have instructions
> >>related to some specific changeset in its comments...
> >So, when such build tests fail, we can see why by looking for a file
> >with a special name in the O= output dir:

> >[acme@felicio linux]$ cat /tmp/build/perf/feature/test-bpf.make.output
> >test-bpf.c:1:23: fatal error: linux/bpf.h: No such file or directory
> > #include <linux/bpf.h>
> > ^
> >compilation terminated.
> >[acme@felicio linux]$

> This patch tries to check the version of bpf.h, because old bpf.h doesn't
> define 'kern_version' field for 'union bpf_attr'.

Ok, I realise it needs to find some bpf.h file, but where should it look
for it? What needs to be installed so that this feature test succeeds?

> I think the problem you meet is caused by missing of kernel headers in your
> host system environment. After patch 'perf tools: Make perf depend on
> libbpf'

What is precise path to this bpf.h file? What was the cset that
introduced it and in what upstream branch is it?

> this checking should always success because it adds required headers
> into MANIFEST and setup FEATURE_CHECK_CFLAGS-bpf.
>
> Also, after applying 3/50 you should see this:

IIRC I tried yesterday, will try again later and let you know, but
when introducing a feature test, please state what is required to be
installed in a system so that it can succeed, where to obtain it, etc.

It is possible to figure this out, but sometimes doing that takes time
that would be beter invested in processing further patches...

- Arnaldo

> # make O=/tmp/build/bpf/ -C tools/lib/bpf/

> Auto-detecting system features:
> ... libelf: [ on ]
> ... libelf-getphdrnum: [ on ]
> ... libelf-mmap: [ on ]
> ... bpf: [ on ]
>
> make: Entering directory `/home/wn/kernel-hydrogen/tools/lib/bpf'
> CC /tmp/build/bpf/libbpf.o
> LD /tmp/build/bpf/libbpf-in.o
> LINK /tmp/build/bpf/libbpf.a
> LINK /tmp/build/bpf/libbpf.so
> make: Leaving directory `/home/wn/kernel/tools/lib/bpf'
>
> Even if in perf checking bpf should fail in your machine now, checking bpf
> feature in
> libbpf should success because when build libbpf I have added following
> setting to
> tools/lib/bpf/Makefile:
>
> INCLUDES = -I. -I$(srctree)/tools/include
> -I$(srctree)/arch/$(ARCH)/include/uapi -I$(srctree)/include/uapi
> FEATURE_CHECK_CFLAGS-bpf = $(INCLUDES)
>
> Do you want me to squash 2/30 and 3/50 together and append 'bpf' checker
> into FEATURE_TESTS in
> tools/build/Makefile.feature in 23/50? Then there should be less confusion:
> when compiling perf
> before 23/50, bpf feature will never be checked then.
>
> Thank you.
>
> >Right, one of the few things that could explain the failure, but:
> >
> >[acme@felicio linux]$ find . -name bpf.h
> >./include/linux/bpf.h
> >./include/uapi/linux/bpf.h
> >[acme@felicio linux]$
> >
> >So lemme try doing it in place:
> >
> >[acme@felicio linux]$ make -C tools/perf/
> >make: Entering directory `/home/acme/git/linux/tools/perf'
> > BUILD: Doing 'make -j4' parallel build
> >
> >Auto-detecting system features:
> >... dwarf: [ on ]
> >... glibc: [ on ]
> >... gtk2: [ on ]
> >... libaudit: [ on ]
> >... libbfd: [ on ]
> >... libelf: [ on ]
> >... libnuma: [ on ]
> >... libperl: [ on ]
> >... libpython: [ on ]
> >... libslang: [ on ]
> >... libunwind: [ on ]
> >... libdw-dwarf-unwind: [ on ]
> >... zlib: [ on ]
> >... lzma: [ on ]
> >... bpf: [ OFF ]
> >
> >
> >Doesn't work as well :-\
> >
> >Looking at the following patches...
> >
> >- Arnaldo
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/