linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
@ 2021-11-04 17:37 Arnaldo Carvalho de Melo
  2021-11-04 17:47 ` Andrii Nakryiko
  2021-11-04 17:49 ` Arnaldo Carvalho de Melo
  0 siblings, 2 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-11-04 17:37 UTC (permalink / raw)
  To: Song Liu
  Cc: Andrii Nakryiko, Jiri Olsa, Namhyung Kim, bpf, Linux Kernel Mailing List


Hi Song,

	I just did a merge with upstream and I'm getting this:

  LINK    /tmp/build/perf/plugins/plugin_scsi.so
  INSTALL trace_plugins

Auto-detecting system features:
...                        libbfd: [ on  ]
...        disassembler-four-args: [ on  ]
...                          zlib: [ on  ]
...                        libcap: [ on  ]
...               clang-bpf-co-re: [ on  ]


  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/
  INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/hashmap.h
  INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/nlattr.h
  GEN     /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/bpf_helper_defs.h
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
  MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_probes.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/xsk.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/nlattr.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_errno.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/hashmap.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/str_error.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/netlink.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf_dump.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf_prog_linfo.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/ringbuf.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/strset.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/linker.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/gen_loader.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/relo_core.o
  LD      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf-in.o
  LINK    /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/libbpf.a
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/json_writer.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o
  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/disasm.o
gen.c:15:10: fatal error: bpf/bpf.h: No such file or directory
   15 | #include <bpf/bpf.h>
      |          ^~~~~~~~~~~
compilation terminated.
make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o] Error 1
make[3]: *** Waiting for unfinished jobs....
xlated_dumper.c:10:10: fatal error: bpf/libbpf.h: No such file or directory
   10 | #include <bpf/libbpf.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.
btf.c:15:10: fatal error: bpf/bpf.h: No such file or directory
   15 | #include <bpf/bpf.h>
      |          ^~~~~~~~~~~
compilation terminated.
make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o] Error 1
make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o] Error 1
main.c:12:10: fatal error: bpf/bpf.h: No such file or directory
   12 | #include <bpf/bpf.h>
      |          ^~~~~~~~~~~
compilation terminated.
make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o] Error 1
btf_dumper.c:12:10: fatal error: bpf/btf.h: No such file or directory
   12 | #include <bpf/btf.h>
      |          ^~~~~~~~~~~
compilation terminated.
make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o] Error 1
common.c:24:10: fatal error: bpf/bpf.h: No such file or directory
   24 | #include <bpf/bpf.h>
      |          ^~~~~~~~~~~
compilation terminated.
make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o] Error 1
make[2]: *** [Makefile.perf:1048: /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/bpftool] Error 2
make[1]: *** [Makefile.perf:240: sub-make] Error 2
make: *** [Makefile:113: install-bin] Error 2
make: Leaving directory '/var/home/acme/git/perf/tools/perf'

 Performance counter stats for 'make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin':

          6,965.78 msec task-clock:u              #    1.492 CPUs utilized
          6,937.93 msec cpu-clock:u               #    1.486 CPUs utilized

       4.669198336 seconds time elapsed

       4.015978000 seconds user
       3.202660000 seconds sys


70: Event expansion for cgroups                                     : Ok
88: perf all metricgroups test                                      : FAILED!
⬢[acme@toolbox perf]$ find tools/ -name bpf.h
tools/include/uapi/linux/bpf.h
tools/lib/bpf/bpf.h
tools/perf/include/bpf/bpf.h
⬢[acme@toolbox perf]$ find tools/ -name libbpf.h
tools/lib/bpf/libbpf.h
⬢[acme@toolbox perf]$ find tools/perf/ -name gen.c
⬢[acme@toolbox perf]$

Before the merge, with pristine sources I wasn't getting this,
investigating now.

⬢[acme@toolbox perf]$ git show HEAD
commit e1498f18537a1639963370a4635c6fb99e7d672b (HEAD -> perf/core)
Merge: 32f7aa2731b24ad8 abfecb39092029c4
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Nov 4 14:32:11 2021 -0300

    Merge remote-tracking branch 'torvalds/master' into perf/core

    To pick up some tools/perf/ patches that went via tip/perf/core, such
    as:

      tools/perf: Add mem_hops field in perf_mem_data_src structure

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

⬢[acme@toolbox perf]$

⬢[acme@toolbox perf]$ git log --oneline -10 torvalds/master
abfecb39092029c4 (torvalds/master) Merge tag 'tty-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
95faf6ba654dd334 Merge tag 'driver-core-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
5c904c66ed4e86c3 Merge tag 'char-misc-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
5cd4dc44b8a0f656 Merge tag 'staging-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
048ff8629e117d84 Merge tag 'usb-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
7ddb58cb0ecae8e8 Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
ce840177930f591a Merge tag 'defconfig-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
d461e96cd22b5aeb Merge tag 'drivers-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
ae45d84fc36d01dc Merge tag 'dt-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
2219b0ceefe835b9 Merge tag 'soc-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
⬢[acme@toolbox perf]$

- Arnaldo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 17:37 perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream Arnaldo Carvalho de Melo
@ 2021-11-04 17:47 ` Andrii Nakryiko
  2021-11-04 18:09   ` Arnaldo Carvalho de Melo
  2021-11-04 18:10   ` Arnaldo Carvalho de Melo
  2021-11-04 17:49 ` Arnaldo Carvalho de Melo
  1 sibling, 2 replies; 14+ messages in thread
From: Andrii Nakryiko @ 2021-11-04 17:47 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Quentin Monnet
  Cc: Song Liu, Jiri Olsa, Namhyung Kim, bpf, Linux Kernel Mailing List

On Thu, Nov 4, 2021 at 10:38 AM Arnaldo Carvalho de Melo
<arnaldo.melo@gmail.com> wrote:
>
>
> Hi Song,
>

cc Quentin as well, might be related to recent Makefiles revamp for
users of libbpf. But in bpf-next perf builds perfectly fine, so not
sure.

