linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] tools/build: Add a feature test for libopenssl
@ 2025-12-03 23:29 Namhyung Kim
  2025-12-03 23:29 ` [PATCH 2/2] perf tools: Disable BPF skeleton if no libopenssl found Namhyung Kim
  2025-12-04  0:34 ` [PATCH 1/2] tools/build: Add a feature test for libopenssl Ian Rogers
  0 siblings, 2 replies; 9+ messages in thread
From: Namhyung Kim @ 2025-12-03 23:29 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Ian Rogers, James Clark
  Cc: Jiri Olsa, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users, bpf

It's used by bpftool and the kernel build.  Let's add a feature test so
that perf can decide what to do based on the availability.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/build/Makefile.feature          | 6 ++++--
 tools/build/feature/Makefile          | 8 ++++++--
 tools/build/feature/test-all.c        | 5 +++++
 tools/build/feature/test-libopenssl.c | 7 +++++++
 4 files changed, 22 insertions(+), 4 deletions(-)
 create mode 100644 tools/build/feature/test-libopenssl.c

diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index fc6abe369f7373c5..bc6d85bad379321b 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -99,7 +99,8 @@ FEATURE_TESTS_BASIC :=                  \
         libzstd				\
         disassembler-four-args		\
         disassembler-init-styled	\
-        file-handle
+        file-handle			\
+        libopenssl
 
 # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
 # of all feature tests
@@ -147,7 +148,8 @@ FEATURE_DISPLAY ?=              \
          lzma                   \
          bpf			\
          libaio			\
-         libzstd
+         libzstd		\
+         libopenssl
 
 #
 # Declare group members of a feature to display the logical OR of the detection
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index 7c90e0d0157ac9b1..3fd5ad0db2109778 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -67,12 +67,13 @@ FILES=                                          \
          test-libopencsd.bin			\
          test-clang.bin				\
          test-llvm.bin				\
-         test-llvm-perf.bin   \
+         test-llvm-perf.bin   			\
          test-libaio.bin			\
          test-libzstd.bin			\
          test-clang-bpf-co-re.bin		\
          test-file-handle.bin			\
-         test-libpfm4.bin
+         test-libpfm4.bin			\
+         test-libopenssl.bin
 
 FILES := $(addprefix $(OUTPUT),$(FILES))
 
@@ -381,6 +382,9 @@ endif
 $(OUTPUT)test-libpfm4.bin:
 	$(BUILD) -lpfm
 
+$(OUTPUT)test-libopenssl.bin:
+	$(BUILD) -lssl
+
 $(OUTPUT)test-bpftool-skeletons.bin:
 	$(SYSTEM_BPFTOOL) version | grep '^features:.*skeletons' \
 		> $(@:.bin=.make.output) 2>&1
diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
index eb346160d0ba0e2f..1488bf6e607836e5 100644
--- a/tools/build/feature/test-all.c
+++ b/tools/build/feature/test-all.c
@@ -142,6 +142,10 @@
 # include "test-libtraceevent.c"
 #undef main
 
+#define main main_test_libopenssl
+# include "test-libopenssl.c"
+#undef main
+
 int main(int argc, char *argv[])
 {
 	main_test_libpython();
@@ -173,6 +177,7 @@ int main(int argc, char *argv[])
 	main_test_reallocarray();
 	main_test_libzstd();
 	main_test_libtraceevent();
+	main_test_libopenssl();
 
 	return 0;
 }
diff --git a/tools/build/feature/test-libopenssl.c b/tools/build/feature/test-libopenssl.c
new file mode 100644
index 0000000000000000..168c45894e8be687
--- /dev/null
+++ b/tools/build/feature/test-libopenssl.c
@@ -0,0 +1,7 @@
+#include <openssl/ssl.h>
+#include <openssl/opensslv.h>
+
+int main(void)
+{
+	return SSL_library_init();
+}
-- 
2.52.0.177.g9f829587af-goog


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

* [PATCH 2/2] perf tools: Disable BPF skeleton if no libopenssl found
  2025-12-03 23:29 [PATCH 1/2] tools/build: Add a feature test for libopenssl Namhyung Kim
@ 2025-12-03 23:29 ` Namhyung Kim
  2025-12-04  0:34 ` [PATCH 1/2] tools/build: Add a feature test for libopenssl Ian Rogers
  1 sibling, 0 replies; 9+ messages in thread
From: Namhyung Kim @ 2025-12-03 23:29 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Ian Rogers, James Clark
  Cc: Jiri Olsa, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users, bpf

The libopenssl is required by bpftool which is needed to generate BPF
skeleton.  Disable it by setting BUILD_BPF_SKEL to 0 otherwise it'll see
build errors like below:

    CC      /build/util/bpf_skel/.tmp/bootstrap/sign.o
  sign.c:16:10: fatal error: openssl/opensslv.h: No such file or directory
     16 | #include <openssl/opensslv.h>
        |          ^~~~~~~~~~~~~~~~~~~~
  compilation terminated.
  make[3]: *** [Makefile:256: /build/util/bpf_skel/.tmp/bootstrap/sign.o] Error 1
  make[3]: *** Waiting for unfinished jobs....
  make[2]: *** [Makefile.perf:1211: /build/util/bpf_skel/.tmp/bootstrap/bpftool] Error 2
  make[1]: *** [Makefile.perf:287: sub-make] Error 2
  make: *** [Makefile:76: all] Error 2

