kconfig: Add a build target for checking current config for issues

Message ID 20231228070941.3611649-1-tfiga@chromium.org
State New
Headers
Series kconfig: Add a build target for checking current config for issues |

Commit Message

Tomasz Figa Dec. 28, 2023, 7:09 a.m. UTC
  The new target is called 'checkconfig' and currently is basically an
alias for `listnewconfig` with KCONFIG_WARN_UNKNOWN_SYMBOLS set to true.
It can be used to validate if the current config is directly compatible
with the current kernel version or needs some manual adjustment.

Signed-off-by: Tomasz Figa <tfiga@chromium.org>
---
 scripts/kconfig/Makefile | 4 ++++
 1 file changed, 4 insertions(+)
  

Comments

Masahiro Yamada Dec. 28, 2023, 4:10 p.m. UTC | #1
On Thu, Dec 28, 2023 at 4:09 PM Tomasz Figa <tfiga@chromium.org> wrote:
>
> The new target is called 'checkconfig' and currently is basically an
> alias for `listnewconfig` with KCONFIG_WARN_UNKNOWN_SYMBOLS set to true.
> It can be used to validate if the current config is directly compatible
> with the current kernel version or needs some manual adjustment.
>
> Signed-off-by: Tomasz Figa <tfiga@chromium.org>


I rejected a new target in the past.

https://lore.kernel.org/all/20230817012007.131868-1-senozhatsky@chromium.org/T/#m55c37e3091158f8cb008d9e0b5c6bf3f5ead225a



Instead, you can run

  KCONFIG_WARN_UNKNOWN_SYMBOLS=1 make listnewconfig

or

  make W=c listnewconfig