>         I just did a merge with upstream and I'm getting this:
>
>   LINK    /tmp/build/perf/plugins/plugin_scsi.so
>   INSTALL trace_plugins
>
> Auto-detecting system features:
> ...                        libbfd: [ on  ]
> ...        disassembler-four-args: [ on  ]
> ...                          zlib: [ on  ]
> ...                        libcap: [ on  ]
> ...               clang-bpf-co-re: [ on  ]
>
>
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/
>   INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/hashmap.h
>   INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/nlattr.h
>   GEN     /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/bpf_helper_defs.h
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_probes.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/xsk.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/nlattr.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_errno.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/hashmap.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/str_error.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/netlink.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf_dump.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf_prog_linfo.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/ringbuf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/strset.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/linker.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/gen_loader.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/relo_core.o
>   LD      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf-in.o
>   LINK    /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/libbpf.a
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/json_writer.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/disasm.o
> gen.c:15:10: fatal error: bpf/bpf.h: No such file or directory
>    15 | #include <bpf/bpf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o] Error 1
> make[3]: *** Waiting for unfinished jobs....
> xlated_dumper.c:10:10: fatal error: bpf/libbpf.h: No such file or directory
>    10 | #include <bpf/libbpf.h>
>       |          ^~~~~~~~~~~~~~
> compilation terminated.
> btf.c:15:10: fatal error: bpf/bpf.h: No such file or directory
>    15 | #include <bpf/bpf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o] Error 1
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o] Error 1
> main.c:12:10: fatal error: bpf/bpf.h: No such file or directory
>    12 | #include <bpf/bpf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o] Error 1
> btf_dumper.c:12:10: fatal error: bpf/btf.h: No such file or directory
>    12 | #include <bpf/btf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o] Error 1
> common.c:24:10: fatal error: bpf/bpf.h: No such file or directory
>    24 | #include <bpf/bpf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o] Error 1
> make[2]: *** [Makefile.perf:1048: /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/bpftool] Error 2
> make[1]: *** [Makefile.perf:240: sub-make] Error 2
> make: *** [Makefile:113: install-bin] Error 2
> make: Leaving directory '/var/home/acme/git/perf/tools/perf'
>
>  Performance counter stats for 'make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin':
>
>           6,965.78 msec task-clock:u              #    1.492 CPUs utilized
>           6,937.93 msec cpu-clock:u               #    1.486 CPUs utilized
>
>        4.669198336 seconds time elapsed
>
>        4.015978000 seconds user
>        3.202660000 seconds sys
>
>
> 70: Event expansion for cgroups                                     : Ok
> 88: perf all metricgroups test                                      : FAILED!
> ⬢[acme@toolbox perf]$ find tools/ -name bpf.h
> tools/include/uapi/linux/bpf.h
> tools/lib/bpf/bpf.h
> tools/perf/include/bpf/bpf.h
> ⬢[acme@toolbox perf]$ find tools/ -name libbpf.h
> tools/lib/bpf/libbpf.h
> ⬢[acme@toolbox perf]$ find tools/perf/ -name gen.c
> ⬢[acme@toolbox perf]$
>
> Before the merge, with pristine sources I wasn't getting this,
> investigating now.
>
> ⬢[acme@toolbox perf]$ git show HEAD
> commit e1498f18537a1639963370a4635c6fb99e7d672b (HEAD -> perf/core)
> Merge: 32f7aa2731b24ad8 abfecb39092029c4
> Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> Date:   Thu Nov 4 14:32:11 2021 -0300
>
>     Merge remote-tracking branch 'torvalds/master' into perf/core
>
>     To pick up some tools/perf/ patches that went via tip/perf/core, such
>     as:
>
>       tools/perf: Add mem_hops field in perf_mem_data_src structure
>
>     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
>
> ⬢[acme@toolbox perf]$
>
> ⬢[acme@toolbox perf]$ git log --oneline -10 torvalds/master
> abfecb39092029c4 (torvalds/master) Merge tag 'tty-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
> 95faf6ba654dd334 Merge tag 'driver-core-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
> 5c904c66ed4e86c3 Merge tag 'char-misc-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
> 5cd4dc44b8a0f656 Merge tag 'staging-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
> 048ff8629e117d84 Merge tag 'usb-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
> 7ddb58cb0ecae8e8 Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
> ce840177930f591a Merge tag 'defconfig-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> d461e96cd22b5aeb Merge tag 'drivers-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> ae45d84fc36d01dc Merge tag 'dt-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> 2219b0ceefe835b9 Merge tag 'soc-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> ⬢[acme@toolbox perf]$
>
> - Arnaldo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 17:37 perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream Arnaldo Carvalho de Melo
  2021-11-04 17:47 ` Andrii Nakryiko
@ 2021-11-04 17:49 ` Arnaldo Carvalho de Melo
  2021-11-04 17:56   ` Andrii Nakryiko
  1 sibling, 1 reply; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-11-04 17:49 UTC (permalink / raw)
  To: Song Liu
  Cc: Andrii Nakryiko, Jiri Olsa, Namhyung Kim, bpf, Linux Kernel Mailing List

Em Thu, Nov 04, 2021 at 02:37:57PM -0300, Arnaldo Carvalho de Melo escreveu:
> 
> Hi Song,
> 
> 	I just did a merge with upstream and I'm getting this:
> 
>   LINK    /tmp/build/perf/plugins/plugin_scsi.so
>   INSTALL trace_plugins

To clarify, the command line to build perf that results in this problem
is:

  make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin
 
> Auto-detecting system features:
> ...                        libbfd: [ on  ]
> ...        disassembler-four-args: [ on  ]
> ...                          zlib: [ on  ]
> ...                        libcap: [ on  ]
> ...               clang-bpf-co-re: [ on  ]
> 
> 
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/
>   INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/hashmap.h
>   INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/nlattr.h
>   GEN     /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/bpf_helper_defs.h
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_probes.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/xsk.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/nlattr.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_errno.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/hashmap.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/str_error.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/netlink.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf_dump.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf_prog_linfo.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/ringbuf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/strset.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/linker.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/gen_loader.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/relo_core.o
>   LD      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf-in.o
>   LINK    /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/libbpf.a
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/json_writer.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o
>   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/disasm.o
> gen.c:15:10: fatal error: bpf/bpf.h: No such file or directory
>    15 | #include <bpf/bpf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o] Error 1
> make[3]: *** Waiting for unfinished jobs....
> xlated_dumper.c:10:10: fatal error: bpf/libbpf.h: No such file or directory
>    10 | #include <bpf/libbpf.h>
>       |          ^~~~~~~~~~~~~~
> compilation terminated.
> btf.c:15:10: fatal error: bpf/bpf.h: No such file or directory
>    15 | #include <bpf/bpf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o] Error 1
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o] Error 1
> main.c:12:10: fatal error: bpf/bpf.h: No such file or directory
>    12 | #include <bpf/bpf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o] Error 1
> btf_dumper.c:12:10: fatal error: bpf/btf.h: No such file or directory
>    12 | #include <bpf/btf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o] Error 1
> common.c:24:10: fatal error: bpf/bpf.h: No such file or directory
>    24 | #include <bpf/bpf.h>
>       |          ^~~~~~~~~~~
> compilation terminated.
> make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o] Error 1
> make[2]: *** [Makefile.perf:1048: /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/bpftool] Error 2
> make[1]: *** [Makefile.perf:240: sub-make] Error 2
> make: *** [Makefile:113: install-bin] Error 2
> make: Leaving directory '/var/home/acme/git/perf/tools/perf'
> 
>  Performance counter stats for 'make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin':
> 
>           6,965.78 msec task-clock:u              #    1.492 CPUs utilized
>           6,937.93 msec cpu-clock:u               #    1.486 CPUs utilized
> 
>        4.669198336 seconds time elapsed
> 
>        4.015978000 seconds user
>        3.202660000 seconds sys
> 
> 
> 70: Event expansion for cgroups                                     : Ok
> 88: perf all metricgroups test                                      : FAILED!
> ⬢[acme@toolbox perf]$ find tools/ -name bpf.h
> tools/include/uapi/linux/bpf.h
> tools/lib/bpf/bpf.h
> tools/perf/include/bpf/bpf.h
> ⬢[acme@toolbox perf]$ find tools/ -name libbpf.h
> tools/lib/bpf/libbpf.h
> ⬢[acme@toolbox perf]$ find tools/perf/ -name gen.c
> ⬢[acme@toolbox perf]$
> 
> Before the merge, with pristine sources I wasn't getting this,
> investigating now.
> 
> ⬢[acme@toolbox perf]$ git show HEAD
> commit e1498f18537a1639963370a4635c6fb99e7d672b (HEAD -> perf/core)
> Merge: 32f7aa2731b24ad8 abfecb39092029c4
> Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> Date:   Thu Nov 4 14:32:11 2021 -0300
> 
>     Merge remote-tracking branch 'torvalds/master' into perf/core
> 
>     To pick up some tools/perf/ patches that went via tip/perf/core, such
>     as:
> 
>       tools/perf: Add mem_hops field in perf_mem_data_src structure
> 
>     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> ⬢[acme@toolbox perf]$
> 
> ⬢[acme@toolbox perf]$ git log --oneline -10 torvalds/master
> abfecb39092029c4 (torvalds/master) Merge tag 'tty-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
> 95faf6ba654dd334 Merge tag 'driver-core-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
> 5c904c66ed4e86c3 Merge tag 'char-misc-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
> 5cd4dc44b8a0f656 Merge tag 'staging-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
> 048ff8629e117d84 Merge tag 'usb-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
> 7ddb58cb0ecae8e8 Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
> ce840177930f591a Merge tag 'defconfig-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> d461e96cd22b5aeb Merge tag 'drivers-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> ae45d84fc36d01dc Merge tag 'dt-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> 2219b0ceefe835b9 Merge tag 'soc-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> ⬢[acme@toolbox perf]$
> 
> - Arnaldo

-- 

- Arnaldo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 17:49 ` Arnaldo Carvalho de Melo
@ 2021-11-04 17:56   ` Andrii Nakryiko
  2021-11-04 18:11     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 14+ messages in thread
From: Andrii Nakryiko @ 2021-11-04 17:56 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Song Liu, Jiri Olsa, Namhyung Kim, bpf, Linux Kernel Mailing List

On Thu, Nov 4, 2021 at 10:49 AM Arnaldo Carvalho de Melo
<arnaldo.melo@gmail.com> wrote:
>
> Em Thu, Nov 04, 2021 at 02:37:57PM -0300, Arnaldo Carvalho de Melo escreveu:
> >
> > Hi Song,
> >
> >       I just did a merge with upstream and I'm getting this:
> >
> >   LINK    /tmp/build/perf/plugins/plugin_scsi.so
> >   INSTALL trace_plugins
>
> To clarify, the command line to build perf that results in this problem
> is:
>
>   make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin

Oh, I dropped CORESIGN and left BUILD_BPF_SKEL=1 and yeah, I see the
build failure. I do think now that it's related to the recent Makefile
revamp effort. Quentin, PTAL.

On the side note, why BUILD_BPF_SKEL=1 is not a default, we might have
caught this sooner. Is there any reason not to flip the default?

>
> > Auto-detecting system features:
> > ...                        libbfd: [ on  ]
> > ...        disassembler-four-args: [ on  ]
> > ...                          zlib: [ on  ]
> > ...                        libcap: [ on  ]
> > ...               clang-bpf-co-re: [ on  ]
> >
> >

[...]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 17:47 ` Andrii Nakryiko
@ 2021-11-04 18:09   ` Arnaldo Carvalho de Melo
  2021-11-04 18:15     ` Quentin Monnet
  2021-11-04 18:10   ` Arnaldo Carvalho de Melo
  1 sibling, 1 reply; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-11-04 18:09 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: Arnaldo Carvalho de Melo, Quentin Monnet, Song Liu, Jiri Olsa,
	Namhyung Kim, bpf, Linux Kernel Mailing List

Em Thu, Nov 04, 2021 at 10:47:12AM -0700, Andrii Nakryiko escreveu:
> On Thu, Nov 4, 2021 at 10:38 AM Arnaldo Carvalho de Melo
> <arnaldo.melo@gmail.com> wrote:
> >
> >
> > Hi Song,
> >
> 
> cc Quentin as well, might be related to recent Makefiles revamp for
> users of libbpf. But in bpf-next perf builds perfectly fine, so not
> sure.

This did the trick:

⬢[acme@toolbox perf]$ git show
commit 504afe6757ec646539ca3b4aa0431820e8c92b45 (HEAD -> perf/core)
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Nov 4 14:58:56 2021 -0300

    Revert "bpftool: Remove Makefile dep. on $(LIBBPF) for $(LIBBPF_INTERNAL_HDRS)"

    This reverts commit 8b6c46241c774c83998092a4eafe40f054568881.

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
index c0c30e56988f2cbe..c5ad996ee95d4e87 100644
--- a/tools/bpf/bpftool/Makefile
+++ b/tools/bpf/bpftool/Makefile
@@ -39,14 +39,14 @@ ifeq ($(BPFTOOL_VERSION),)
 BPFTOOL_VERSION := $(shell make -rR --no-print-directory -sC ../../.. kernelversion)
 endif

-$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT) $(LIBBPF_HDRS_DIR):
+$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT):
        $(QUIET_MKDIR)mkdir -p $@

 $(LIBBPF): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_OUTPUT)
        $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_OUTPUT) \
                DESTDIR=$(LIBBPF_DESTDIR) prefix= $(LIBBPF) install_headers

-$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_DIR)
+$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h $(LIBBPF)
        $(call QUIET_INSTALL, $@)
        $(Q)install -m 644 -t $(LIBBPF_HDRS_DIR) $<

⬢[acme@toolbox perf]$
 
> >         I just did a merge with upstream and I'm getting this:
> >
> >   LINK    /tmp/build/perf/plugins/plugin_scsi.so
> >   INSTALL trace_plugins
> >
> > Auto-detecting system features:
> > ...                        libbfd: [ on  ]
> > ...        disassembler-four-args: [ on  ]
> > ...                          zlib: [ on  ]
> > ...                        libcap: [ on  ]
> > ...               clang-bpf-co-re: [ on  ]
> >
> >
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/
> >   INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/hashmap.h
> >   INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/nlattr.h
> >   GEN     /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/bpf_helper_defs.h
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_probes.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/xsk.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/nlattr.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_errno.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/hashmap.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/str_error.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/netlink.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf_dump.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf_prog_linfo.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/ringbuf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/strset.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/linker.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/gen_loader.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/relo_core.o
> >   LD      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf-in.o
> >   LINK    /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/libbpf.a
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/json_writer.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/disasm.o
> > gen.c:15:10: fatal error: bpf/bpf.h: No such file or directory
> >    15 | #include <bpf/bpf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o] Error 1
> > make[3]: *** Waiting for unfinished jobs....
> > xlated_dumper.c:10:10: fatal error: bpf/libbpf.h: No such file or directory
> >    10 | #include <bpf/libbpf.h>
> >       |          ^~~~~~~~~~~~~~
> > compilation terminated.
> > btf.c:15:10: fatal error: bpf/bpf.h: No such file or directory
> >    15 | #include <bpf/bpf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o] Error 1
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o] Error 1
> > main.c:12:10: fatal error: bpf/bpf.h: No such file or directory
> >    12 | #include <bpf/bpf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o] Error 1
> > btf_dumper.c:12:10: fatal error: bpf/btf.h: No such file or directory
> >    12 | #include <bpf/btf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o] Error 1
> > common.c:24:10: fatal error: bpf/bpf.h: No such file or directory
> >    24 | #include <bpf/bpf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o] Error 1
> > make[2]: *** [Makefile.perf:1048: /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/bpftool] Error 2
> > make[1]: *** [Makefile.perf:240: sub-make] Error 2
> > make: *** [Makefile:113: install-bin] Error 2
> > make: Leaving directory '/var/home/acme/git/perf/tools/perf'
> >
> >  Performance counter stats for 'make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin':
> >
> >           6,965.78 msec task-clock:u              #    1.492 CPUs utilized
> >           6,937.93 msec cpu-clock:u               #    1.486 CPUs utilized
> >
> >        4.669198336 seconds time elapsed
> >
> >        4.015978000 seconds user
> >        3.202660000 seconds sys
> >
> >
> > 70: Event expansion for cgroups                                     : Ok
> > 88: perf all metricgroups test                                      : FAILED!
> > ⬢[acme@toolbox perf]$ find tools/ -name bpf.h
> > tools/include/uapi/linux/bpf.h
> > tools/lib/bpf/bpf.h
> > tools/perf/include/bpf/bpf.h
> > ⬢[acme@toolbox perf]$ find tools/ -name libbpf.h
> > tools/lib/bpf/libbpf.h
> > ⬢[acme@toolbox perf]$ find tools/perf/ -name gen.c
> > ⬢[acme@toolbox perf]$
> >
> > Before the merge, with pristine sources I wasn't getting this,
> > investigating now.
> >
> > ⬢[acme@toolbox perf]$ git show HEAD
> > commit e1498f18537a1639963370a4635c6fb99e7d672b (HEAD -> perf/core)
> > Merge: 32f7aa2731b24ad8 abfecb39092029c4
> > Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> > Date:   Thu Nov 4 14:32:11 2021 -0300
> >
> >     Merge remote-tracking branch 'torvalds/master' into perf/core
> >
> >     To pick up some tools/perf/ patches that went via tip/perf/core, such
> >     as:
> >
> >       tools/perf: Add mem_hops field in perf_mem_data_src structure
> >
> >     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> >
> > ⬢[acme@toolbox perf]$
> >
> > ⬢[acme@toolbox perf]$ git log --oneline -10 torvalds/master
> > abfecb39092029c4 (torvalds/master) Merge tag 'tty-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
> > 95faf6ba654dd334 Merge tag 'driver-core-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
> > 5c904c66ed4e86c3 Merge tag 'char-misc-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
> > 5cd4dc44b8a0f656 Merge tag 'staging-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
> > 048ff8629e117d84 Merge tag 'usb-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
> > 7ddb58cb0ecae8e8 Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
> > ce840177930f591a Merge tag 'defconfig-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> > d461e96cd22b5aeb Merge tag 'drivers-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> > ae45d84fc36d01dc Merge tag 'dt-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> > 2219b0ceefe835b9 Merge tag 'soc-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> > ⬢[acme@toolbox perf]$
> >
> > - Arnaldo

-- 

- Arnaldo

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 17:47 ` Andrii Nakryiko
  2021-11-04 18:09   ` Arnaldo Carvalho de Melo
@ 2021-11-04 18:10   ` Arnaldo Carvalho de Melo
  1 sibling, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-11-04 18:10 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: Quentin Monnet, Song Liu, Jiri Olsa, Namhyung Kim, bpf,
	Linux Kernel Mailing List