Now it'll skip the build with the following message:

  Makefile.config:729: Warning: Disabled BPF skeletons as libopenssl is required

Closes: https://lore.kernel.org/r/aP7uq6eVieG8v_v4@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 tools/perf/Makefile.config | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 6b62fea21a0ad1ca..fd72bfbc83b38b3c 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -704,6 +704,11 @@ ifndef NO_LIBBPF
   endif
 endif
 
+ifeq ($(feature-libopenssl), 1)
+  $(call detected,CONFIG_LIBOPENSSL)
+  CFLAGS += -DHAVE_LIBOPENSSL_SUPPORT
+endif
+
 ifndef BUILD_BPF_SKEL
   # BPF skeletons control a large number of perf features, by default
   # they are enabled.
@@ -720,6 +725,9 @@ ifeq ($(BUILD_BPF_SKEL),1)
   else ifeq ($(filter -DHAVE_LIBBPF_SUPPORT, $(CFLAGS)),)
     $(warning Warning: Disabled BPF skeletons as libbpf is required)
     BUILD_BPF_SKEL := 0
+  else ifeq ($(filter -DHAVE_LIBOPENSSL_SUPPORT, $(CFLAGS)),)
+    $(warning Warning: Disabled BPF skeletons as libopenssl is required)
+    BUILD_BPF_SKEL := 0
   else ifeq ($(call get-executable,$(CLANG)),)
     $(warning Warning: Disabled BPF skeletons as clang ($(CLANG)) is missing)
     BUILD_BPF_SKEL := 0
-- 
2.52.0.177.g9f829587af-goog


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

* Re: [PATCH 1/2] tools/build: Add a feature test for libopenssl
  2025-12-03 23:29 [PATCH 1/2] tools/build: Add a feature test for libopenssl Namhyung Kim
  2025-12-03 23:29 ` [PATCH 2/2] perf tools: Disable BPF skeleton if no libopenssl found Namhyung Kim
@ 2025-12-04  0:34 ` Ian Rogers
  2025-12-04  7:52   ` Namhyung Kim
  2025-12-04 16:16   ` Arnaldo Carvalho de Melo
  1 sibling, 2 replies; 9+ messages in thread
From: Ian Rogers @ 2025-12-04  0:34 UTC (permalink / raw)
  To: Namhyung Kim, bpf
  Cc: Arnaldo Carvalho de Melo, James Clark, Jiri Olsa, Adrian Hunter,
	Peter Zijlstra, Ingo Molnar, LKML, linux-perf-users

On Wed, Dec 3, 2025 at 3:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> It's used by bpftool and the kernel build.  Let's add a feature test so
> that perf can decide what to do based on the availability.

It seems strange to add a feature test that bpftool is missing and
then use it only in the perf build. The signing of bpf programs isn't
something I think we need for skeleton support in perf. I like the
feature test, could we add it and use it in bpftool? The only two
functions using openssl appear to be:

  __u32 register_session_key(const char *key_der_path)
  int bpftool_prog_sign(struct bpf_load_and_run_opts *opts)

so we can do the whole feature test then #ifdef HAVE_FEATURE... stub
static inline versions of the functions game?

