lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAP-5=fVX+bLBRJCiziDi_hBySgv2NFtDoghtpheSSxVAvvETGw@mail.gmail.com>
Date: Wed, 17 Sep 2025 11:01:51 -0700
From: Ian Rogers <irogers@...gle.com>
To: Michael Petlan <mpetlan@...hat.com>, Peter Zijlstra <peterz@...radead.org>, 
	Ingo Molnar <mingo@...hat.com>, Arnaldo Carvalho de Melo <acme@...nel.org>, Namhyung Kim <namhyung@...nel.org>, 
	Mark Rutland <mark.rutland@....com>, 
	Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Jiri Olsa <jolsa@...nel.org>, 
	Ian Rogers <irogers@...gle.com>, Adrian Hunter <adrian.hunter@...el.com>, 
	Kan Liang <kan.liang@...ux.intel.com>, "Steven Rostedt (Google)" <rostedt@...dmis.org>, 
	James Clark <james.clark@...aro.org>, Tomas Glozar <tglozar@...hat.com>, 
	Quentin Monnet <qmo@...nel.org>, Leo Yan <leo.yan@....com>, Charlie Jenkins <charlie@...osinc.com>, 
	linux-kernel@...r.kernel.org, linux-perf-users@...r.kernel.org
Subject: Re: [PATCH v1] tools build: Make libperl opt-in rather than opt-out, deprecate

On Mon, Sep 8, 2025 at 11:19 AM Ian Rogers <irogers@...gle.com> wrote:
>
> If libperl is installed then the perf tool build will build against
> it. There appears to be limited interest in the scripting support for
> perl so let's make it opt-in and deprecate it.
>
> Signed-off-by: Ian Rogers <irogers@...gle.com>
> ---
> In the future it would be nice to refactor the python support, for
> example, so that perf doesn't steal the main thread which UIs like
> textual assume they can have. When such work is done, any equivalent
> perl work will be a challenge and it might just be best to delete it.

In:
https://lore.kernel.org/lkml/aMrk03gigBlGcYLK@x1/
Arnaldo mentioned:

> Maybe we should be a tad more cautious and start with emitting a warning
> that "libperl is deprecated (holler if you disagree if you use it!)" and
> then make it opt-in, and then remove it.

With this patch applied you need to add LIBPERL=1 to get libperl
support in perf - there is no warning if libperl is missing, but
building will fail if libperl is missing and the build has LIBPERL=1.
The perf version output is changed to:
```
$ perf version --build-options
perf version 6.17.rc3.g8eca69269947
                   aio: [ on  ]  # HAVE_AIO_SUPPORT
                   bpf: [ on  ]  # HAVE_LIBBPF_SUPPORT
         bpf_skeletons: [ on  ]  # HAVE_BPF_SKEL
            debuginfod: [ on  ]  # HAVE_DEBUGINFOD_SUPPORT
                 dwarf: [ on  ]  # HAVE_LIBDW_SUPPORT
    dwarf_getlocations: [ on  ]  # HAVE_LIBDW_SUPPORT
          dwarf-unwind: [ on  ]  # HAVE_DWARF_UNWIND_SUPPORT
              auxtrace: [ on  ]  # HAVE_AUXTRACE_SUPPORT
                libbfd: [ OFF ]  # HAVE_LIBBFD_SUPPORT ( tip:
Deprecated, license incompatibility, use BUILD_NONDISTRO=1 and install
binutils-dev[el] )
        libbpf-strings: [ on  ]  # HAVE_LIBBPF_STRINGS_SUPPORT
           libcapstone: [ on  ]  # HAVE_LIBCAPSTONE_SUPPORT
    libdw-dwarf-unwind: [ on  ]  # HAVE_LIBDW_SUPPORT
                libelf: [ on  ]  # HAVE_LIBELF_SUPPORT
               libnuma: [ on  ]  # HAVE_LIBNUMA_SUPPORT
            libopencsd: [ OFF ]  # HAVE_CSTRACE_SUPPORT
               libperl: [ OFF ]  # HAVE_LIBPERL_SUPPORT ( tip:
Deprecated, use LIBPERL=1 and install libperl-dev to build with it )
               libpfm4: [ on  ]  # HAVE_LIBPFM
             libpython: [ on  ]  # HAVE_LIBPYTHON_SUPPORT
              libslang: [ on  ]  # HAVE_SLANG_SUPPORT
         libtraceevent: [ on  ]  # HAVE_LIBTRACEEVENT
             libunwind: [ OFF ]  # HAVE_LIBUNWIND_SUPPORT ( tip:
Deprecated, use LIBUNWIND=1 and install libunwind-dev[el] to build
with it )
                  lzma: [ on  ]  # HAVE_LZMA_SUPPORT
numa_num_possible_cpus: [ on  ]  # HAVE_LIBNUMA_SUPPORT
                  zlib: [ on  ]  # HAVE_ZLIB_SUPPORT
                  zstd: [ on  ]  # HAVE_ZSTD_SUPPORT
```