Em Thu, Nov 04, 2021 at 10:47:12AM -0700, Andrii Nakryiko escreveu:
> On Thu, Nov 4, 2021 at 10:38 AM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote:
 
> cc Quentin as well, might be related to recent Makefiles revamp for
> users of libbpf. But in bpf-next perf builds perfectly fine, so not
> sure.

You have to use:

  make BUILD_BPF_SKEL=1 O=/tmp/build/perf -C tools/perf install-bin

Song, I think its time we make BUILD_BPF_SKEL=1 the default, wdyt?

- Arnaldo
 
> >         I just did a merge with upstream and I'm getting this:
> >
> >   LINK    /tmp/build/perf/plugins/plugin_scsi.so
> >   INSTALL trace_plugins
> >
> > Auto-detecting system features:
> > ...                        libbfd: [ on  ]
> > ...        disassembler-four-args: [ on  ]
> > ...                          zlib: [ on  ]
> > ...                        libcap: [ on  ]
> > ...               clang-bpf-co-re: [ on  ]
> >
> >
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/
> >   INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/hashmap.h
> >   INSTALL /tmp/build/perf/util/bpf_skel/.tmp//libbpf//include/bpf/nlattr.h
> >   GEN     /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/bpf_helper_defs.h
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   MKDIR   /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_probes.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/xsk.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/nlattr.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf_errno.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/hashmap.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/str_error.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/netlink.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/btf_dump.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/bpf_prog_linfo.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/ringbuf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/strset.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/linker.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/gen_loader.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/relo_core.o
> >   LD      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/staticobjs/libbpf-in.o
> >   LINK    /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/libbpf/libbpf.a
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/json_writer.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o
> >   CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/disasm.o
> > gen.c:15:10: fatal error: bpf/bpf.h: No such file or directory
> >    15 | #include <bpf/bpf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o] Error 1
> > make[3]: *** Waiting for unfinished jobs....
> > xlated_dumper.c:10:10: fatal error: bpf/libbpf.h: No such file or directory
> >    10 | #include <bpf/libbpf.h>
> >       |          ^~~~~~~~~~~~~~
> > compilation terminated.
> > btf.c:15:10: fatal error: bpf/bpf.h: No such file or directory
> >    15 | #include <bpf/bpf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/xlated_dumper.o] Error 1
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf.o] Error 1
> > main.c:12:10: fatal error: bpf/bpf.h: No such file or directory
> >    12 | #include <bpf/bpf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/main.o] Error 1
> > btf_dumper.c:12:10: fatal error: bpf/btf.h: No such file or directory
> >    12 | #include <bpf/btf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/btf_dumper.o] Error 1
> > common.c:24:10: fatal error: bpf/bpf.h: No such file or directory
> >    24 | #include <bpf/bpf.h>
> >       |          ^~~~~~~~~~~
> > compilation terminated.
> > make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/common.o] Error 1
> > make[2]: *** [Makefile.perf:1048: /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/bpftool] Error 2
> > make[1]: *** [Makefile.perf:240: sub-make] Error 2
> > make: *** [Makefile:113: install-bin] Error 2
> > make: Leaving directory '/var/home/acme/git/perf/tools/perf'
> >
> >  Performance counter stats for 'make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin':
> >
> >           6,965.78 msec task-clock:u              #    1.492 CPUs utilized
> >           6,937.93 msec cpu-clock:u               #    1.486 CPUs utilized
> >
> >        4.669198336 seconds time elapsed
> >
> >        4.015978000 seconds user
> >        3.202660000 seconds sys
> >
> >
> > 70: Event expansion for cgroups                                     : Ok
> > 88: perf all metricgroups test                                      : FAILED!
> > ⬢[acme@toolbox perf]$ find tools/ -name bpf.h
> > tools/include/uapi/linux/bpf.h
> > tools/lib/bpf/bpf.h
> > tools/perf/include/bpf/bpf.h
> > ⬢[acme@toolbox perf]$ find tools/ -name libbpf.h
> > tools/lib/bpf/libbpf.h
> > ⬢[acme@toolbox perf]$ find tools/perf/ -name gen.c
> > ⬢[acme@toolbox perf]$
> >
> > Before the merge, with pristine sources I wasn't getting this,
> > investigating now.
> >
> > ⬢[acme@toolbox perf]$ git show HEAD
> > commit e1498f18537a1639963370a4635c6fb99e7d672b (HEAD -> perf/core)
> > Merge: 32f7aa2731b24ad8 abfecb39092029c4
> > Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> > Date:   Thu Nov 4 14:32:11 2021 -0300
> >
> >     Merge remote-tracking branch 'torvalds/master' into perf/core
> >
> >     To pick up some tools/perf/ patches that went via tip/perf/core, such
> >     as:
> >
> >       tools/perf: Add mem_hops field in perf_mem_data_src structure
> >
> >     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> >
> > ⬢[acme@toolbox perf]$
> >
> > ⬢[acme@toolbox perf]$ git log --oneline -10 torvalds/master
> > abfecb39092029c4 (torvalds/master) Merge tag 'tty-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
> > 95faf6ba654dd334 Merge tag 'driver-core-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
> > 5c904c66ed4e86c3 Merge tag 'char-misc-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
> > 5cd4dc44b8a0f656 Merge tag 'staging-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
> > 048ff8629e117d84 Merge tag 'usb-5.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
> > 7ddb58cb0ecae8e8 Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
> > ce840177930f591a Merge tag 'defconfig-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> > d461e96cd22b5aeb Merge tag 'drivers-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> > ae45d84fc36d01dc Merge tag 'dt-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> > 2219b0ceefe835b9 Merge tag 'soc-5.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
> > ⬢[acme@toolbox perf]$
> >
> > - Arnaldo

