[v1,0/3] Assume libbpf 1.0 in build

Message ID 20230109203424.1157561-1-irogers@google.com
Headers
Series Assume libbpf 1.0 in build |

Message

Ian Rogers Jan. 9, 2023, 8:34 p.m. UTC
  libbpf 1.0 was a major change in API. Perf has partially supported
older libbpf's but an implementation may be:
..
       pr_err("%s: not support, update libbpf\n", __func__);
       return -ENOTSUP;
..

Rather than build a binary that would fail at runtime it is
preferrential just to build libbpf statically and link against
that. The static version is in the kernel tools tree and newer than
1.0.

These patches change the libbpf test to only pass when at least
version 1.0 is installed, then remove the conditional build and
feature logic.

The issue is discussed here:
https://lore.kernel.org/lkml/20230106151320.619514-1-irogers@google.com/

Ian Rogers (3):
  tools build: Pass libbpf feature only if libbpf 1.0+
  perf build: Remove libbpf pre-1.0 feature tests
  perf bpf: Remove pre libbpf 1.0 conditional logic

 tools/build/feature/Makefile                  |  7 --
 .../feature/test-libbpf-bpf_map_create.c      |  8 ---
 .../test-libbpf-bpf_object__next_map.c        |  8 ---
 .../test-libbpf-bpf_object__next_program.c    |  8 ---
 .../build/feature/test-libbpf-bpf_prog_load.c |  9 ---
 .../test-libbpf-bpf_program__set_insns.c      |  8 ---
 .../test-libbpf-btf__load_from_kernel_by_id.c |  8 ---
 .../build/feature/test-libbpf-btf__raw_data.c |  8 ---
 tools/build/feature/test-libbpf.c             |  4 ++
 tools/perf/Makefile.config                    | 37 +----------
 tools/perf/util/bpf-event.c                   | 66 -------------------
 tools/perf/util/bpf-loader.c                  | 18 -----
 tools/perf/util/bpf_counter.c                 | 18 -----
 13 files changed, 5 insertions(+), 202 deletions(-)
 delete mode 100644 tools/build/feature/test-libbpf-bpf_map_create.c
 delete mode 100644 tools/build/feature/test-libbpf-bpf_object__next_map.c
 delete mode 100644 tools/build/feature/test-libbpf-bpf_object__next_program.c
 delete mode 100644 tools/build/feature/test-libbpf-bpf_prog_load.c
 delete mode 100644 tools/build/feature/test-libbpf-bpf_program__set_insns.c
 delete mode 100644 tools/build/feature/test-libbpf-btf__load_from_kernel_by_id.c
 delete mode 100644 tools/build/feature/test-libbpf-btf__raw_data.c
  

Comments

Jiri Olsa Jan. 10, 2023, 12:34 p.m. UTC | #1
On Mon, Jan 09, 2023 at 12:34:21PM -0800, Ian Rogers wrote:
> libbpf 1.0 was a major change in API. Perf has partially supported
> older libbpf's but an implementation may be:
> ..
>        pr_err("%s: not support, update libbpf\n", __func__);
>        return -ENOTSUP;
> ..
> 
> Rather than build a binary that would fail at runtime it is
> preferrential just to build libbpf statically and link against
> that. The static version is in the kernel tools tree and newer than
> 1.0.
> 
> These patches change the libbpf test to only pass when at least
> version 1.0 is installed, then remove the conditional build and
> feature logic.
> 
> The issue is discussed here:
> https://lore.kernel.org/lkml/20230106151320.619514-1-irogers@google.com/
> 
> Ian Rogers (3):
>   tools build: Pass libbpf feature only if libbpf 1.0+
>   perf build: Remove libbpf pre-1.0 feature tests
>   perf bpf: Remove pre libbpf 1.0 conditional logic
> 
>  tools/build/feature/Makefile                  |  7 --
>  .../feature/test-libbpf-bpf_map_create.c      |  8 ---
>  .../test-libbpf-bpf_object__next_map.c        |  8 ---
>  .../test-libbpf-bpf_object__next_program.c    |  8 ---
>  .../build/feature/test-libbpf-bpf_prog_load.c |  9 ---
>  .../test-libbpf-bpf_program__set_insns.c      |  8 ---
>  .../test-libbpf-btf__load_from_kernel_by_id.c |  8 ---
>  .../build/feature/test-libbpf-btf__raw_data.c |  8 ---
>  tools/build/feature/test-libbpf.c             |  4 ++
>  tools/perf/Makefile.config                    | 37 +----------
>  tools/perf/util/bpf-event.c                   | 66 -------------------
>  tools/perf/util/bpf-loader.c                  | 18 -----
>  tools/perf/util/bpf_counter.c                 | 18 -----
>  13 files changed, 5 insertions(+), 202 deletions(-)

