From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
Andres Freund <andres@anarazel.de>,
Quentin Monnet <quentin@isovalent.com>,
Roberto Sassu <roberto.sassu@huawei.com>,
Christy Lee <christylee@fb.com>,
Andrii Nakryiko <andrii@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
bpf@vger.kernel.org
Subject: Re: [PATCH v2 2/3] perf build: Remove libbpf pre-1.0 feature tests
Date: Mon, 13 Mar 2023 18:10:40 -0300 [thread overview]
Message-ID: <ZA+RUCE4vAgBlQRh@kernel.org> (raw)
In-Reply-To: <20230116010115.490713-3-irogers@google.com>
Em Sun, Jan 15, 2023 at 05:01:14PM -0800, Ian Rogers escreveu:
> The feature tests were necessary for libbpf pre-1.0, but as the libbpf
> implies at least 1.0 we can remove these now.
So I added this:
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 8b0bd3aa018ef166..b715cd4f43f4a014 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -580,7 +580,7 @@ ifndef NO_LIBELF
EXTLIBS += -lbpf
$(call detected,CONFIG_LIBBPF_DYNAMIC)
else
- dummy := $(error Error: No libbpf devel library found, please install libbpf-devel);
+ dummy := $(error Error: No libbpf devel library found or older than v1.0, please install/update libbpf-devel);
endif
else
# Libbpf will be built as a static library from tools/lib/bpf.
To better reflect the failure reason:
⬢[acme@toolbox perf-tools-next]$ cat /tmp/build/perf-tools-next/feature/test-libbpf.make.output
test-libbpf.c:5:2: error: #error At least libbpf 1.0 is required for Linux tools.
5 | #error At least libbpf 1.0 is required for Linux tools.
| ^~~~~
⬢[acme@toolbox perf-tools-next]$ rpm -q libbpf-devel
libbpf-devel-0.8.0-2.fc37.x86_64
⬢[acme@toolbox perf-tools-next]$
I'll see if I can make the build test conditional on libbpf being >= 1.0
- Arnaldo
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> 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/perf/Makefile.config | 48 ++++---------------
> 9 files changed, 10 insertions(+), 102 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
>
> diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> index 690fe97be190..dc9323e01e42 100644
> --- a/tools/build/feature/Makefile
> +++ b/tools/build/feature/Makefile
> @@ -58,13 +58,6 @@ FILES= \
> test-lzma.bin \
> test-bpf.bin \
> test-libbpf.bin \
> - test-libbpf-btf__load_from_kernel_by_id.bin \
> - test-libbpf-bpf_prog_load.bin \
> - test-libbpf-bpf_map_create.bin \
> - test-libbpf-bpf_object__next_program.bin \
> - test-libbpf-bpf_object__next_map.bin \
> - test-libbpf-bpf_program__set_insns.bin \
> - test-libbpf-btf__raw_data.bin \
> test-get_cpuid.bin \
> test-sdt.bin \
> test-cxx.bin \
> diff --git a/tools/build/feature/test-libbpf-bpf_map_create.c b/tools/build/feature/test-libbpf-bpf_map_create.c
> deleted file mode 100644
> index b9f550e332c8..000000000000
> --- a/tools/build/feature/test-libbpf-bpf_map_create.c
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <bpf/bpf.h>
> -
> -int main(void)
> -{
> - return bpf_map_create(0 /* map_type */, NULL /* map_name */, 0, /* key_size */,
> - 0 /* value_size */, 0 /* max_entries */, NULL /* opts */);
> -}
> diff --git a/tools/build/feature/test-libbpf-bpf_object__next_map.c b/tools/build/feature/test-libbpf-bpf_object__next_map.c
> deleted file mode 100644
> index 64adb519e97e..000000000000
> --- a/tools/build/feature/test-libbpf-bpf_object__next_map.c
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <bpf/libbpf.h>
> -
> -int main(void)
> -{
> - bpf_object__next_map(NULL /* obj */, NULL /* prev */);
> - return 0;
> -}
> diff --git a/tools/build/feature/test-libbpf-bpf_object__next_program.c b/tools/build/feature/test-libbpf-bpf_object__next_program.c
> deleted file mode 100644
> index 8bf4fd26b545..000000000000
> --- a/tools/build/feature/test-libbpf-bpf_object__next_program.c
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <bpf/libbpf.h>
> -
> -int main(void)
> -{
> - bpf_object__next_program(NULL /* obj */, NULL /* prev */);
> - return 0;
> -}
> diff --git a/tools/build/feature/test-libbpf-bpf_prog_load.c b/tools/build/feature/test-libbpf-bpf_prog_load.c
> deleted file mode 100644
> index 47f516d63ebc..000000000000
> --- a/tools/build/feature/test-libbpf-bpf_prog_load.c
> +++ /dev/null
> @@ -1,9 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <bpf/bpf.h>
> -
> -int main(void)
> -{
> - return bpf_prog_load(0 /* prog_type */, NULL /* prog_name */,
> - NULL /* license */, NULL /* insns */,
> - 0 /* insn_cnt */, NULL /* opts */);
> -}
> diff --git a/tools/build/feature/test-libbpf-bpf_program__set_insns.c b/tools/build/feature/test-libbpf-bpf_program__set_insns.c
> deleted file mode 100644
> index f3b7f18c8f49..000000000000
> --- a/tools/build/feature/test-libbpf-bpf_program__set_insns.c
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <bpf/libbpf.h>
> -
> -int main(void)
> -{
> - bpf_program__set_insns(NULL /* prog */, NULL /* new_insns */, 0 /* new_insn_cnt */);
> - return 0;
> -}
> diff --git a/tools/build/feature/test-libbpf-btf__load_from_kernel_by_id.c b/tools/build/feature/test-libbpf-btf__load_from_kernel_by_id.c
> deleted file mode 100644
> index a17647f7d5a4..000000000000
> --- a/tools/build/feature/test-libbpf-btf__load_from_kernel_by_id.c
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <bpf/btf.h>
> -
> -int main(void)
> -{
> - btf__load_from_kernel_by_id(20151128);
> - return 0;
> -}
> diff --git a/tools/build/feature/test-libbpf-btf__raw_data.c b/tools/build/feature/test-libbpf-btf__raw_data.c
> deleted file mode 100644
> index 57da31dd7581..000000000000
> --- a/tools/build/feature/test-libbpf-btf__raw_data.c
> +++ /dev/null
> @@ -1,8 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0
> -#include <bpf/btf.h>
> -
> -int main(void)
> -{
> - btf__raw_data(NULL /* btf_ro */, NULL /* size */);
> - return 0;
> -}
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index 5b8784675903..5ab7cac48c4a 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -565,54 +565,26 @@ ifndef NO_LIBELF
>
> # detecting libbpf without LIBBPF_DYNAMIC, so make VF=1 shows libbpf detection status
> $(call feature_check,libbpf)
> +
> + # Feature test requires libbpf 1.0 so we can assume the following:
> + CFLAGS += -DHAVE_LIBBPF_BTF__LOAD_FROM_KERNEL_BY_ID
> + CFLAGS += -DHAVE_LIBBPF_BPF_PROG_LOAD
> + CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_PROGRAM
> + CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_MAP
> + CFLAGS += -DHAVE_LIBBPF_BPF_PROGRAM__SET_INSNS
> + CFLAGS += -DHAVE_LIBBPF_BTF__RAW_DATA
> + CFLAGS += -DHAVE_LIBBPF_BPF_MAP_CREATE
> +
> ifdef LIBBPF_DYNAMIC
> ifeq ($(feature-libbpf), 1)
> EXTLIBS += -lbpf
> $(call detected,CONFIG_LIBBPF_DYNAMIC)
> -
> - $(call feature_check,libbpf-btf__load_from_kernel_by_id)
> - ifeq ($(feature-libbpf-btf__load_from_kernel_by_id), 1)
> - CFLAGS += -DHAVE_LIBBPF_BTF__LOAD_FROM_KERNEL_BY_ID
> - endif
> - $(call feature_check,libbpf-bpf_prog_load)
> - ifeq ($(feature-libbpf-bpf_prog_load), 1)
> - CFLAGS += -DHAVE_LIBBPF_BPF_PROG_LOAD
> - endif
> - $(call feature_check,libbpf-bpf_object__next_program)
> - ifeq ($(feature-libbpf-bpf_object__next_program), 1)
> - CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_PROGRAM
> - endif
> - $(call feature_check,libbpf-bpf_object__next_map)
> - ifeq ($(feature-libbpf-bpf_object__next_map), 1)
> - CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_MAP
> - endif
> - $(call feature_check,libbpf-bpf_program__set_insns)
> - ifeq ($(feature-libbpf-bpf_program__set_insns), 1)
> - CFLAGS += -DHAVE_LIBBPF_BPF_PROGRAM__SET_INSNS
> - else
> - dummy := $(error Error: libbpf devel library needs to be >= 0.8.0 to build with LIBBPF_DYNAMIC, update or build statically with the version that comes with the kernel sources);
> - endif
> - $(call feature_check,libbpf-btf__raw_data)
> - ifeq ($(feature-libbpf-btf__raw_data), 1)
> - CFLAGS += -DHAVE_LIBBPF_BTF__RAW_DATA
> - endif
> - $(call feature_check,libbpf-bpf_map_create)
> - ifeq ($(feature-libbpf-bpf_map_create), 1)
> - CFLAGS += -DHAVE_LIBBPF_BPF_MAP_CREATE
> - endif
> else
> dummy := $(error Error: No libbpf devel library found, please install libbpf-devel);
> endif
> else
> # Libbpf will be built as a static library from tools/lib/bpf.
> LIBBPF_STATIC := 1
> - CFLAGS += -DHAVE_LIBBPF_BTF__LOAD_FROM_KERNEL_BY_ID
> - CFLAGS += -DHAVE_LIBBPF_BPF_PROG_LOAD
> - CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_PROGRAM
> - CFLAGS += -DHAVE_LIBBPF_BPF_OBJECT__NEXT_MAP
> - CFLAGS += -DHAVE_LIBBPF_BPF_PROGRAM__SET_INSNS
> - CFLAGS += -DHAVE_LIBBPF_BTF__RAW_DATA
> - CFLAGS += -DHAVE_LIBBPF_BPF_MAP_CREATE
> endif
> endif
>
> --
> 2.39.0.314.g84b9a713c41-goog
--
- Arnaldo
next prev parent reply other threads:[~2023-03-13 21:11 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-16 1:01 [PATCH v2 0/3] Assume libbpf 1.0+ Ian Rogers
2023-01-16 1:01 ` [PATCH v2 1/3] tools build: Pass libbpf feature only if " Ian Rogers
2023-01-16 1:01 ` [PATCH v2 2/3] perf build: Remove libbpf pre-1.0 feature tests Ian Rogers
2023-03-13 21:10 ` Arnaldo Carvalho de Melo [this message]
2023-03-13 21:38 ` Arnaldo Carvalho de Melo
2023-03-14 0:19 ` Ian Rogers
2023-03-14 1:51 ` Ian Rogers
2023-03-14 11:36 ` Arnaldo Carvalho de Melo
2023-01-16 1:01 ` [PATCH v2 3/3] perf bpf: Remove pre libbpf 1.0 conditional logic Ian Rogers
2023-01-19 17:11 ` [PATCH v2 0/3] Assume libbpf 1.0+ Ian Rogers
2023-01-19 17:41 ` Arnaldo Carvalho de Melo
2023-01-19 17:47 ` Arnaldo Carvalho de Melo
2023-01-19 18:12 ` Ian Rogers
2023-01-19 21:13 ` Jiri Olsa
2023-03-09 2:13 ` Ian Rogers
2023-03-09 7:58 ` Guilherme Amadio
2023-03-09 17:24 ` Andrii Nakryiko
2023-03-10 3:26 ` Ian Rogers
2023-03-10 20:22 ` Andrii Nakryiko
2023-03-12 1:00 ` Ian Rogers
2023-03-12 9:51 ` Jiri Olsa
2023-03-10 9:09 ` Jiri Olsa
2023-03-10 14:08 ` Justin Forbes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZA+RUCE4vAgBlQRh@kernel.org \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=andres@anarazel.de \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=christylee@fb.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=quentin@isovalent.com \
--cc=roberto.sassu@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).