-- 

- Arnaldo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 17:56   ` Andrii Nakryiko
@ 2021-11-04 18:11     ` Arnaldo Carvalho de Melo
  2021-11-04 18:13       ` Song Liu
  0 siblings, 1 reply; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-11-04 18:11 UTC (permalink / raw)
  To: Andrii Nakryiko
  Cc: Song Liu, Jiri Olsa, Namhyung Kim, bpf, Linux Kernel Mailing List

Em Thu, Nov 04, 2021 at 10:56:26AM -0700, Andrii Nakryiko escreveu:
> On Thu, Nov 4, 2021 at 10:49 AM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote:

> > Em Thu, Nov 04, 2021 at 02:37:57PM -0300, Arnaldo Carvalho de Melo escreveu:
> > >
> > > Hi Song,
> > >
> > >       I just did a merge with upstream and I'm getting this:
> > >
> > >   LINK    /tmp/build/perf/plugins/plugin_scsi.so
> > >   INSTALL trace_plugins
> >
> > To clarify, the command line to build perf that results in this problem
> > is:
> >
> >   make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin
> 
> Oh, I dropped CORESIGN and left BUILD_BPF_SKEL=1 and yeah, I see the
> build failure. I do think now that it's related to the recent Makefile
> revamp effort. Quentin, PTAL.
> 
> On the side note, why BUILD_BPF_SKEL=1 is not a default, we might have
> caught this sooner. Is there any reason not to flip the default?

I asked Song in the past about this, and asked again on another reply to
this thread, I think it should be the default.

Song, Namhyung? You're the skel guys (so far) :-)

- Arnaldo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 18:11     ` Arnaldo Carvalho de Melo
@ 2021-11-04 18:13       ` Song Liu
  2021-11-04 20:33         ` Namhyung Kim
  0 siblings, 1 reply; 14+ messages in thread