nice, I like that.. I was able to build perf on fedora
with (dynamic) and without (static) libbpf 1.0 

I hope supporting allowing dynamic link just with libbpf 1.0
won't mess up backport world too much.. cc-ing Michael

other than that looks ok to me

Acked/Tested-by: Jiri Olsa <jolsa@kernel.org>

also for the 2 dependency patches

thanks,
jirka

>  delete mode 100644 tools/build/feature/test-libbpf-bpf_map_create.c
>  delete mode 100644 tools/build/feature/test-libbpf-bpf_object__next_map.c
>  delete mode 100644 tools/build/feature/test-libbpf-bpf_object__next_program.c
>  delete mode 100644 tools/build/feature/test-libbpf-bpf_prog_load.c
>  delete mode 100644 tools/build/feature/test-libbpf-bpf_program__set_insns.c
>  delete mode 100644 tools/build/feature/test-libbpf-btf__load_from_kernel_by_id.c
>  delete mode 100644 tools/build/feature/test-libbpf-btf__raw_data.c
> 
> -- 
> 2.39.0.314.g84b9a713c41-goog
>
  
Arnaldo Carvalho de Melo Jan. 10, 2023, 1:36 p.m. UTC | #2
Em Tue, Jan 10, 2023 at 01:34:56PM +0100, Jiri Olsa escreveu:
> On Mon, Jan 09, 2023 at 12:34:21PM -0800, Ian Rogers wrote:
> > libbpf 1.0 was a major change in API. Perf has partially supported
> > older libbpf's but an implementation may be:
> > ..
> >        pr_err("%s: not support, update libbpf\n", __func__);
> >        return -ENOTSUP;
> > ..
> > 
> > Rather than build a binary that would fail at runtime it is
> > preferrential just to build libbpf statically and link against
> > that. The static version is in the kernel tools tree and newer than
> > 1.0.
> > 
> > These patches change the libbpf test to only pass when at least
> > version 1.0 is installed, then remove the conditional build and
> > feature logic.
> > 
> > The issue is discussed here:
> > https://lore.kernel.org/lkml/20230106151320.619514-1-irogers@google.com/
> > 
> > Ian Rogers (3):
> >   tools build: Pass libbpf feature only if libbpf 1.0+
> >   perf build: Remove libbpf pre-1.0 feature tests
> >   perf bpf: Remove pre libbpf 1.0 conditional logic
> > 
> >  tools/build/feature/Makefile                  |  7 --
> >  .../feature/test-libbpf-bpf_map_create.c      |  8 ---
> >  .../test-libbpf-bpf_object__next_map.c        |  8 ---
> >  .../test-libbpf-bpf_object__next_program.c    |  8 ---
> >  .../build/feature/test-libbpf-bpf_prog_load.c |  9 ---
> >  .../test-libbpf-bpf_program__set_insns.c      |  8 ---
> >  .../test-libbpf-btf__load_from_kernel_by_id.c |  8 ---
> >  .../build/feature/test-libbpf-btf__raw_data.c |  8 ---
> >  tools/build/feature/test-libbpf.c             |  4 ++
> >  tools/perf/Makefile.config                    | 37 +----------
> >  tools/perf/util/bpf-event.c                   | 66 -------------------
> >  tools/perf/util/bpf-loader.c                  | 18 -----
> >  tools/perf/util/bpf_counter.c                 | 18 -----
> >  13 files changed, 5 insertions(+), 202 deletions(-)
> 
> nice, I like that.. I was able to build perf on fedora
> with (dynamic) and without (static) libbpf 1.0 
> 
> I hope supporting allowing dynamic link just with libbpf 1.0
> won't mess up backport world too much.. cc-ing Michael

Yeah, would be nice to hear from Michael and other distro maintainers.

- Arnaldo
 
> other than that looks ok to me
> 
> Acked/Tested-by: Jiri Olsa <jolsa@kernel.org>
> 
> also for the 2 dependency patches

ok!