> ---
>  scripts/kconfig/Makefile | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
> index 4eee155121a8..501cb9b76414 100644
> --- a/scripts/kconfig/Makefile
> +++ b/scripts/kconfig/Makefile
> @@ -81,6 +81,9 @@ PHONY += savedefconfig defconfig
>  savedefconfig: $(obj)/conf
>         $(Q)$< $(silent) --$@=defconfig $(Kconfig)
>
> +checkconfig: $(obj)/conf
> +       $(Q)KCONFIG_WARN_UNKNOWN_SYMBOLS=true $< --listnewconfig $(Kconfig)
> +
>  defconfig: $(obj)/conf
>  ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),)
>         @$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'"
> @@ -144,6 +147,7 @@ help:
>         @echo  '                    default value without prompting'
>         @echo  '  tinyconfig      - Configure the tiniest possible kernel'
>         @echo  '  testconfig      - Run Kconfig unit tests (requires python3 and pytest)'
> +       @echo  '  checkconfig     - Check current config for unrecognized and new symbols'
>         @echo  ''
>         @echo  'Configuration topic targets:'
>         @$(foreach f, $(all-config-fragments), \
> --
> 2.43.0.472.g3155946c3a-goog
>


--
Best Regards

Masahiro Yamada
  
Tomasz Figa Jan. 10, 2024, 1:14 p.m. UTC | #2
On Fri, Dec 29, 2023 at 1:11 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Thu, Dec 28, 2023 at 4:09 PM Tomasz Figa <tfiga@chromium.org> wrote:
> >
> > The new target is called 'checkconfig' and currently is basically an
> > alias for `listnewconfig` with KCONFIG_WARN_UNKNOWN_SYMBOLS set to true.
> > It can be used to validate if the current config is directly compatible
> > with the current kernel version or needs some manual adjustment.
> >
> > Signed-off-by: Tomasz Figa <tfiga@chromium.org>
>
>
> I rejected a new target in the past.
>
> https://lore.kernel.org/all/20230817012007.131868-1-senozhatsky@chromium.org/T/#m55c37e3091158f8cb008d9e0b5c6bf3f5ead225a
>

That was specifically for the unrecognized symbols warning. What I'm
proposing is a universal target that would include any possible
diagnostics.

>
>
> Instead, you can run
>
>   KCONFIG_WARN_UNKNOWN_SYMBOLS=1 make listnewconfig
>
> or
>
>   make W=c listnewconfig
>
>

I can do so, because my team member implemented it and told me and
other team members about it. But how would someone who hasn't heard
about it be aware of the existence of this useful feature?

Best regards,
Tomasz
  
Masahiro Yamada Jan. 13, 2024, 10:50 a.m. UTC | #3
On Wed, Jan 10, 2024 at 10:15 PM Tomasz Figa <tfiga@chromium.org> wrote:
>
> On Fri, Dec 29, 2023 at 1:11 AM Masahiro Yamada <masahiroy@kernelorg> wrote:
> >
> > On Thu, Dec 28, 2023 at 4:09 PM Tomasz Figa <tfiga@chromium.org> wrote:
> > >
> > > The new target is called 'checkconfig' and currently is basically an
> > > alias for `listnewconfig` with KCONFIG_WARN_UNKNOWN_SYMBOLS set to true.
> > > It can be used to validate if the current config is directly compatible
> > > with the current kernel version or needs some manual adjustment.
> > >
> > > Signed-off-by: Tomasz Figa <tfiga@chromium.org>
> >
> >
> > I rejected a new target in the past.
> >
> > https://lore.kernel.org/all/20230817012007.131868-1-senozhatsky@chromium.org/T/#m55c37e3091158f8cb008d9e0b5c6bf3f5ead225a
> >
>
> That was specifically for the unrecognized symbols warning. What I'm
> proposing is a universal target that would include any possible
> diagnostics.
>
> >
> >
> > Instead, you can run
> >
> >   KCONFIG_WARN_UNKNOWN_SYMBOLS=1 make listnewconfig
> >
> > or
> >
> >   make W=c listnewconfig
> >
> >
>
> I can do so, because my team member implemented it and told me and
> other team members about it. But how would someone who hasn't heard
> about it be aware of the existence of this useful feature?


People are not aware of your 'checkconfig' until
they run 'make help'.

The same for W=c.

'make help' explains it.


       c: extra checks in the configuration stage (Kconfig)
  
Tomasz Figa Jan. 15, 2024, 5:15 a.m. UTC | #4
On Sat, Jan 13, 2024 at 7:51 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> On Wed, Jan 10, 2024 at 10:15 PM Tomasz Figa <tfiga@chromium.org> wrote:
> >
> > On Fri, Dec 29, 2023 at 1:11 AM Masahiro Yamada <masahiroy@kernel.org> wrote:
> > >
> > > On Thu, Dec 28, 2023 at 4:09 PM Tomasz Figa <tfiga@chromium.org> wrote:
> > > >
> > > > The new target is called 'checkconfig' and currently is basically an
> > > > alias for `listnewconfig` with KCONFIG_WARN_UNKNOWN_SYMBOLS set to true.
> > > > It can be used to validate if the current config is directly compatible
> > > > with the current kernel version or needs some manual adjustment.
> > > >
> > > > Signed-off-by: Tomasz Figa <tfiga@chromium.org>
> > >
> > >
> > > I rejected a new target in the past.
> > >
> > > https://lore.kernel.org/all/20230817012007.131868-1-senozhatsky@chromium.org/T/#m55c37e3091158f8cb008d9e0b5c6bf3f5ead225a
> > >
> >
> > That was specifically for the unrecognized symbols warning. What I'm
> > proposing is a universal target that would include any possible
> > diagnostics.
> >
> > >
> > >
> > > Instead, you can run
> > >
> > >   KCONFIG_WARN_UNKNOWN_SYMBOLS=1 make listnewconfig
> > >
> > > or
> > >
> > >   make W=c listnewconfig
> > >
> > >
> >
> > I can do so, because my team member implemented it and told me and
> > other team members about it. But how would someone who hasn't heard
> > about it be aware of the existence of this useful feature?
>
>
> People are not aware of your 'checkconfig' until
> they run 'make help'.
>
> The same for W=c.
>
> 'make help' explains it.
>
>
>        c: extra checks in the configuration stage (Kconfig)

Okay, that wasn't something present in Linux 6.7-rc7 that I used as my
base. I checked out the current linux-next and it's indeed there,
which I guess resolves the original problem somewhat. I still don't
think it would be very clear from the description for a new user,
especially given that it's far below the config-related targets, but
at least it's there. Thanks for adding it.

Best regards,
Tomasz
  

Patch

diff --git a/scripts/kconfig/Makefile b/scripts/kconfig/Makefile
index 4eee155121a8..501cb9b76414 100644
--- a/scripts/kconfig/Makefile
+++ b/scripts/kconfig/Makefile
@@ -81,6 +81,9 @@  PHONY += savedefconfig defconfig
 savedefconfig: $(obj)/conf
 	$(Q)$< $(silent) --$@=defconfig $(Kconfig)
 
+checkconfig: $(obj)/conf
+	$(Q)KCONFIG_WARN_UNKNOWN_SYMBOLS=true $< --listnewconfig $(Kconfig)
+
 defconfig: $(obj)/conf
 ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG)),)
 	@$(kecho) "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'"
@@ -144,6 +147,7 @@  help:
 	@echo  '                    default value without prompting'
 	@echo  '  tinyconfig	  - Configure the tiniest possible kernel'
 	@echo  '  testconfig	  - Run Kconfig unit tests (requires python3 and pytest)'
+	@echo  '  checkconfig	  - Check current config for unrecognized and new symbols'
 	@echo  ''
 	@echo  'Configuration topic targets:'
 	@$(foreach f, $(all-config-fragments), \