From: Song Liu @ 2021-11-04 18:13 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Andrii Nakryiko, Jiri Olsa, Namhyung Kim, bpf, Linux Kernel Mailing List



> On Nov 4, 2021, at 11:11 AM, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> 
> Em Thu, Nov 04, 2021 at 10:56:26AM -0700, Andrii Nakryiko escreveu:
>> On Thu, Nov 4, 2021 at 10:49 AM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote:
> 
>>> Em Thu, Nov 04, 2021 at 02:37:57PM -0300, Arnaldo Carvalho de Melo escreveu:
>>>> 
>>>> Hi Song,
>>>> 
>>>>      I just did a merge with upstream and I'm getting this:
>>>> 
>>>>  LINK    /tmp/build/perf/plugins/plugin_scsi.so
>>>>  INSTALL trace_plugins
>>> 
>>> To clarify, the command line to build perf that results in this problem
>>> is:
>>> 
>>>  make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin
>> 
>> Oh, I dropped CORESIGN and left BUILD_BPF_SKEL=1 and yeah, I see the
>> build failure. I do think now that it's related to the recent Makefile
>> revamp effort. Quentin, PTAL.
>> 
>> On the side note, why BUILD_BPF_SKEL=1 is not a default, we might have
>> caught this sooner. Is there any reason not to flip the default?
> 
> I asked Song in the past about this, and asked again on another reply to
> this thread, I think it should be the default.
> 
> Song, Namhyung? You're the skel guys (so far) :-)

Yeah, let's make it default. 

Song


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 18:09   ` Arnaldo Carvalho de Melo
@ 2021-11-04 18:15     ` Quentin Monnet
  2021-11-04 20:15       ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 14+ messages in thread
From: Quentin Monnet @ 2021-11-04 18:15 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Andrii Nakryiko
  Cc: Arnaldo Carvalho de Melo, Song Liu, Jiri Olsa, Namhyung Kim, bpf,
	Linux Kernel Mailing List

2021-11-04 15:09 UTC-0300 ~ Arnaldo Carvalho de Melo <acme@kernel.org>
> Em Thu, Nov 04, 2021 at 10:47:12AM -0700, Andrii Nakryiko escreveu:
>> On Thu, Nov 4, 2021 at 10:38 AM Arnaldo Carvalho de Melo
>> <arnaldo.melo@gmail.com> wrote:
>>>
>>>
>>> Hi Song,
>>>
>>
>> cc Quentin as well, might be related to recent Makefiles revamp for
>> users of libbpf. But in bpf-next perf builds perfectly fine, so not
>> sure.
> 
> This did the trick:
> 
> ⬢[acme@toolbox perf]$ git show
> commit 504afe6757ec646539ca3b4aa0431820e8c92b45 (HEAD -> perf/core)
> Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> Date:   Thu Nov 4 14:58:56 2021 -0300
> 
>     Revert "bpftool: Remove Makefile dep. on $(LIBBPF) for $(LIBBPF_INTERNAL_HDRS)"
> 
>     This reverts commit 8b6c46241c774c83998092a4eafe40f054568881.
> 
>     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
> diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
> index c0c30e56988f2cbe..c5ad996ee95d4e87 100644
> --- a/tools/bpf/bpftool/Makefile
> +++ b/tools/bpf/bpftool/Makefile
> @@ -39,14 +39,14 @@ ifeq ($(BPFTOOL_VERSION),)
>  BPFTOOL_VERSION := $(shell make -rR --no-print-directory -sC ../../.. kernelversion)
>  endif
> 
> -$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT) $(LIBBPF_HDRS_DIR):
> +$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT):
>         $(QUIET_MKDIR)mkdir -p $@
> 
>  $(LIBBPF): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_OUTPUT)
>         $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_OUTPUT) \
>                 DESTDIR=$(LIBBPF_DESTDIR) prefix= $(LIBBPF) install_headers
> 
> -$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_DIR)
> +$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h $(LIBBPF)
>         $(call QUIET_INSTALL, $@)
>         $(Q)install -m 644 -t $(LIBBPF_HDRS_DIR) $<


Interesting. I needed that patch because otherwise I'd get errors when
compiling bpftool after the switch to libbpf's hashmap implementation.
For the current breakage, it could be a matter of how we pass variables
when descending into bpftool/ from perf's Makefile.perf. I'll try to
look at this in details, and to experiment tonight, if I can. (Thanks
Andrii for the CC!)

Thanks,
Quentin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 18:15     ` Quentin Monnet
@ 2021-11-04 20:15       ` Arnaldo Carvalho de Melo
  2021-11-04 20:45         ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-11-04 20:15 UTC (permalink / raw)
  To: Quentin Monnet
  Cc: Andrii Nakryiko, Arnaldo Carvalho de Melo, Song Liu, Jiri Olsa,
	Namhyung Kim, bpf, Linux Kernel Mailing List

