Linux kbuild/kconfig development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sasha Levin" <sashal@kernel.org>,
	"Nathan Chancellor" <nathan@kernel.org>,
	"Nicolas Schier" <nsc@kernel.org>,
	linux-kbuild@vger.kernel.org
Cc: "Shuah Khan" <shuah@kernel.org>,
	"Peter Zijlstra" <peterz@infradead.org>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Arnaldo Carvalho de Melo" <acme@kernel.org>,
	"Namhyung Kim" <namhyung@kernel.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Alexander Shishkin" <alexander.shishkin@linux.intel.com>,
	"Jiri Olsa" <jolsa@kernel.org>, "Ian Rogers" <irogers@google.com>,
	"Adrian Hunter" <adrian.hunter@intel.com>,
	"James Clark" <james.clark@linaro.org>,
	linux-perf-users@vger.kernel.org,
	"Thomas Weißschuh" <linux@weissschuh.net>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Thorsten Leemhuis" <linux@leemhuis.info>
Subject: Re: [PATCH v4 4/7] tools: build perf in tools_build
Date: Fri, 13 Nov 2026 19:55:04 +0000	[thread overview]
Message-ID: <sashiko-outbox-213586@kernel.org> (raw)
In-Reply-To: <20261112195427.3411746-5-sashal@kernel.org>

Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [Medium] tools: missing python-config and Python 3.9 check in
  TOOLS_BUILD_PERF_LIBS
- [Medium] tools: TOOLS_BUILD_PERF_LIBS probe mismatches tools/perf
  pkg-config and link checks
--

commit c19562a2a39be79f326367f65fd8b1eb86f840c4
Author: Sasha Levin <sashal@kernel.org>

tools: build perf in tools_build

This commit adds CONFIG_TOOLS_BUILD_PERF and CONFIG_TOOLS_BUILD_PERF_MINIMAL
to build tools/perf as part of tools_build.

> diff --git a/tools/Kconfig b/tools/Kconfig
> index 04896e6b0ca51..ab1e15beb9fe3 100644
> --- a/tools/Kconfig
> +++ b/tools/Kconfig
> @@ -60,6 +60,30 @@ config TOOLS_BUILD_IIO
>  	help
>  	  Build tools/iio (lsiio, iio_event_monitor, iio_generic_buffer).
>  
> +config TOOLS_BUILD_PERF
> +	bool "perf"
> +	help
> +	  Build tools/perf. As in a standalone perf build, optional
> +	  features are enabled when the libraries they need are installed.
> +
> +# What perf does not build without, unless it is built with MINIMAL=1
> +config TOOLS_BUILD_PERF_LIBS
> +	def_bool $(success,command -v $(CROSS_COMPILE)pkg-config || command -v pkg-config) && \
> +		 $(success,echo 'int main(void) { return 0; }' | $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag) `$(CROSS_COMPILE)pkg-config --cflags --libs libtraceevent 2>/dev/null || pkg-config --cflags --libs libtraceevent` -include libelf.h -include trace-seq.h -x c - -o /dev/null -lelf)

[Severity: Medium]
Can TOOLS_BUILD_PERF_LIBS evaluate to y when tools/perf feature detection for
libtraceevent or libelf will fail?

During a cross-build where $(CROSS_COMPILE)pkg-config is installed on the host
but target libtraceevent.pc is missing, $(CROSS_COMPILE)pkg-config fails and
the || fallback runs the host pkg-config, returning host flags, whereas
tools/perf/Makefile.perf uses $(CROSS_COMPILE)pkg-config exclusively when
present.  Conversely, when $(CROSS_COMPILE)pkg-config is absent,
tools/perf/Makefile.perf exports PKG_CONFIG_LIBDIR for the target multiarch
directories, while the Kconfig check runs host pkg-config with no
PKG_CONFIG_LIBDIR set.

