All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Sasha Levin <sashal@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	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>, Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	James Clark <james.clark@linaro.org>,
	linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] perf build: Add MINIMAL=1 to build without optional features
Date: Wed, 21 Oct 2026 16:17:29 -0700	[thread overview]
Message-ID: <atlICVt3ItifkPZb@google.com> (raw)
In-Reply-To: <20261018135321.3986899-1-sashal@kernel.org>

On Sun, Oct 18, 2026 at 09:53:21AM -0400, Sasha Levin wrote:
> Turning off every optional feature takes a long list of NO_* variables,
> and the list has to follow features as they are added and renamed. The
> one in tests/make for make_minimal has fallen behind: it leaves
> libtraceevent, jevents, slang, AIO, LZMA, zlib, libLLVM and Rust to be
> detected, so a make_minimal build still needs libtraceevent and python.
> 
> Add MINIMAL=1, which turns off every optional feature, the BPF
> skeletons, and the shellcheck, mypy and pylint runs. perf then builds,
> natively or cross, with no library beyond the C library and without
> python, pkg-config, clang or rustc, and the result does not depend on
> what is installed on the build machine.
> 
> A MINIMAL=1 build also leaves out the notices that post unwind and
> python support are disabled, which it asked for, and the one about the
> pkg-config search path for cross builds, as pkg-config is not needed
> then.
> 
> It is handled in Makefile.perf rather than Makefile.config, as
> Makefile.config is included after the pkg-config, shellcheck, mypy and
> pylint setup.
> 
> Use it for make_minimal in tests/make.
> 
> Suggested-by: Ian Rogers <irogers@google.com>
> Link: https://lore.kernel.org/r/CAP-5=fWFY-tpJz2vcBZvurwdZY5gwd8cuTemE9q1rtZ0Vi0dng@mail.gmail.com
> Assisted-by: LLM
> Signed-off-by: Sasha Levin <sashal@kernel.org>

Acked-by: Namhyung Kim <namhyung@kernel.org>

Thanks,
Namhyung

