Re: [PATCH 1/1] tools build: Don't set libunwind as available if test-all.c build succeeds
From: Namhyung Kim
Date: Fri Apr 04 2025 - 16:30:25 EST
On Fri, Apr 04, 2025 at 03:55:18PM -0300, Arnaldo Carvalho de Melo wrote:
> The tools/build/feature/test-all.c file tries to detect the expected,
> most common set of libraries/features we expect to have available to
> build perf with.
>
> At some point libunwind was deemed not to be part of that set of
> libraries, but the patches making it to be opt-in ended up forgetting
> some details, fix one more.
>
> Testing it:
>
> $ rm -rf /tmp/build/$(basename $PWD)/ ; mkdir -p /tmp/build/$(basename $PWD)/
> $ rpm -q libunwind-devel
> libunwind-devel-1.8.0-3.fc40.x86_64
> $ make -k LIBUNWIND=1 CORESIGHT=1 O=/tmp/build/$(basename $PWD)/ -C tools/perf install-bin |& grep unwind && ldd ~/bin/perf | grep unwind
> ... libunwind: [ on ]
> CC /tmp/build/perf-tools-next/arch/x86/tests/dwarf-unwind.o
> CC /tmp/build/perf-tools-next/arch/x86/util/unwind-libunwind.o
> CC /tmp/build/perf-tools-next/util/arm64-frame-pointer-unwind-support.o
> CC /tmp/build/perf-tools-next/tests/dwarf-unwind.o
> CC /tmp/build/perf-tools-next/util/unwind-libunwind-local.o
> CC /tmp/build/perf-tools-next/util/unwind-libunwind.o
> libunwind-x86_64.so.8 => /lib64/libunwind-x86_64.so.8 (0x00007f615a549000)
> libunwind.so.8 => /lib64/libunwind.so.8 (0x00007f615a52f000)
> $ sudo rpm -e libunwind-devel
> $ rm -rf /tmp/build/$(basename $PWD)/ ; mkdir -p /tmp/build/$(basename $PWD)/
> $ make -k LIBUNWIND=1 CORESIGHT=1 O=/tmp/build/$(basename $PWD)/ -C tools/perf install-bin |& grep unwind && ldd ~/bin/perf | grep unwind
> Makefile.config:653: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR
> ... libunwind: [ OFF ]
> CC /tmp/build/perf-tools-next/arch/x86/tests/dwarf-unwind.o
> CC /tmp/build/perf-tools-next/arch/x86/util/unwind-libdw.o
> CC /tmp/build/perf-tools-next/util/arm64-frame-pointer-unwind-support.o
> CC /tmp/build/perf-tools-next/tests/dwarf-unwind.o
> CC /tmp/build/perf-tools-next/util/unwind-libdw.o
> $
>
> Should be in a separate patch, but tired now, so also adding a message
> about the need to use LIBUNWIND=1 in the output when its not available,
> so done here as well.
>
> So, now when the devel files are not available we get:
>
> $ make -k LIBUNWIND=1 CORESIGHT=1 O=/tmp/build/$(basename $PWD)/ -C tools/perf install-bin |& grep unwind && ldd ~/bin/perf | grep unwind
> Makefile.config:653: No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR and set LIBUNWIND=1 in the make command line as it is opt-in now
> ... libunwind: [ OFF ]
> $
>
> Fixes: 13e17c9ff49119aa ("perf build: Make libunwind opt-in rather than opt-out")
> Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx>
> Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx>
> Cc: Ian Rogers <irogers@xxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: James Clark <james.clark@xxxxxxxxxx>
> Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
> Cc: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
> Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Link: https://lore.kernel.org/lkml/Z_AnsW9oJzFbhIFC@x1
> Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> ---
> tools/build/Makefile.feature | 1 -
> tools/perf/Makefile.config | 4 +++-
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
> index 1931b6321314684c..54c8adfb94662c03 100644
> --- a/tools/build/Makefile.feature
> +++ b/tools/build/Makefile.feature
> @@ -87,7 +87,6 @@ FEATURE_TESTS_BASIC := \
> libtracefs \
> libcpupower \
> libcrypto \
> - libunwind \
> pthread-attr-setaffinity-np \
> pthread-barrier \
> reallocarray \
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index eea95c6c0c71f76e..8ff1d8ade73fc061 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -624,6 +624,8 @@ endif
> ifndef NO_LIBUNWIND
> have_libunwind :=
>
> + $(call feature_check,libunwind)
> +
> $(call feature_check,libunwind-x86)
> ifeq ($(feature-libunwind-x86), 1)
> $(call detected,CONFIG_LIBUNWIND_X86)
> @@ -648,7 +650,7 @@ ifndef NO_LIBUNWIND
> endif
>
> ifneq ($(feature-libunwind), 1)
> - $(warning No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR)
> + $(warning No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR and set LIBUNWIND=1 in the make command line as it is opt-in now)
I think this message is only visible if users already give LIBUNWIND=1.
Thanks,
Namhyung
> NO_LOCAL_LIBUNWIND := 1
> else
> have_libunwind := 1
> --
> 2.48.1
>