In addition, because pkg-config runs inside backticks without an explicit
-ltraceevent on the compiler command line, a failing pkg-config expands to an
empty string and still succeeds if trace-seq.h is in the include path.
Passing --libs before -x c - and compiling an empty main() without calling
symbols such as elf_begin() or trace_seq_init() also succeeds with static
archives even when transitive dependencies required by tools/build/feature/
checks are missing.

> +
> +config TOOLS_BUILD_PERF_MINIMAL
> +	bool "Build perf with all optional features disabled" if TOOLS_BUILD_PERF_LIBS && !COMPILE_TEST
> +	depends on TOOLS_BUILD_PERF
> +	default !TOOLS_BUILD_PERF_LIBS || COMPILE_TEST

[Severity: Medium]
Does building perf with CONFIG_TOOLS_BUILD_PERF_MINIMAL=n fail when
python3-config is missing or Python is older than 3.9?

Without MINIMAL=1 (which sets NO_JEVENTS=1), x86_64 and arm64 perf builds
enable jevents generation:

tools/perf/Makefile.config:
    ...
    override PYTHON_CONFIG := $(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON_AUTO))
    override PYTHON := $(call get-executable-or-default,PYTHON,$(subst -config,,$(PYTHON_CONFIG)))
    ...
    ifneq ($(NO_JEVENTS),1)
      NO_JEVENTS := 0
      ifndef PYTHON
        $(error ERROR: No python interpreter needed for jevents generation. Install python or build with NO_JEVENTS=1.)
      else
        ifneq ($(PYTHON_39_GOOD), 1)
          $(error ERROR: Python interpreter needed for jevents generation too old (older than 3.9). Install a newer python or build with NO_JEVENTS=1.)
        endif
      endif
    endif

Because Makefile.config derives PYTHON from PYTHON_CONFIG (python3-config or
python-config, typically packaged in python3-dev / python3-devel rather than
the base python3 package) and TOOLS_BUILD_PERF_LIBS does not check for it or
Python >= 3.9, TOOLS_BUILD_PERF_MINIMAL defaults to n and the perf build
aborts when pkg-config, libelf, and libtraceevent are installed without
python3-config.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261112195427.3411746-1-sashal@kernel.org?part=4

  reply	other threads:[~2026-11-13 19:55 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-12 19:54 [PATCH v4 0/7] kbuild: build the userspace tools in tools/ with the kernel Sasha Levin
2026-11-12 19:54 ` [PATCH v4 1/7] kbuild: factor the userspace ABI flags out into KBUILD_USERABI Sasha Levin
2026-11-12 19:54 ` [PATCH v4 2/7] kbuild: add "make tools_build" to build userspace tools from tools/ Sasha Levin
2026-11-13 19:55   ` sashiko-bot
2026-11-12 19:54 ` [PATCH v4 3/7] perf build: Add MINIMAL=1 to build without optional features Sasha Levin
2026-11-12 19:54 ` [PATCH v4 4/7] tools: build perf in tools_build Sasha Levin
2026-11-13 19:55   ` sashiko-bot [this message]
2026-11-12 19:54 ` [PATCH v4 5/7] tools: build kernel selftests " Sasha Levin
2026-11-12 19:54 ` [PATCH v4 6/7] kbuild: build the tools selected in tools/Kconfig as part of "make all" Sasha Levin
2026-11-13 19:55   ` sashiko-bot
2026-11-12 19:54 ` [PATCH v4 7/7] Documentation: describe building tools with the kernel Sasha Levin
2026-11-12 20:23 ` [PATCH v4 0/7] kbuild: build the userspace tools in tools/ " Andrew Morton
2026-11-13  1:52   ` Sasha Levin

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=sashiko-outbox-213586@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=linux@leemhuis.info \
    --cc=linux@weissschuh.net \
    --cc=mark.rutland@arm.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=nathan@kernel.org \
    --cc=nsc@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sashal@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=shuah@kernel.org \
    /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