> ---
> The kbuild series that builds perf with MINIMAL=1 carries the mainline
> version of this patch:
> https://lore.kernel.org/r/20261016143143.3613501-1-sashal@kernel.org
> 
>  tools/perf/Makefile.config |  8 ++++++--
>  tools/perf/Makefile.perf   | 42 ++++++++++++++++++++++++++++++++++++--
>  tools/perf/tests/make      |  8 +-------
>  3 files changed, 47 insertions(+), 11 deletions(-)
> 
> diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
> index b4764f69f47f4..4af7934887539 100644
> --- a/tools/perf/Makefile.config
> +++ b/tools/perf/Makefile.config
> @@ -753,7 +753,9 @@ dwarf-post-unwind-text := BUG
>  # setup DWARF post unwinder
>  ifdef NO_LIBUNWIND
>    ifdef NO_LIBDW
> -    $(warning Disabling post unwind, no support found.)
> +    ifneq ($(MINIMAL),1)
> +      $(warning Disabling post unwind, no support found.)
> +    endif
>      dwarf-post-unwind := 0
>    else
>      dwarf-post-unwind-text := libdw
> @@ -828,7 +830,9 @@ endif
>  
>  PYTHON_EXTENSION_SUFFIX := '.so'
>  ifdef NO_PYTHON_MODULE
> -  $(call disable-python,Python support disabled by user)
> +  ifneq ($(MINIMAL),1)
> +    $(call disable-python,Python support disabled by user)
> +  endif
>  else
>  
>    ifndef PYTHON
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index 2d9379fea2672..5297fc15a3c9e 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -129,6 +129,9 @@ include ../scripts/utilities.mak
>  # Define NO_MYPY if you do not want to run mypy during build
>  #
>  # Define NO_PYLINT if you do not want to run pylint during build
> +#
> +# Define MINIMAL=1 to build without any optional feature, needing only a C
> +# compiler and library, flex and bison
>  
>  # As per kernel Makefile, avoid funny character set dependencies
>  unexport LC_ALL
> @@ -174,6 +177,39 @@ endef
>  
>  LD += $(EXTRA_LDFLAGS)
>  
> +# MINIMAL=1 is handled here rather than in Makefile.config, which is included
> +# after the pkg-config, shellcheck, mypy and pylint setup below
> +ifeq ($(MINIMAL),1)
> +  NO_LIBELF := 1
> +  NO_LIBDW := 1
> +  NO_LIBTRACEEVENT := 1
> +  NO_JEVENTS := 1
> +  NO_PYTHON_MODULE := 1
> +  NO_LIBBPF := 1
> +  BUILD_BPF_SKEL := 0
> +  NO_SLANG := 1
> +  NO_DEMANGLE := 1
> +  NO_BACKTRACE := 1
> +  NO_AIO := 1
> +  NO_ZLIB := 1
> +  NO_LZMA := 1
> +  NO_LIBZSTD := 1
> +  NO_LIBNUMA := 1
> +  NO_LIBLLVM := 1
> +  NO_CAPSTONE := 1
> +  NO_LIBPFM4 := 1
> +  NO_LIBDEBUGINFOD := 1
> +  NO_BABELTRACE2 := 1
> +  NO_SDT := 1
> +  NO_JVMTI := 1
> +  NO_RUST := 1
> +  NO_PERF_READ_VDSO32 := 1
> +  NO_PERF_READ_VDSOX32 := 1
> +  NO_SHELLCHECK := 1
> +  NO_MYPY := 1
> +  NO_PYLINT := 1
> +endif
> +
>  # Some distros provide the command $(CROSS_COMPILE)pkg-config for
>  # searching packges installed with Multiarch. Use it for cross
>  # compilation if it is existed.
> @@ -195,8 +231,10 @@ else
>        PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/share/pkgconfig/
>        PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/
>        export PKG_CONFIG_LIBDIR
> -      $(warning Missing PKG_CONFIG_LIBDIR, PKG_CONFIG_PATH and PKG_CONFIG_SYSROOT_DIR for cross compilation,)
> -      $(warning set PKG_CONFIG_LIBDIR for using Multiarch libs.)
> +      ifneq ($(MINIMAL),1)
> +        $(warning Missing PKG_CONFIG_LIBDIR, PKG_CONFIG_PATH and PKG_CONFIG_SYSROOT_DIR for cross compilation,)
> +        $(warning set PKG_CONFIG_LIBDIR for using Multiarch libs.)
> +      endif
>      endif
>    endif
>  endif
> diff --git a/tools/perf/tests/make b/tools/perf/tests/make
> index 7524de5228029..bef5599b95d6f 100644
> --- a/tools/perf/tests/make
> +++ b/tools/perf/tests/make
> @@ -119,13 +119,7 @@ make_install_prefix       := install prefix=/tmp/krava
>  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_PYTHON_MODULE=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_LIBBPF=1
> -make_minimal        += NO_SDT=1 NO_JVMTI=1 NO_LIBZSTD=1
> -make_minimal        += NO_CAPSTONE=1
> +make_minimal        := MINIMAL=1
>  
>  # binutils 2_42 and newer have bfd_thread_init()
>  new_libbfd := $(shell echo '#include <bfd.h>' | $(CC) -E -x c - | grep bfd_thread_init)
> 
> base-commit: 1c90f0a3c8a1c4e38f9edd97af9e20848805a7fb
> -- 
> 2.53.0
> 

  parent reply	other threads:[~2026-10-21 23:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-18 13:53 [PATCH] perf build: Add MINIMAL=1 to build without optional features Sasha Levin
2026-10-18 13:57 ` sashiko-bot
2026-10-21 23:17 ` Namhyung Kim [this message]
2026-10-22  1:40   ` Arnaldo Carvalho de Melo

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=atlICVt3ItifkPZb@google.com \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --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=peterz@infradead.org \
    --cc=sashal@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.