On 2015/6/30 3:41, Arnaldo Carvalho de Melo wrote:
Em Mon, Jun 29, 2015 at 04:21:51PM -0300, Arnaldo Carvalho de Melo escreveu:
Em Fri, Jun 26, 2015 at 02:15:07PM +0000, Wang Nan escreveu:
In this patch, eBPF API is checked by compiling a c source file which
uses fields in bpf_attr which will be used by libbpf.

Signed-off-by: Wang Nan <wangn...@huawei.com>
Acked-by: Alexei Starovoitov <a...@plumgrid.com>
So, I just applied this and after trying:

[acme@felicio linux]$ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf
; make O=/tmp/build/perf -C tools/perf  install-bin
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 ]

   MKDIR    /tmp/build/perf/util/
   CC       /tmp/build/perf/util/abspath.o

--------------------------------------------------------

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

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

# 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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to