Re: [PATCH rdma-next] kbuild: Respect request to silent output when merging configs

From: Leon Romanovsky
Date: Wed Dec 04 2024 - 03:49:56 EST


On Wed, Dec 04, 2024 at 05:25:50PM +0900, Masahiro Yamada wrote:
> On Tue, Dec 3, 2024 at 10:55 PM Leon Romanovsky <leon@xxxxxxxxxx> wrote:
> >
> > From: Leon Romanovsky <leonro@xxxxxxxxxx>
> >
> > Builds with -s option (silent) are supposed to silence all output
> > which is not an error. It is the case for target builds but not
> > for configs. These builds generate prints like this:
> >
> > ➜ kernel git:(rdma-next) make -s defconfig debug.config
> > Using .config as base
> > Merging ./kernel/configs/debug.config
> > #
> > # merged configuration written to .config (needs make)
> > #
> > ...
> > Value of CONFIG_FUNCTION_TRACER is redefined by fragment ./kernel/configs/debug.config:
> > Previous value: # CONFIG_FUNCTION_TRACER is not set
> > New value: CONFIG_FUNCTION_TRACER=y
> > ----
> >
> > Let's honor -s option and hide all non-error output.
>
>
> Is it necessary to add the --quiet option to every script?
>
> Kbuild already provides a generic way to suppress the stdout
> with 'make -s'.
>
> The following code works for me.
> 'make defconfig debug.config' is as verbose as before.
> 'make -s defconfig debug.config' is really silent.

This is exactly what I'm doing. I'm using -s option and added -q to very
specific merge_config script, because "-s" is already in use in that
script.

Before my change on 40384c840ea1 ("Linux 6.13-rc1"):
[leonro@e534d5fa4327 kernel]$ make -s defconfig debug.config
Using .config as base
Merging ./kernel/configs/debug.config
Value of CONFIG_DYNAMIC_DEBUG is redefined by fragment ./kernel/configs/debug.config:
Previous value: # CONFIG_DYNAMIC_DEBUG is not set
New value: CONFIG_DYNAMIC_DEBUG=y

Value of CONFIG_PRINTK_CALLER is redefined by fragment ./kernel/configs/debug.config:
Previous value: # CONFIG_PRINTK_CALLER is not set
New value: CONFIG_PRINTK_CALLER=y
...

After my change:
[leonro@4dd2c2078dff kernel]$ make -s defconfig debug.config <--- silent

Thanks

>
>
>
> diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
> index a0a0be38cbdc..fb50bd4f4103 100644
> --- a/scripts/kconfig/Makefile
> +++ b/scripts/kconfig/Makefile
> @@ -105,9 +105,11 @@ configfiles = $(wildcard
> $(srctree)/kernel/configs/$(1) $(srctree)/arch/$(SRCARC
> all-config-fragments = $(call configfiles,*.config)
> config-fragments = $(call configfiles,$@)
>
> +cmd_merge_fragments = $(srctree)/scripts/kconfig/merge_config.sh -m
> $(KCONFIG_CONFIG) $(config-fragments)
> +
> %.config: $(obj)/conf
> $(if $(config-fragments),, $(error $@ fragment does not exists
> on this architecture))
> - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh
> -m $(KCONFIG_CONFIG) $(config-fragments)
> + $(call cmd,merge_fragments)
> $(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
>
> PHONY += tinyconfig
>
>
>
>
>
> --
> Best Regards
> Masahiro Yamada