ie there is a tip saying about deprecation and how to get support back.

Thanks,
Ian


> ---
>  tools/build/Makefile.feature   |  3 +--
>  tools/build/feature/test-all.c |  9 ++-------
>  tools/perf/Makefile.config     | 12 +++---------
>  tools/perf/Makefile.perf       |  4 ++--
>  tools/perf/builtin-check.c     |  2 +-
>  tools/perf/tests/make          |  8 ++++----
>  6 files changed, 13 insertions(+), 25 deletions(-)
>
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index 649c5ab8e8f2..9c1a69d26f51 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -80,7 +80,6 @@ FEATURE_TESTS_BASIC :=                  \
>          libelf-zstd                     \
>          libnuma                         \
>          numa_num_possible_cpus          \
> -        libperl                         \
>          libpython                       \
>          libslang                        \
>          libtraceevent                   \
> @@ -121,6 +120,7 @@ FEATURE_TESTS_EXTRA :=                  \
>           libbfd-liberty                 \
>           libbfd-liberty-z               \
>           libopencsd                     \
> +         libperl                        \
>           cxx                            \
>           llvm                           \
>           clang                          \
> @@ -144,7 +144,6 @@ FEATURE_DISPLAY ?=              \
>           libelf                 \
>           libnuma                \
>           numa_num_possible_cpus \
> -         libperl                \
>           libpython              \
>           libcapstone            \
>           llvm-perf              \
> diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
> index 4419fb4710bd..e1847db6f8e6 100644
> --- a/tools/build/feature/test-all.c
> +++ b/tools/build/feature/test-all.c
> @@ -7,17 +7,13 @@
>   */
>
>  /*
> - * Quirk: Python and Perl headers cannot be in arbitrary places, so keep
> - * these 3 testcases at the top:
> + * Quirk: Python headers cannot be in arbitrary places, so keep this testcase at
> + * the top:
>   */
>  #define main main_test_libpython
>  # include "test-libpython.c"
>  #undef main
>
> -#define main main_test_libperl
> -# include "test-libperl.c"
> -#undef main
> -
>  #define main main_test_hello
>  # include "test-hello.c"
>  #undef main
> @@ -161,7 +157,6 @@
>  int main(int argc, char *argv[])
>  {
>         main_test_libpython();
> -       main_test_libperl();
>         main_test_hello();
>         main_test_libelf();
>         main_test_get_current_dir_name();
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index 5a5832ee7b53..0f4b297fbacc 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -817,9 +817,7 @@ ifdef GTK2
>    endif
>  endif
>
> -ifdef NO_LIBPERL
> -  CFLAGS += -DNO_LIBPERL
> -else
> +ifdef LIBPERL
>    PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
>    PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
>    PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
> @@ -829,17 +827,13 @@ else
>    PERL_EMBED_LDOPTS := $(filter-out -specs=%,$(PERL_EMBED_LDOPTS))
>    FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
>
> +  $(call feature_check,libperl)
>    ifneq ($(feature-libperl), 1)
> -    CFLAGS += -DNO_LIBPERL
> -    NO_LIBPERL := 1
> -    $(warning Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev)
> +    $(error Missing perl devel files. Please install perl-ExtUtils-Embed/libperl-dev)
>    else
>      LDFLAGS += $(PERL_EMBED_LDFLAGS)
>      EXTLIBS += $(PERL_EMBED_LIBADD)
>      CFLAGS += -DHAVE_LIBPERL_SUPPORT
> -    ifeq ($(CC_NO_CLANG), 0)
> -      CFLAGS += -Wno-compound-token-split-by-macro
> -    endif
>      $(call detected,CONFIG_LIBPERL)
>    endif
>  endif
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index e2150acc2c13..7d6ac03a7109 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -17,7 +17,7 @@ include ../scripts/utilities.mak
>  #
>  # Define CROSS_COMPILE as prefix name of compiler if you want cross-builds.
>  #
> -# Define NO_LIBPERL to disable perl script extension.
> +# Define LIBPERL to enable perl script extension.
>  #
>  # Define NO_LIBPYTHON to disable python script extension.
>  #
> @@ -1103,7 +1103,7 @@ endif
>                 $(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
>         $(call QUIET_INSTALL, perf-iostat) \
>                 $(INSTALL) $(OUTPUT)perf-iostat -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
> -ifndef NO_LIBPERL
> +ifdef LIBPERL
>         $(call QUIET_INSTALL, perl-scripts) \
>                 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'; \
>                 $(INSTALL) scripts/perl/Perf-Trace-Util/lib/Perf/Trace/* -m 644 -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'; \
> diff --git a/tools/perf/builtin-check.c b/tools/perf/builtin-check.c
> index b1e205871ab1..5457762f7dd5 100644
> --- a/tools/perf/builtin-check.c
> +++ b/tools/perf/builtin-check.c
> @@ -49,7 +49,7 @@ struct feature_status supported_features[] = {
>         FEATURE_STATUS("libelf", HAVE_LIBELF_SUPPORT),
>         FEATURE_STATUS("libnuma", HAVE_LIBNUMA_SUPPORT),
>         FEATURE_STATUS("libopencsd", HAVE_CSTRACE_SUPPORT),
> -       FEATURE_STATUS("libperl", HAVE_LIBPERL_SUPPORT),
> +       FEATURE_STATUS_TIP("libperl", HAVE_LIBPERL_SUPPORT, "Deprecated, use LIBPERL=1 and install libperl-dev to build with it"),
>         FEATURE_STATUS("libpfm4", HAVE_LIBPFM),
>         FEATURE_STATUS("libpython", HAVE_LIBPYTHON_SUPPORT),
>         FEATURE_STATUS("libslang", HAVE_SLANG_SUPPORT),
> diff --git a/tools/perf/tests/make b/tools/perf/tests/make
> index c574a678c28a..b650ce8864ed 100644
> --- a/tools/perf/tests/make
> +++ b/tools/perf/tests/make
> @@ -73,9 +73,9 @@ make_extra_tests    := EXTRA_TESTS=1
>  make_jevents_all    := JEVENTS_ARCH=all
>  make_no_bpf_skel    := BUILD_BPF_SKEL=0
>  make_gen_vmlinux_h  := GEN_VMLINUX_H=1
> -make_no_libperl     := NO_LIBPERL=1
> +make_libperl        := LIBPERL=1
>  make_no_libpython   := NO_LIBPYTHON=1
> -make_no_scripts     := NO_LIBPYTHON=1 NO_LIBPERL=1
> +make_no_scripts     := NO_LIBPYTHON=1
>  make_no_slang       := NO_SLANG=1
>  make_no_gtk2        := NO_GTK2=1
>  make_no_ui          := NO_SLANG=1 NO_GTK2=1
> @@ -118,7 +118,7 @@ make_install_prefix_slash := install prefix=/tmp/krava/
>  make_static         := LDFLAGS=-static NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 NO_JVMTI=1 NO_LIBTRACEEVENT=1 NO_LIBELF=1
>
>  # all the NO_* variable combined
> -make_minimal        := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_GTK2=1
> +make_minimal        := NO_LIBPYTHON=1 NO_GTK2=1
>  make_minimal        += NO_DEMANGLE=1 NO_LIBELF=1 NO_BACKTRACE=1
>  make_minimal        += NO_LIBNUMA=1 NO_LIBBIONIC=1 NO_LIBDW=1
>  make_minimal        += NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1
> @@ -143,7 +143,7 @@ run += make_extra_tests
>  run += make_jevents_all
>  run += make_no_bpf_skel
>  run += make_gen_vmlinux_h
> -run += make_no_libperl
> +run += make_libperl
>  run += make_no_libpython
>  run += make_no_scripts
>  run += make_no_slang
> --
> 2.51.0.384.g4c02a37b29-goog
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