Em Thu, Nov 04, 2021 at 06:15:57PM +0000, Quentin Monnet escreveu:
> 2021-11-04 15:09 UTC-0300 ~ Arnaldo Carvalho de Melo <acme@kernel.org>
> > Em Thu, Nov 04, 2021 at 10:47:12AM -0700, Andrii Nakryiko escreveu:
> >> On Thu, Nov 4, 2021 at 10:38 AM Arnaldo Carvalho de Melo
> >> <arnaldo.melo@gmail.com> wrote:
> >>>
> >>>
> >>> Hi Song,
> >>>
> >>
> >> cc Quentin as well, might be related to recent Makefiles revamp for
> >> users of libbpf. But in bpf-next perf builds perfectly fine, so not
> >> sure.
> > 
> > This did the trick:
> > 
> > ⬢[acme@toolbox perf]$ git show
> > commit 504afe6757ec646539ca3b4aa0431820e8c92b45 (HEAD -> perf/core)
> > Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> > Date:   Thu Nov 4 14:58:56 2021 -0300
> > 
> >     Revert "bpftool: Remove Makefile dep. on $(LIBBPF) for $(LIBBPF_INTERNAL_HDRS)"
> > 
> >     This reverts commit 8b6c46241c774c83998092a4eafe40f054568881.
> > 
> >     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> > 
> > diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
> > index c0c30e56988f2cbe..c5ad996ee95d4e87 100644
> > --- a/tools/bpf/bpftool/Makefile
> > +++ b/tools/bpf/bpftool/Makefile
> > @@ -39,14 +39,14 @@ ifeq ($(BPFTOOL_VERSION),)
> >  BPFTOOL_VERSION := $(shell make -rR --no-print-directory -sC ../../.. kernelversion)
> >  endif
> > 
> > -$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT) $(LIBBPF_HDRS_DIR):
> > +$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT):
> >         $(QUIET_MKDIR)mkdir -p $@
> > 
> >  $(LIBBPF): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_OUTPUT)
> >         $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_OUTPUT) \
> >                 DESTDIR=$(LIBBPF_DESTDIR) prefix= $(LIBBPF) install_headers
> > 
> > -$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_DIR)
> > +$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h $(LIBBPF)
> >         $(call QUIET_INSTALL, $@)
> >         $(Q)install -m 644 -t $(LIBBPF_HDRS_DIR) $<
> 
> 
> Interesting. I needed that patch because otherwise I'd get errors when
> compiling bpftool after the switch to libbpf's hashmap implementation.
> For the current breakage, it could be a matter of how we pass variables
> when descending into bpftool/ from perf's Makefile.perf. I'll try to
> look at this in details, and to experiment tonight, if I can. (Thanks
> Andrii for the CC!)

yeah, if we pass the location for those headers from the perf side, it
should work.

Extra info: if libbpf-devel is installed, it "builds", well, built
before the merge, as the one available for fedora 34 is:

libbpf-devel-2:0.4.0-1.fc34.x86_64

after installing it, on the merged tree, with the above revert, I get:

  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/disasm.o