Perhaps we only need the bootstrap version of bpftool in perf and we
can just avoid dependencies that way. Looking at bpftool's build I see
that sign.o/c with those functions in is part of the bootstrap version
of bpftool :-(

Thanks,
Ian

> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
>  tools/build/Makefile.feature          | 6 ++++--
>  tools/build/feature/Makefile          | 8 ++++++--
>  tools/build/feature/test-all.c        | 5 +++++
>  tools/build/feature/test-libopenssl.c | 7 +++++++
>  4 files changed, 22 insertions(+), 4 deletions(-)
>  create mode 100644 tools/build/feature/test-libopenssl.c
>
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index fc6abe369f7373c5..bc6d85bad379321b 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -99,7 +99,8 @@ FEATURE_TESTS_BASIC :=                  \
>          libzstd                                \
>          disassembler-four-args         \
>          disassembler-init-styled       \
> -        file-handle
> +        file-handle                    \
> +        libopenssl
>
>  # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
>  # of all feature tests
> @@ -147,7 +148,8 @@ FEATURE_DISPLAY ?=              \
>           lzma                   \
>           bpf                   \
>           libaio                        \
> -         libzstd
> +         libzstd               \
> +         libopenssl
>
>  #
>  # Declare group members of a feature to display the logical OR of the detection
> diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> index 7c90e0d0157ac9b1..3fd5ad0db2109778 100644
> --- a/tools/build/feature/Makefile
> +++ b/tools/build/feature/Makefile
> @@ -67,12 +67,13 @@ FILES=                                          \
>           test-libopencsd.bin                   \
>           test-clang.bin                                \
>           test-llvm.bin                         \
> -         test-llvm-perf.bin   \
> +         test-llvm-perf.bin                    \
>           test-libaio.bin                       \
>           test-libzstd.bin                      \
>           test-clang-bpf-co-re.bin              \
>           test-file-handle.bin                  \
> -         test-libpfm4.bin
> +         test-libpfm4.bin                      \
> +         test-libopenssl.bin
>
>  FILES := $(addprefix $(OUTPUT),$(FILES))
>
> @@ -381,6 +382,9 @@ endif
>  $(OUTPUT)test-libpfm4.bin:
>         $(BUILD) -lpfm
>
> +$(OUTPUT)test-libopenssl.bin:
> +       $(BUILD) -lssl
> +
>  $(OUTPUT)test-bpftool-skeletons.bin:
>         $(SYSTEM_BPFTOOL) version | grep '^features:.*skeletons' \
>                 > $(@:.bin=.make.output) 2>&1
> diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
> index eb346160d0ba0e2f..1488bf6e607836e5 100644
> --- a/tools/build/feature/test-all.c
> +++ b/tools/build/feature/test-all.c
> @@ -142,6 +142,10 @@
>  # include "test-libtraceevent.c"
>  #undef main
>
> +#define main main_test_libopenssl
> +# include "test-libopenssl.c"
> +#undef main
> +
>  int main(int argc, char *argv[])
>  {
>         main_test_libpython();
> @@ -173,6 +177,7 @@ int main(int argc, char *argv[])
>         main_test_reallocarray();
>         main_test_libzstd();
>         main_test_libtraceevent();
> +       main_test_libopenssl();
>
>         return 0;
>  }
> diff --git a/tools/build/feature/test-libopenssl.c b/tools/build/feature/test-libopenssl.c
> new file mode 100644
> index 0000000000000000..168c45894e8be687
> --- /dev/null
> +++ b/tools/build/feature/test-libopenssl.c
> @@ -0,0 +1,7 @@
> +#include <openssl/ssl.h>
> +#include <openssl/opensslv.h>
> +
> +int main(void)
> +{
> +       return SSL_library_init();
> +}
> --
> 2.52.0.177.g9f829587af-goog
>

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

* Re: [PATCH 1/2] tools/build: Add a feature test for libopenssl
  2025-12-04  0:34 ` [PATCH 1/2] tools/build: Add a feature test for libopenssl Ian Rogers
@ 2025-12-04  7:52   ` Namhyung Kim
  2025-12-04 16:16   ` Arnaldo Carvalho de Melo
  1 sibling, 0 replies; 9+ messages in thread
From: Namhyung Kim @ 2025-12-04  7:52 UTC (permalink / raw)
  To: Ian Rogers
  Cc: bpf, Arnaldo Carvalho de Melo, James Clark, Jiri Olsa,
	Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users

Hi Ian,

On Wed, Dec 03, 2025 at 04:34:56PM -0800, Ian Rogers wrote:
> On Wed, Dec 3, 2025 at 3:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
> >
> > It's used by bpftool and the kernel build.  Let's add a feature test so
> > that perf can decide what to do based on the availability.
> 
> It seems strange to add a feature test that bpftool is missing and
> then use it only in the perf build. The signing of bpf programs isn't
> something I think we need for skeleton support in perf. I like the
> feature test, could we add it and use it in bpftool? The only two
> functions using openssl appear to be:
> 
>   __u32 register_session_key(const char *key_der_path)
>   int bpftool_prog_sign(struct bpf_load_and_run_opts *opts)
> 
> so we can do the whole feature test then #ifdef HAVE_FEATURE... stub
> static inline versions of the functions game?
> 
> Perhaps we only need the bootstrap version of bpftool in perf and we
> can just avoid dependencies that way. Looking at bpftool's build I see
> that sign.o/c with those functions in is part of the bootstrap version
> of bpftool :-(

BPF folks said it's a required library and they don't want to build
without it.

https://lore.kernel.org/linux-perf-users/e44f70bf-8f50-4a4b-97b8-eaf988aabced@kernel.org/

Thanks,
Namhyung


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

* Re: [PATCH 1/2] tools/build: Add a feature test for libopenssl
  2025-12-04  0:34 ` [PATCH 1/2] tools/build: Add a feature test for libopenssl Ian Rogers
  2025-12-04  7:52   ` Namhyung Kim
@ 2025-12-04 16:16   ` Arnaldo Carvalho de Melo
  2025-12-04 23:52     ` Namhyung Kim
  1 sibling, 1 reply; 9+ messages in thread
From: Arnaldo Carvalho de Melo @ 2025-12-04 16:16 UTC (permalink / raw)
  To: Ian Rogers
  Cc: Quentin Monnet, Namhyung Kim, bpf, James Clark, Jiri Olsa,
	Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users

On Wed, Dec 03, 2025 at 04:34:56PM -0800, Ian Rogers wrote:
> On Wed, Dec 3, 2025 at 3:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
> >
> > It's used by bpftool and the kernel build.  Let's add a feature test so
> > that perf can decide what to do based on the availability.
> 
> It seems strange to add a feature test that bpftool is missing and
> then use it only in the perf build. The signing of bpf programs isn't

It is strange indeed, I agree that since we don't use BPF signing at
this point in the perf BPf skels, then we could just bootstrap a bpftool
without such feature and continue building the existing features.

Adding the bpftool maintainer to the CC list, Quentin?

- Arnaldo

> something I think we need for skeleton support in perf. I like the
> feature test, could we add it and use it in bpftool? The only two
> functions using openssl appear to be:
> 
>   __u32 register_session_key(const char *key_der_path)
>   int bpftool_prog_sign(struct bpf_load_and_run_opts *opts)
> 
> so we can do the whole feature test then #ifdef HAVE_FEATURE... stub
> static inline versions of the functions game?
> 
> Perhaps we only need the bootstrap version of bpftool in perf and we
> can just avoid dependencies that way. Looking at bpftool's build I see
> that sign.o/c with those functions in is part of the bootstrap version
> of bpftool :-(
> 
> Thanks,
> Ian
> 
> > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> > ---
> >  tools/build/Makefile.feature          | 6 ++++--
> >  tools/build/feature/Makefile          | 8 ++++++--
> >  tools/build/feature/test-all.c        | 5 +++++
> >  tools/build/feature/test-libopenssl.c | 7 +++++++
> >  4 files changed, 22 insertions(+), 4 deletions(-)
> >  create mode 100644 tools/build/feature/test-libopenssl.c
> >
> > diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> > index fc6abe369f7373c5..bc6d85bad379321b 100644
> > --- a/tools/build/Makefile.feature
> > +++ b/tools/build/Makefile.feature
> > @@ -99,7 +99,8 @@ FEATURE_TESTS_BASIC :=                  \
> >          libzstd                                \
> >          disassembler-four-args         \
> >          disassembler-init-styled       \
> > -        file-handle
> > +        file-handle                    \
> > +        libopenssl
> >
> >  # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
> >  # of all feature tests
> > @@ -147,7 +148,8 @@ FEATURE_DISPLAY ?=              \
> >           lzma                   \
> >           bpf                   \
> >           libaio                        \
> > -         libzstd
> > +         libzstd               \
> > +         libopenssl
> >
> >  #
> >  # Declare group members of a feature to display the logical OR of the detection
> > diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> > index 7c90e0d0157ac9b1..3fd5ad0db2109778 100644
> > --- a/tools/build/feature/Makefile
> > +++ b/tools/build/feature/Makefile
> > @@ -67,12 +67,13 @@ FILES=                                          \
> >           test-libopencsd.bin                   \
> >           test-clang.bin                                \
> >           test-llvm.bin                         \
> > -         test-llvm-perf.bin   \
> > +         test-llvm-perf.bin                    \
> >           test-libaio.bin                       \
> >           test-libzstd.bin                      \
> >           test-clang-bpf-co-re.bin              \
> >           test-file-handle.bin                  \
> > -         test-libpfm4.bin
> > +         test-libpfm4.bin                      \
> > +         test-libopenssl.bin
> >
> >  FILES := $(addprefix $(OUTPUT),$(FILES))
> >
> > @@ -381,6 +382,9 @@ endif
> >  $(OUTPUT)test-libpfm4.bin:
> >         $(BUILD) -lpfm
> >
> > +$(OUTPUT)test-libopenssl.bin:
> > +       $(BUILD) -lssl
> > +
> >  $(OUTPUT)test-bpftool-skeletons.bin:
> >         $(SYSTEM_BPFTOOL) version | grep '^features:.*skeletons' \
> >                 > $(@:.bin=.make.output) 2>&1
> > diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
> > index eb346160d0ba0e2f..1488bf6e607836e5 100644
> > --- a/tools/build/feature/test-all.c
> > +++ b/tools/build/feature/test-all.c
> > @@ -142,6 +142,10 @@
> >  # include "test-libtraceevent.c"
> >  #undef main
> >
> > +#define main main_test_libopenssl
> > +# include "test-libopenssl.c"
> > +#undef main
> > +
> >  int main(int argc, char *argv[])
> >  {
> >         main_test_libpython();
> > @@ -173,6 +177,7 @@ int main(int argc, char *argv[])
> >         main_test_reallocarray();
> >         main_test_libzstd();
> >         main_test_libtraceevent();
> > +       main_test_libopenssl();
> >
> >         return 0;
> >  }
> > diff --git a/tools/build/feature/test-libopenssl.c b/tools/build/feature/test-libopenssl.c
> > new file mode 100644
> > index 0000000000000000..168c45894e8be687
> > --- /dev/null
> > +++ b/tools/build/feature/test-libopenssl.c
> > @@ -0,0 +1,7 @@
> > +#include <openssl/ssl.h>
> > +#include <openssl/opensslv.h>
> > +
> > +int main(void)
> > +{
> > +       return SSL_library_init();
> > +}
> > --
> > 2.52.0.177.g9f829587af-goog
> >

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

* Re: [PATCH 1/2] tools/build: Add a feature test for libopenssl
  2025-12-04 16:16   ` Arnaldo Carvalho de Melo
@ 2025-12-04 23:52     ` Namhyung Kim
  2025-12-05  6:27       ` Ian Rogers
  0 siblings, 1 reply; 9+ messages in thread
From: Namhyung Kim @ 2025-12-04 23:52 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo
  Cc: Ian Rogers, Quentin Monnet, bpf, James Clark, Jiri Olsa,
	Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users

On Thu, Dec 04, 2025 at 01:16:54PM -0300, Arnaldo Carvalho de Melo wrote:
> On Wed, Dec 03, 2025 at 04:34:56PM -0800, Ian Rogers wrote:
> > On Wed, Dec 3, 2025 at 3:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
> > >
> > > It's used by bpftool and the kernel build.  Let's add a feature test so
> > > that perf can decide what to do based on the availability.
> > 
> > It seems strange to add a feature test that bpftool is missing and
> > then use it only in the perf build. The signing of bpf programs isn't
> 
> It is strange indeed, I agree that since we don't use BPF signing at
> this point in the perf BPf skels, then we could just bootstrap a bpftool
> without such feature and continue building the existing features.
> 
> Adding the bpftool maintainer to the CC list, Quentin?

I've already talked to Quentin and they want libopenssl as a
requirement.

https://lore.kernel.org/linux-perf-users/e44f70bf-8f50-4a4b-97b8-eaf988aabced@kernel.org/

Thanks,
Namhyung


> > something I think we need for skeleton support in perf. I like the
> > feature test, could we add it and use it in bpftool? The only two
> > functions using openssl appear to be:
> > 
> >   __u32 register_session_key(const char *key_der_path)
> >   int bpftool_prog_sign(struct bpf_load_and_run_opts *opts)
> > 
> > so we can do the whole feature test then #ifdef HAVE_FEATURE... stub
> > static inline versions of the functions game?
> > 
> > Perhaps we only need the bootstrap version of bpftool in perf and we
> > can just avoid dependencies that way. Looking at bpftool's build I see
> > that sign.o/c with those functions in is part of the bootstrap version
> > of bpftool :-(
> > 
> > Thanks,
> > Ian
> > 
> > > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> > > ---
> > >  tools/build/Makefile.feature          | 6 ++++--
> > >  tools/build/feature/Makefile          | 8 ++++++--
> > >  tools/build/feature/test-all.c        | 5 +++++
> > >  tools/build/feature/test-libopenssl.c | 7 +++++++
> > >  4 files changed, 22 insertions(+), 4 deletions(-)
> > >  create mode 100644 tools/build/feature/test-libopenssl.c
> > >
> > > diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> > > index fc6abe369f7373c5..bc6d85bad379321b 100644
> > > --- a/tools/build/Makefile.feature
> > > +++ b/tools/build/Makefile.feature
> > > @@ -99,7 +99,8 @@ FEATURE_TESTS_BASIC :=                  \
> > >          libzstd                                \
> > >          disassembler-four-args         \
> > >          disassembler-init-styled       \
> > > -        file-handle
> > > +        file-handle                    \
> > > +        libopenssl
> > >
> > >  # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
> > >  # of all feature tests
> > > @@ -147,7 +148,8 @@ FEATURE_DISPLAY ?=              \
> > >           lzma                   \
> > >           bpf                   \
> > >           libaio                        \
> > > -         libzstd
> > > +         libzstd               \
> > > +         libopenssl
> > >
> > >  #
> > >  # Declare group members of a feature to display the logical OR of the detection
> > > diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> > > index 7c90e0d0157ac9b1..3fd5ad0db2109778 100644
> > > --- a/tools/build/feature/Makefile
> > > +++ b/tools/build/feature/Makefile
> > > @@ -67,12 +67,13 @@ FILES=                                          \
> > >           test-libopencsd.bin                   \
> > >           test-clang.bin                                \
> > >           test-llvm.bin                         \
> > > -         test-llvm-perf.bin   \
> > > +         test-llvm-perf.bin                    \
> > >           test-libaio.bin                       \
> > >           test-libzstd.bin                      \
> > >           test-clang-bpf-co-re.bin              \
> > >           test-file-handle.bin                  \
> > > -         test-libpfm4.bin
> > > +         test-libpfm4.bin                      \
> > > +         test-libopenssl.bin
> > >
> > >  FILES := $(addprefix $(OUTPUT),$(FILES))
> > >
> > > @@ -381,6 +382,9 @@ endif
> > >  $(OUTPUT)test-libpfm4.bin:
> > >         $(BUILD) -lpfm
> > >
> > > +$(OUTPUT)test-libopenssl.bin:
> > > +       $(BUILD) -lssl
> > > +
> > >  $(OUTPUT)test-bpftool-skeletons.bin:
> > >         $(SYSTEM_BPFTOOL) version | grep '^features:.*skeletons' \
> > >                 > $(@:.bin=.make.output) 2>&1
> > > diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
> > > index eb346160d0ba0e2f..1488bf6e607836e5 100644
> > > --- a/tools/build/feature/test-all.c
> > > +++ b/tools/build/feature/test-all.c
> > > @@ -142,6 +142,10 @@
> > >  # include "test-libtraceevent.c"
> > >  #undef main
> > >
> > > +#define main main_test_libopenssl
> > > +# include "test-libopenssl.c"
> > > +#undef main
> > > +
> > >  int main(int argc, char *argv[])
> > >  {
> > >         main_test_libpython();
> > > @@ -173,6 +177,7 @@ int main(int argc, char *argv[])
> > >         main_test_reallocarray();
> > >         main_test_libzstd();
> > >         main_test_libtraceevent();
> > > +       main_test_libopenssl();
> > >
> > >         return 0;
> > >  }
> > > diff --git a/tools/build/feature/test-libopenssl.c b/tools/build/feature/test-libopenssl.c
> > > new file mode 100644
> > > index 0000000000000000..168c45894e8be687
> > > --- /dev/null
> > > +++ b/tools/build/feature/test-libopenssl.c
> > > @@ -0,0 +1,7 @@
> > > +#include <openssl/ssl.h>
> > > +#include <openssl/opensslv.h>
> > > +
> > > +int main(void)
> > > +{
> > > +       return SSL_library_init();
> > > +}
> > > --
> > > 2.52.0.177.g9f829587af-goog
> > >

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

* Re: [PATCH 1/2] tools/build: Add a feature test for libopenssl
  2025-12-04 23:52     ` Namhyung Kim
@ 2025-12-05  6:27       ` Ian Rogers
  2025-12-05 10:28         ` Quentin Monnet
  0 siblings, 1 reply; 9+ messages in thread
From: Ian Rogers @ 2025-12-05  6:27 UTC (permalink / raw)
  To: Namhyung Kim, Quentin Monnet, Arnaldo Carvalho de Melo
  Cc: bpf, James Clark, Jiri Olsa, Adrian Hunter, Peter Zijlstra,
	Ingo Molnar, LKML, linux-perf-users

On Thu, Dec 4, 2025 at 3:52 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> On Thu, Dec 04, 2025 at 01:16:54PM -0300, Arnaldo Carvalho de Melo wrote:
> > On Wed, Dec 03, 2025 at 04:34:56PM -0800, Ian Rogers wrote:
> > > On Wed, Dec 3, 2025 at 3:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
> > > >
> > > > It's used by bpftool and the kernel build.  Let's add a feature test so
> > > > that perf can decide what to do based on the availability.
> > >
> > > It seems strange to add a feature test that bpftool is missing and
> > > then use it only in the perf build. The signing of bpf programs isn't
> >
> > It is strange indeed, I agree that since we don't use BPF signing at
> > this point in the perf BPf skels, then we could just bootstrap a bpftool
> > without such feature and continue building the existing features.
> >
> > Adding the bpftool maintainer to the CC list, Quentin?
>
> I've already talked to Quentin and they want libopenssl as a
> requirement.
>
> https://lore.kernel.org/linux-perf-users/e44f70bf-8f50-4a4b-97b8-eaf988aabced@kernel.org/

You can have libopenssl as a requirement and have a bootstrap bpftool
that doesn't require it, as the bootstrap version only provides
minimal features typically to just build bpftool. You can also have
libopenssl as a requirement and have a feature test that fails in the
bpftool build saying you are missing a requirement. Having the perf
build detect that a feature for the bpftool dependency is missing is
fine as we can then recommend installing bpftool or the missing
dependency, but doing this without bpftool also doing something just
seems inconsistent.

Thanks,
Ian

> Thanks,
> Namhyung
>
>
> > > something I think we need for skeleton support in perf. I like the
> > > feature test, could we add it and use it in bpftool? The only two
> > > functions using openssl appear to be:
> > >
> > >   __u32 register_session_key(const char *key_der_path)
> > >   int bpftool_prog_sign(struct bpf_load_and_run_opts *opts)
> > >
> > > so we can do the whole feature test then #ifdef HAVE_FEATURE... stub
> > > static inline versions of the functions game?
> > >
> > > Perhaps we only need the bootstrap version of bpftool in perf and we
> > > can just avoid dependencies that way. Looking at bpftool's build I see
> > > that sign.o/c with those functions in is part of the bootstrap version
> > > of bpftool :-(
> > >
> > > Thanks,
> > > Ian
> > >
> > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> > > > ---
> > > >  tools/build/Makefile.feature          | 6 ++++--
> > > >  tools/build/feature/Makefile          | 8 ++++++--
> > > >  tools/build/feature/test-all.c        | 5 +++++
> > > >  tools/build/feature/test-libopenssl.c | 7 +++++++
> > > >  4 files changed, 22 insertions(+), 4 deletions(-)
> > > >  create mode 100644 tools/build/feature/test-libopenssl.c
> > > >
> > > > diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> > > > index fc6abe369f7373c5..bc6d85bad379321b 100644
> > > > --- a/tools/build/Makefile.feature
> > > > +++ b/tools/build/Makefile.feature
> > > > @@ -99,7 +99,8 @@ FEATURE_TESTS_BASIC :=                  \
> > > >          libzstd                                \
> > > >          disassembler-four-args         \
> > > >          disassembler-init-styled       \
> > > > -        file-handle
> > > > +        file-handle                    \
> > > > +        libopenssl
> > > >
> > > >  # FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
> > > >  # of all feature tests
> > > > @@ -147,7 +148,8 @@ FEATURE_DISPLAY ?=              \
> > > >           lzma                   \
> > > >           bpf                   \
> > > >           libaio                        \
> > > > -         libzstd
> > > > +         libzstd               \
> > > > +         libopenssl
> > > >
> > > >  #
> > > >  # Declare group members of a feature to display the logical OR of the detection
> > > > diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> > > > index 7c90e0d0157ac9b1..3fd5ad0db2109778 100644
> > > > --- a/tools/build/feature/Makefile
> > > > +++ b/tools/build/feature/Makefile
> > > > @@ -67,12 +67,13 @@ FILES=                                          \
> > > >           test-libopencsd.bin                   \
> > > >           test-clang.bin                                \
> > > >           test-llvm.bin                         \
> > > > -         test-llvm-perf.bin   \
> > > > +         test-llvm-perf.bin                    \
> > > >           test-libaio.bin                       \
> > > >           test-libzstd.bin                      \
> > > >           test-clang-bpf-co-re.bin              \
> > > >           test-file-handle.bin                  \
> > > > -         test-libpfm4.bin
> > > > +         test-libpfm4.bin                      \
> > > > +         test-libopenssl.bin
> > > >
> > > >  FILES := $(addprefix $(OUTPUT),$(FILES))
> > > >
> > > > @@ -381,6 +382,9 @@ endif
> > > >  $(OUTPUT)test-libpfm4.bin:
> > > >         $(BUILD) -lpfm
> > > >
> > > > +$(OUTPUT)test-libopenssl.bin:
> > > > +       $(BUILD) -lssl
> > > > +
> > > >  $(OUTPUT)test-bpftool-skeletons.bin:
> > > >         $(SYSTEM_BPFTOOL) version | grep '^features:.*skeletons' \
> > > >                 > $(@:.bin=.make.output) 2>&1
> > > > diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
> > > > index eb346160d0ba0e2f..1488bf6e607836e5 100644
> > > > --- a/tools/build/feature/test-all.c
> > > > +++ b/tools/build/feature/test-all.c
> > > > @@ -142,6 +142,10 @@
> > > >  # include "test-libtraceevent.c"
> > > >  #undef main
> > > >
> > > > +#define main main_test_libopenssl
> > > > +# include "test-libopenssl.c"
> > > > +#undef main
> > > > +
> > > >  int main(int argc, char *argv[])
> > > >  {
> > > >         main_test_libpython();
> > > > @@ -173,6 +177,7 @@ int main(int argc, char *argv[])
> > > >         main_test_reallocarray();
> > > >         main_test_libzstd();
> > > >         main_test_libtraceevent();
> > > > +       main_test_libopenssl();
> > > >
> > > >         return 0;
> > > >  }
> > > > diff --git a/tools/build/feature/test-libopenssl.c b/tools/build/feature/test-libopenssl.c
> > > > new file mode 100644
> > > > index 0000000000000000..168c45894e8be687
> > > > --- /dev/null
> > > > +++ b/tools/build/feature/test-libopenssl.c
> > > > @@ -0,0 +1,7 @@
> > > > +#include <openssl/ssl.h>
> > > > +#include <openssl/opensslv.h>
> > > > +
> > > > +int main(void)
> > > > +{
> > > > +       return SSL_library_init();
> > > > +}
> > > > --
> > > > 2.52.0.177.g9f829587af-goog
> > > >

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

* Re: [PATCH 1/2] tools/build: Add a feature test for libopenssl
  2025-12-05  6:27       ` Ian Rogers
@ 2025-12-05 10:28         ` Quentin Monnet
  2025-12-16  6:19           ` Namhyung Kim
  0 siblings, 1 reply; 9+ messages in thread
From: Quentin Monnet @ 2025-12-05 10:28 UTC (permalink / raw)
  To: Ian Rogers, Namhyung Kim, Arnaldo Carvalho de Melo
  Cc: bpf, James Clark, Jiri Olsa, Adrian Hunter, Peter Zijlstra,
	Ingo Molnar, LKML, linux-perf-users, KP Singh

2025-12-04 22:27 UTC-0800 ~ Ian Rogers <irogers@google.com>
> On Thu, Dec 4, 2025 at 3:52 PM Namhyung Kim <namhyung@kernel.org> wrote:
>>
>> On Thu, Dec 04, 2025 at 01:16:54PM -0300, Arnaldo Carvalho de Melo wrote:
>>> On Wed, Dec 03, 2025 at 04:34:56PM -0800, Ian Rogers wrote:
>>>> On Wed, Dec 3, 2025 at 3:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
>>>>>
>>>>> It's used by bpftool and the kernel build.  Let's add a feature test so
>>>>> that perf can decide what to do based on the availability.
>>>>
>>>> It seems strange to add a feature test that bpftool is missing and
>>>> then use it only in the perf build. The signing of bpf programs isn't
>>>
>>> It is strange indeed, I agree that since we don't use BPF signing at
>>> this point in the perf BPf skels, then we could just bootstrap a bpftool
>>> without such feature and continue building the existing features.
>>>
>>> Adding the bpftool maintainer to the CC list, Quentin?
>>
>> I've already talked to Quentin and they want libopenssl as a
>> requirement.
>>
>> https://lore.kernel.org/linux-perf-users/e44f70bf-8f50-4a4b-97b8-eaf988aabced@kernel.org/
> 
> You can have libopenssl as a requirement and have a bootstrap bpftool
> that doesn't require it, as the bootstrap version only provides
> minimal features typically to just build bpftool. You can also have
> libopenssl as a requirement and have a feature test that fails in the
> bpftool build saying you are missing a requirement. Having the perf
> build detect that a feature for the bpftool dependency is missing is
> fine as we can then recommend installing bpftool or the missing
> dependency, but doing this without bpftool also doing something just
> seems inconsistent.
> 
> Thanks,
> Ian


From bpftool's perspective, it doesn't really make sense to skip the
OpenSSL dependency for the bootstrap version, given that we want to ship
the main binary with the signing feature: so you could build a bootstrap
version without signing, but you won't be able to use it to build the
final binary because, well, you miss a required dependency.

This being said, if it really makes it easier for you to build perf, I'd
be open to adjusting the bootstrap version, as long as it doesn't affect
the final bpftool build. It might lead to further headaches if someone
needs to sign the BPF programs when building perf in the future though.

I'm also OK with adding a dependency check with a simple build error for
bpftool, although we don't currently do it for other required
dependencies in bpftool.

Quentin

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

* Re: [PATCH 1/2] tools/build: Add a feature test for libopenssl
  2025-12-05 10:28         ` Quentin Monnet
@ 2025-12-16  6:19           ` Namhyung Kim
  0 siblings, 0 replies; 9+ messages in thread
From: Namhyung Kim @ 2025-12-16  6:19 UTC (permalink / raw)
  To: Quentin Monnet
  Cc: Ian Rogers, Arnaldo Carvalho de Melo, bpf, James Clark, Jiri Olsa,
	Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users, KP Singh

Hello,

On Fri, Dec 05, 2025 at 10:28:03AM +0000, Quentin Monnet wrote:
> 2025-12-04 22:27 UTC-0800 ~ Ian Rogers <irogers@google.com>
> > On Thu, Dec 4, 2025 at 3:52 PM Namhyung Kim <namhyung@kernel.org> wrote:
> >>
> >> On Thu, Dec 04, 2025 at 01:16:54PM -0300, Arnaldo Carvalho de Melo wrote:
> >>> On Wed, Dec 03, 2025 at 04:34:56PM -0800, Ian Rogers wrote:
> >>>> On Wed, Dec 3, 2025 at 3:29 PM Namhyung Kim <namhyung@kernel.org> wrote:
> >>>>>
> >>>>> It's used by bpftool and the kernel build.  Let's add a feature test so
> >>>>> that perf can decide what to do based on the availability.
> >>>>
> >>>> It seems strange to add a feature test that bpftool is missing and
> >>>> then use it only in the perf build. The signing of bpf programs isn't
> >>>
> >>> It is strange indeed, I agree that since we don't use BPF signing at
> >>> this point in the perf BPf skels, then we could just bootstrap a bpftool
> >>> without such feature and continue building the existing features.
> >>>
> >>> Adding the bpftool maintainer to the CC list, Quentin?
> >>
> >> I've already talked to Quentin and they want libopenssl as a
> >> requirement.
> >>
> >> https://lore.kernel.org/linux-perf-users/e44f70bf-8f50-4a4b-97b8-eaf988aabced@kernel.org/
> > 
> > You can have libopenssl as a requirement and have a bootstrap bpftool
> > that doesn't require it, as the bootstrap version only provides
> > minimal features typically to just build bpftool. You can also have
> > libopenssl as a requirement and have a feature test that fails in the
> > bpftool build saying you are missing a requirement. Having the perf
> > build detect that a feature for the bpftool dependency is missing is
> > fine as we can then recommend installing bpftool or the missing
> > dependency, but doing this without bpftool also doing something just
> > seems inconsistent.
> > 
> > Thanks,
> > Ian
> 
> 
> From bpftool's perspective, it doesn't really make sense to skip the
> OpenSSL dependency for the bootstrap version, given that we want to ship
> the main binary with the signing feature: so you could build a bootstrap
> version without signing, but you won't be able to use it to build the
> final binary because, well, you miss a required dependency.
> 
> This being said, if it really makes it easier for you to build perf, I'd
> be open to adjusting the bootstrap version, as long as it doesn't affect
> the final bpftool build. It might lead to further headaches if someone
> needs to sign the BPF programs when building perf in the future though.
> 
> I'm also OK with adding a dependency check with a simple build error for
> bpftool, although we don't currently do it for other required
> dependencies in bpftool.

Ok, to make a progress, I'll add this series to perf-tools tree for
v6.19 first.

Thanks,
Namhyung


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

end of thread, other threads:[~2025-12-16  6:19 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-03 23:29 [PATCH 1/2] tools/build: Add a feature test for libopenssl Namhyung Kim
2025-12-03 23:29 ` [PATCH 2/2] perf tools: Disable BPF skeleton if no libopenssl found Namhyung Kim
2025-12-04  0:34 ` [PATCH 1/2] tools/build: Add a feature test for libopenssl Ian Rogers
2025-12-04  7:52   ` Namhyung Kim
2025-12-04 16:16   ` Arnaldo Carvalho de Melo
2025-12-04 23:52     ` Namhyung Kim
2025-12-05  6:27       ` Ian Rogers
2025-12-05 10:28         ` Quentin Monnet
2025-12-16  6:19           ` Namhyung Kim

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