btf.c: In function ‘dump_btf_type’:
btf.c:328:47: warning: implicit declaration of function ‘btf__type_cnt’ [-Wimplicit-function-declaration]
  328 |                                 if (v->type < btf__type_cnt(btf)) {
      |                                               ^~~~~~~~~~~~~
btf.c:328:45: warning: comparison of integer expressions of different signedness: ‘__u32’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
  328 |                                 if (v->type < btf__type_cnt(btf)) {
      |                                             ^
btf.c: In function ‘do_dump’:
btf.c:591:23: warning: implicit declaration of function ‘btf__load_from_kernel_by_id_split’ [-Wimplicit-function-declaration]
  591 |                 btf = btf__load_from_kernel_by_id_split(btf_id, base_btf);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
btf.c:591:21: warning: assignment to ‘struct btf *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  591 |                 btf = btf__load_from_kernel_by_id_split(btf_id, base_btf);
      |                     ^
btf_dumper.c: In function ‘dump_prog_id_as_func_ptr’:
btf_dumper.c:69:20: warning: implicit declaration of function ‘btf__load_from_kernel_by_id’ [-Wimplicit-function-declaration]
   69 |         prog_btf = btf__load_from_kernel_by_id(info->btf_id);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
btf_dumper.c:69:18: warning: assignment to ‘struct btf *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
   69 |         prog_btf = btf__load_from_kernel_by_id(info->btf_id);
      |                  ^
  LINK    /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/bpftool


If I revert the above revert I get a more catastrophic breakage:

  CC      /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/disasm.o
btf.c: In function ‘dump_btf_type’:
btf.c:328:47: warning: implicit declaration of function ‘btf__type_cnt’ [-Wimplicit-function-declaration]
  328 |                                 if (v->type < btf__type_cnt(btf)) {
      |                                               ^~~~~~~~~~~~~
btf.c:328:45: warning: comparison of integer expressions of different signedness: ‘__u32’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
  328 |                                 if (v->type < btf__type_cnt(btf)) {
      |                                             ^
btf.c: In function ‘do_dump’:
btf.c:591:23: warning: implicit declaration of function ‘btf__load_from_kernel_by_id_split’ [-Wimplicit-function-declaration]
  591 |                 btf = btf__load_from_kernel_by_id_split(btf_id, base_btf);
      |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
btf.c:591:21: warning: assignment to ‘struct btf *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  591 |                 btf = btf__load_from_kernel_by_id_split(btf_id, base_btf);
      |                     ^
btf_dumper.c: In function ‘dump_prog_id_as_func_ptr’:
btf_dumper.c:69:20: warning: implicit declaration of function ‘btf__load_from_kernel_by_id’ [-Wimplicit-function-declaration]
   69 |         prog_btf = btf__load_from_kernel_by_id(info->btf_id);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~
btf_dumper.c:69:18: warning: assignment to ‘struct btf *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
   69 |         prog_btf = btf__load_from_kernel_by_id(info->btf_id);
      |                  ^
gen.c: In function ‘codegen_datasecs’:
gen.c:214:17: warning: implicit declaration of function ‘btf__type_cnt’ [-Wimplicit-function-declaration]
  214 |         int n = btf__type_cnt(btf);
      |                 ^~~~~~~~~~~~~
In file included from /usr/include/bpf/bpf.h:31,
                 from gen.c:15:
gen.c: In function ‘gen_trace’:
gen.c:489:29: error: variable ‘opts’ has initializer but incomplete type
  489 |         DECLARE_LIBBPF_OPTS(gen_loader_opts, opts);
      |                             ^~~~~~~~~~~~~~~
gen.c:489:9: error: invalid application of ‘sizeof’ to incomplete type ‘struct gen_loader_opts’
  489 |         DECLARE_LIBBPF_OPTS(gen_loader_opts, opts);
      |         ^~~~~~~~~~~~~~~~~~~
gen.c:489:9: error: ‘struct gen_loader_opts’ has no member named ‘sz’
  489 |         DECLARE_LIBBPF_OPTS(gen_loader_opts, opts);
      |         ^~~~~~~~~~~~~~~~~~~
gen.c:489:9: error: invalid application of ‘sizeof’ to incomplete type ‘struct gen_loader_opts’
  489 |         DECLARE_LIBBPF_OPTS(gen_loader_opts, opts);
      |         ^~~~~~~~~~~~~~~~~~~
gen.c:489:9: warning: excess elements in struct initializer
  489 |         DECLARE_LIBBPF_OPTS(gen_loader_opts, opts);
      |         ^~~~~~~~~~~~~~~~~~~
gen.c:489:9: note: (near initialization for ‘(anonymous)’)
In file included from /usr/include/bpf/bpf.h:31,
                 from gen.c:15:
gen.c:489:9: error: invalid use of undefined type ‘struct gen_loader_opts’
  489 |         DECLARE_LIBBPF_OPTS(gen_loader_opts, opts);
      |         ^~~~~~~~~~~~~~~~~~~
gen.c:489:46: error: storage size of ‘opts’ isn’t known
  489 |         DECLARE_LIBBPF_OPTS(gen_loader_opts, opts);
      |                                              ^~~~
gen.c:494:15: warning: implicit declaration of function ‘bpf_object__gen_loader’; did you mean ‘bpf_object__unload’? [-Wimplicit-function-declaration]
  494 |         err = bpf_object__gen_loader(obj, &opts);
      |               ^~~~~~~~~~~~~~~~~~~~~~
      |               bpf_object__unload
gen.c:556:29: warning: implicit declaration of function ‘bpf_map__initial_value’; did you mean ‘bpf_map__set_initial_value’? [-Wimplicit-function-declaration]
  556 |                 mmap_data = bpf_map__initial_value(map, &mmap_size);
      |                             ^~~~~~~~~~~~~~~~~~~~~~
      |                             bpf_map__set_initial_value
gen.c:556:27: warning: assignment to ‘const void *’ from ‘int’ makes pointer from integer without a cast [-Wint-conversion]
  556 |                 mmap_data = bpf_map__initial_value(map, &mmap_size);
      |                           ^
make[3]: *** [Makefile:213: /tmp/build/perf/util/bpf_skel/.tmp//bootstrap/gen.o] Error 1
make[2]: *** [Makefile.perf:1048: /tmp/build/perf/util/bpf_skel/.tmp/bootstrap/bpftool] Error 2
make[1]: *** [Makefile.perf:240: sub-make] Error 2
make: *** [Makefile:113: install-bin] Error 2
make: Leaving directory '/var/home/acme/git/perf/tools/perf'

 Performance counter stats for 'make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin':

          7,103.73 msec task-clock:u              #    1.476 CPUs utilized
          7,074.44 msec cpu-clock:u               #    1.469 CPUs utilized

       4.814384825 seconds time elapsed

       3.917534000 seconds user
       3.433976000 seconds sys


70: Event expansion for cgroups                                     : Ok
88: perf all metricgroups test                                      : FAILED!
⬢[acme@toolbox perf]$


Kinda expected, as its an old libbpf version, the one in fedora 34. I'll
remove it, and try to fix it on the perf side, i.e. telling where to
find bpf/bpf.h, bpf/libbpf.h.

- Arnaldo



^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 18:13       ` Song Liu
@ 2021-11-04 20:33         ` Namhyung Kim
  2021-11-04 20:42           ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 14+ messages in thread
From: Namhyung Kim @ 2021-11-04 20:33 UTC (permalink / raw)
  To: Song Liu
  Cc: Arnaldo Carvalho de Melo, Andrii Nakryiko, Jiri Olsa, bpf,
	Linux Kernel Mailing List

Hello,

On Thu, Nov 4, 2021 at 11:13 AM Song Liu <songliubraving@fb.com> wrote:
>
>
>
> > On Nov 4, 2021, at 11:11 AM, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> >
> > Em Thu, Nov 04, 2021 at 10:56:26AM -0700, Andrii Nakryiko escreveu:
> >> On Thu, Nov 4, 2021 at 10:49 AM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote:
> >
> >>> Em Thu, Nov 04, 2021 at 02:37:57PM -0300, Arnaldo Carvalho de Melo escreveu:
> >>>>
> >>>> Hi Song,
> >>>>
> >>>>      I just did a merge with upstream and I'm getting this:
> >>>>
> >>>>  LINK    /tmp/build/perf/plugins/plugin_scsi.so
> >>>>  INSTALL trace_plugins
> >>>
> >>> To clarify, the command line to build perf that results in this problem
> >>> is:
> >>>
> >>>  make -k BUILD_BPF_SKEL=1 CORESIGHT=1 PYTHON=python3 O=/tmp/build/perf -C tools/perf install-bin
> >>
> >> Oh, I dropped CORESIGN and left BUILD_BPF_SKEL=1 and yeah, I see the
> >> build failure. I do think now that it's related to the recent Makefile
> >> revamp effort. Quentin, PTAL.
> >>
> >> On the side note, why BUILD_BPF_SKEL=1 is not a default, we might have
> >> caught this sooner. Is there any reason not to flip the default?
> >
> > I asked Song in the past about this, and asked again on another reply to
> > this thread, I think it should be the default.
> >
> > Song, Namhyung? You're the skel guys (so far) :-)
>
> Yeah, let's make it default.

Then it'd require 'clang' for the perf build.  Maybe we can check
the availability of the compiler and disable it back if not.

Thanks,
Namhyung

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 20:33         ` Namhyung Kim
@ 2021-11-04 20:42           ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-11-04 20:42 UTC (permalink / raw)
  To: Namhyung Kim
  Cc: Song Liu, Andrii Nakryiko, Jiri Olsa, bpf, Linux Kernel Mailing List

Em Thu, Nov 04, 2021 at 01:33:20PM -0700, Namhyung Kim escreveu:
> On Thu, Nov 4, 2021 at 11:13 AM Song Liu <songliubraving@fb.com> wrote:
> > > On Nov 4, 2021, at 11:11 AM, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> > > Em Thu, Nov 04, 2021 at 10:56:26AM -0700, Andrii Nakryiko escreveu:
> > >> On the side note, why BUILD_BPF_SKEL=1 is not a default, we might have
> > >> caught this sooner. Is there any reason not to flip the default?

> > > I asked Song in the past about this, and asked again on another reply to
> > > this thread, I think it should be the default.

> > > Song, Namhyung? You're the skel guys (so far) :-)

> > Yeah, let's make it default.
 
> Then it'd require 'clang' for the perf build.  Maybe we can check
> the availability of the compiler and disable it back if not.

Right, an extra feature check.

- Arnaldo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 20:15       ` Arnaldo Carvalho de Melo
@ 2021-11-04 20:45         ` Arnaldo Carvalho de Melo
  2021-11-05  2:03           ` Quentin Monnet
  0 siblings, 1 reply; 14+ messages in thread
From: Arnaldo Carvalho de Melo @ 2021-11-04 20:45 UTC (permalink / raw)
  To: Quentin Monnet
  Cc: Andrii Nakryiko, Song Liu, Jiri Olsa, Namhyung Kim, bpf,
	Linux Kernel Mailing List

Em Thu, Nov 04, 2021 at 05:15:20PM -0300, Arnaldo Carvalho de Melo escreveu:
> Em Thu, Nov 04, 2021 at 06:15:57PM +0000, Quentin Monnet escreveu:
> > 2021-11-04 15:09 UTC-0300 ~ Arnaldo Carvalho de Melo <acme@kernel.org>
> > > Em Thu, Nov 04, 2021 at 10:47:12AM -0700, Andrii Nakryiko escreveu:
> > >> On Thu, Nov 4, 2021 at 10:38 AM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote:
> > >> cc Quentin as well, might be related to recent Makefiles revamp for
> > >> users of libbpf. But in bpf-next perf builds perfectly fine, so not
> > >> sure.

> > > This did the trick:

> > > ⬢[acme@toolbox perf]$ git show
> > > commit 504afe6757ec646539ca3b4aa0431820e8c92b45 (HEAD -> perf/core)
> > > Author: Arnaldo Carvalho de Melo <acme@redhat.com>
> > > Date:   Thu Nov 4 14:58:56 2021 -0300

> > >     Revert "bpftool: Remove Makefile dep. on $(LIBBPF) for $(LIBBPF_INTERNAL_HDRS)"

> > >     This reverts commit 8b6c46241c774c83998092a4eafe40f054568881.

> > >     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

> > > diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
> > > index c0c30e56988f2cbe..c5ad996ee95d4e87 100644
> > > --- a/tools/bpf/bpftool/Makefile
> > > +++ b/tools/bpf/bpftool/Makefile
> > > @@ -39,14 +39,14 @@ ifeq ($(BPFTOOL_VERSION),)
> > >  BPFTOOL_VERSION := $(shell make -rR --no-print-directory -sC ../../.. kernelversion)
> > >  endif

> > > -$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT) $(LIBBPF_HDRS_DIR):
> > > +$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT):
> > >         $(QUIET_MKDIR)mkdir -p $@

> > >  $(LIBBPF): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_OUTPUT)
> > >         $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_OUTPUT) \
> > >                 DESTDIR=$(LIBBPF_DESTDIR) prefix= $(LIBBPF) install_headers

> > > -$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_DIR)
> > > +$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h $(LIBBPF)
> > >         $(call QUIET_INSTALL, $@)
> > >         $(Q)install -m 644 -t $(LIBBPF_HDRS_DIR) $<

> > Interesting. I needed that patch because otherwise I'd get errors when
> > compiling bpftool after the switch to libbpf's hashmap implementation.
> > For the current breakage, it could be a matter of how we pass variables
> > when descending into bpftool/ from perf's Makefile.perf. I'll try to
> > look at this in details, and to experiment tonight, if I can. (Thanks
> > Andrii for the CC!)
 
> yeah, if we pass the location for those headers from the perf side, it
> should work.

But it isn't obvious how perf should communicate to bpftool where to
find bpf/bpf.h for the bootstrap make target, which seems something
bpftool should know.

Anyway, I'm calling it a day, will get back to this tomorrow, if you
don't beat me to it.

- Arnaldo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream
  2021-11-04 20:45         ` Arnaldo Carvalho de Melo
@ 2021-11-05  2:03           ` Quentin Monnet
  0 siblings, 0 replies; 14+ messages in thread
From: Quentin Monnet @ 2021-11-05  2:03 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Andrii Nakryiko, Song Liu, Jiri Olsa, Namhyung Kim, bpf,
	Linux Kernel Mailing List

2021-11-04 17:45 UTC-0300 ~ Arnaldo Carvalho de Melo <acme@kernel.org>
> Em Thu, Nov 04, 2021 at 05:15:20PM -0300, Arnaldo Carvalho de Melo escreveu:
>> Em Thu, Nov 04, 2021 at 06:15:57PM +0000, Quentin Monnet escreveu:
>>> 2021-11-04 15:09 UTC-0300 ~ Arnaldo Carvalho de Melo <acme@kernel.org>
>>>> Em Thu, Nov 04, 2021 at 10:47:12AM -0700, Andrii Nakryiko escreveu:
>>>>> On Thu, Nov 4, 2021 at 10:38 AM Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote:
>>>>> cc Quentin as well, might be related to recent Makefiles revamp for
>>>>> users of libbpf. But in bpf-next perf builds perfectly fine, so not
>>>>> sure.
> 
>>>> This did the trick:
> 
>>>> ⬢[acme@toolbox perf]$ git show
>>>> commit 504afe6757ec646539ca3b4aa0431820e8c92b45 (HEAD -> perf/core)
>>>> Author: Arnaldo Carvalho de Melo <acme@redhat.com>
>>>> Date:   Thu Nov 4 14:58:56 2021 -0300
> 
>>>>     Revert "bpftool: Remove Makefile dep. on $(LIBBPF) for $(LIBBPF_INTERNAL_HDRS)"
> 
>>>>     This reverts commit 8b6c46241c774c83998092a4eafe40f054568881.
> 
>>>>     Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
> 
>>>> diff --git a/tools/bpf/bpftool/Makefile b/tools/bpf/bpftool/Makefile
>>>> index c0c30e56988f2cbe..c5ad996ee95d4e87 100644
>>>> --- a/tools/bpf/bpftool/Makefile
>>>> +++ b/tools/bpf/bpftool/Makefile
>>>> @@ -39,14 +39,14 @@ ifeq ($(BPFTOOL_VERSION),)
>>>>  BPFTOOL_VERSION := $(shell make -rR --no-print-directory -sC ../../.. kernelversion)
>>>>  endif
> 
>>>> -$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT) $(LIBBPF_HDRS_DIR):
>>>> +$(LIBBPF_OUTPUT) $(BOOTSTRAP_OUTPUT) $(LIBBPF_BOOTSTRAP_OUTPUT):
>>>>         $(QUIET_MKDIR)mkdir -p $@
> 
>>>>  $(LIBBPF): $(wildcard $(BPF_DIR)/*.[ch] $(BPF_DIR)/Makefile) | $(LIBBPF_OUTPUT)
>>>>         $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(LIBBPF_OUTPUT) \
>>>>                 DESTDIR=$(LIBBPF_DESTDIR) prefix= $(LIBBPF) install_headers
> 
>>>> -$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h | $(LIBBPF_HDRS_DIR)
>>>> +$(LIBBPF_INTERNAL_HDRS): $(LIBBPF_HDRS_DIR)/%.h: $(BPF_DIR)/%.h $(LIBBPF)
>>>>         $(call QUIET_INSTALL, $@)
>>>>         $(Q)install -m 644 -t $(LIBBPF_HDRS_DIR) $<
> 
>>> Interesting. I needed that patch because otherwise I'd get errors when
>>> compiling bpftool after the switch to libbpf's hashmap implementation.
>>> For the current breakage, it could be a matter of how we pass variables
>>> when descending into bpftool/ from perf's Makefile.perf. I'll try to
>>> look at this in details, and to experiment tonight, if I can. (Thanks
>>> Andrii for the CC!)
>  
>> yeah, if we pass the location for those headers from the perf side, it
>> should work.
> 
> But it isn't obvious how perf should communicate to bpftool where to
> find bpf/bpf.h for the bootstrap make target, which seems something
> bpftool should know.
> 
> Anyway, I'm calling it a day, will get back to this tomorrow, if you
> don't beat me to it.

Found it. The issue is on bpftool's side.

Background context: I've recently changed the way that bpftool (and
other tools) include libbpf's headers: now they "install" the API
headers locally, instead of including them directly from libbpf's source
directory. Looks like I forgot perf's Makefile in the process by the
way, I've sent a patch to address this (but this is not the cause of the
breakage).

For bpftool, we need to build two versions of libbpf, the bootstrap
version (for bootstrap bpftool) and the "regular" one. But I made the
Makefile export the API headers from libbpf only once, for the "regular"
build, and not for the bootstrap build. For bpftool it doesn't matter,
because the bootstrap bpftool build always occurs after libbpf has been
built and its headers have been exported.

For other tools relying on bootstrap bpftool only, like perf, this means
that the libbpf headers are not installed. For some time, the build was
still working, because the regular build for libbpf (with its export of
the headers) was passed as a dependency to another step required by the
bootstrap bpftool, such that the headers were (involuntarily) installed
for bootstrap bpftool. This was changed in commit 8b6c46241c77, the one
that you proposed to revert. That commit removes the dependency on the
"regular" libbpf build for the bootstrap bpftool. It's cleaner, but it
breaks the build for tools that just need boostrap bpftool.

Anyway. I just sent a fix, in which I propose to also install libbpf's
headers for the bootstrap build.

Quentin

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2021-11-05  2:03 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-04 17:37 perf build broken looking for bpf/{libbpf,bpf}.h after merge with upstream Arnaldo Carvalho de Melo
2021-11-04 17:47 ` Andrii Nakryiko
2021-11-04 18:09   ` Arnaldo Carvalho de Melo
2021-11-04 18:15     ` Quentin Monnet
2021-11-04 20:15       ` Arnaldo Carvalho de Melo
2021-11-04 20:45         ` Arnaldo Carvalho de Melo
2021-11-05  2:03           ` Quentin Monnet
2021-11-04 18:10   ` Arnaldo Carvalho de Melo
2021-11-04 17:49 ` Arnaldo Carvalho de Melo
2021-11-04 17:56   ` Andrii Nakryiko
2021-11-04 18:11     ` Arnaldo Carvalho de Melo
2021-11-04 18:13       ` Song Liu
2021-11-04 20:33         ` Namhyung Kim
2021-11-04 20:42           ` Arnaldo Carvalho de Melo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).