2019-05-20 18:16:08

by Dan Rue

[permalink] [raw]
Subject: [PATCH] kbuild: teach kselftest-merge to find nested config files

Current implementation of kselftest-merge only finds config files that
are one level deep using `$(srctree)/tools/testing/selftests/*/config`.

Often, config files are added in nested directories, and do not get
picked up by kselftest-merge.

Use `find` to catch all config files under
`$(srctree)/tools/testing/selftests` instead.

Signed-off-by: Dan Rue <[email protected]>
---
Makefile | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index a45f84a7e811..e99e7f9484af 100644
--- a/Makefile
+++ b/Makefile
@@ -1228,9 +1228,8 @@ kselftest-clean:
PHONY += kselftest-merge
kselftest-merge:
$(if $(wildcard $(objtree)/.config),, $(error No .config exists, config your kernel first!))
- $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
- -m $(objtree)/.config \
- $(srctree)/tools/testing/selftests/*/config
+ $(Q)find $(srctree)/tools/testing/selftests -name config | \
+ xargs $(srctree)/scripts/kconfig/merge_config.sh -m $(objtree)/.config
+$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig

# ---------------------------------------------------------------------------
--
2.21.0



2019-05-20 18:23:48

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] kbuild: teach kselftest-merge to find nested config files

On Mon, May 20, 2019 at 10:16:14AM -0500, Dan Rue wrote:
> Current implementation of kselftest-merge only finds config files that
> are one level deep using `$(srctree)/tools/testing/selftests/*/config`.
>
> Often, config files are added in nested directories, and do not get
> picked up by kselftest-merge.
>
> Use `find` to catch all config files under
> `$(srctree)/tools/testing/selftests` instead.
>
> Signed-off-by: Dan Rue <[email protected]>
> ---
> Makefile | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)

To be more specific here, the binderfs test is not catching the config
entry, so it would be nice to get this into the stable trees as well :)

> diff --git a/Makefile b/Makefile
> index a45f84a7e811..e99e7f9484af 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1228,9 +1228,8 @@ kselftest-clean:
> PHONY += kselftest-merge
> kselftest-merge:
> $(if $(wildcard $(objtree)/.config),, $(error No .config exists, config your kernel first!))
> - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
> - -m $(objtree)/.config \
> - $(srctree)/tools/testing/selftests/*/config
> + $(Q)find $(srctree)/tools/testing/selftests -name config | \
> + xargs $(srctree)/scripts/kconfig/merge_config.sh -m $(objtree)/.config
> +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
>
> # ---------------------------------------------------------------------------

is find run with $(Q)? It isn't with other instances in the Makefile.

thanks,

greg k-h

2019-05-30 19:02:11

by Dan Rue

[permalink] [raw]
Subject: Re: [PATCH] kbuild: teach kselftest-merge to find nested config files

On Mon, May 20, 2019 at 07:56:41PM +0200, Greg KH wrote:
> On Mon, May 20, 2019 at 10:16:14AM -0500, Dan Rue wrote:
> > Current implementation of kselftest-merge only finds config files that
> > are one level deep using `$(srctree)/tools/testing/selftests/*/config`.
> >
> > Often, config files are added in nested directories, and do not get
> > picked up by kselftest-merge.
> >
> > Use `find` to catch all config files under
> > `$(srctree)/tools/testing/selftests` instead.
> >
> > Signed-off-by: Dan Rue <[email protected]>
> > ---
> > Makefile | 5 ++---
> > 1 file changed, 2 insertions(+), 3 deletions(-)
>
> To be more specific here, the binderfs test is not catching the config
> entry, so it would be nice to get this into the stable trees as well :)
>
> > diff --git a/Makefile b/Makefile
> > index a45f84a7e811..e99e7f9484af 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -1228,9 +1228,8 @@ kselftest-clean:
> > PHONY += kselftest-merge
> > kselftest-merge:
> > $(if $(wildcard $(objtree)/.config),, $(error No .config exists, config your kernel first!))
> > - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
> > - -m $(objtree)/.config \
> > - $(srctree)/tools/testing/selftests/*/config
> > + $(Q)find $(srctree)/tools/testing/selftests -name config | \
> > + xargs $(srctree)/scripts/kconfig/merge_config.sh -m $(objtree)/.config
> > +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
> >
> > # ---------------------------------------------------------------------------
>
> is find run with $(Q)? It isn't with other instances in the Makefile.

I'm not entirely sure all the ways that $(Q) is used (it looks like it
just gets set to @), but if i run 'KBUILD_VERBOSE=1 make
kselftest-merge' I do see the find command printed before running:

find ./tools/testing/selftests -name config | \
xargs ./scripts/kconfig/merge_config.sh -m ./.config

I noticed find used inconsistently (sometimes with @, sometimes with
$(Q), sometimes with neither), so I picked the usage that seemed most
correct to me.

Dan

>
> thanks,
>
> greg k-h

--
Linaro - Kernel Validation

2019-05-31 01:54:57

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] kbuild: teach kselftest-merge to find nested config files

On Fri, May 31, 2019 at 4:00 AM Dan Rue <[email protected]> wrote:
>
> On Mon, May 20, 2019 at 07:56:41PM +0200, Greg KH wrote:
> > On Mon, May 20, 2019 at 10:16:14AM -0500, Dan Rue wrote:
> > > Current implementation of kselftest-merge only finds config files that
> > > are one level deep using `$(srctree)/tools/testing/selftests/*/config`.
> > >
> > > Often, config files are added in nested directories, and do not get
> > > picked up by kselftest-merge.
> > >
> > > Use `find` to catch all config files under
> > > `$(srctree)/tools/testing/selftests` instead.
> > >
> > > Signed-off-by: Dan Rue <[email protected]>
> > > ---
> > > Makefile | 5 ++---
> > > 1 file changed, 2 insertions(+), 3 deletions(-)
> >
> > To be more specific here, the binderfs test is not catching the config
> > entry, so it would be nice to get this into the stable trees as well :)
> >
> > > diff --git a/Makefile b/Makefile
> > > index a45f84a7e811..e99e7f9484af 100644
> > > --- a/Makefile
> > > +++ b/Makefile
> > > @@ -1228,9 +1228,8 @@ kselftest-clean:
> > > PHONY += kselftest-merge
> > > kselftest-merge:
> > > $(if $(wildcard $(objtree)/.config),, $(error No .config exists, config your kernel first!))
> > > - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
> > > - -m $(objtree)/.config \
> > > - $(srctree)/tools/testing/selftests/*/config
> > > + $(Q)find $(srctree)/tools/testing/selftests -name config | \
> > > + xargs $(srctree)/scripts/kconfig/merge_config.sh -m $(objtree)/.config
> > > +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
> > >
> > > # ---------------------------------------------------------------------------
> >
> > is find run with $(Q)? It isn't with other instances in the Makefile.
>
> I'm not entirely sure all the ways that $(Q) is used (it looks like it
> just gets set to @), but if i run 'KBUILD_VERBOSE=1 make
> kselftest-merge' I do see the find command printed before running:
>
> find ./tools/testing/selftests -name config | \
> xargs ./scripts/kconfig/merge_config.sh -m ./.config
>
> I noticed find used inconsistently (sometimes with @, sometimes with
> $(Q), sometimes with neither), so I picked the usage that seemed most
> correct to me.


I agree. Using $(Q) looks correct to me.



> Dan
>
> >
> > thanks,
> >
> > greg k-h
>
> --
> Linaro - Kernel Validation



--
Best Regards
Masahiro Yamada

2019-06-04 17:33:02

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] kbuild: teach kselftest-merge to find nested config files

On Tue, May 21, 2019 at 12:19 AM Dan Rue <[email protected]> wrote:
>
> Current implementation of kselftest-merge only finds config files that
> are one level deep using `$(srctree)/tools/testing/selftests/*/config`.
>
> Often, config files are added in nested directories, and do not get
> picked up by kselftest-merge.
>
> Use `find` to catch all config files under
> `$(srctree)/tools/testing/selftests` instead.
>
> Signed-off-by: Dan Rue <[email protected]>
> ---
> Makefile | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index a45f84a7e811..e99e7f9484af 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1228,9 +1228,8 @@ kselftest-clean:
> PHONY += kselftest-merge
> kselftest-merge:
> $(if $(wildcard $(objtree)/.config),, $(error No .config exists, config your kernel first!))
> - $(Q)$(CONFIG_SHELL) $(srctree)/scripts/kconfig/merge_config.sh \
> - -m $(objtree)/.config \
> - $(srctree)/tools/testing/selftests/*/config
> + $(Q)find $(srctree)/tools/testing/selftests -name config | \
> + xargs $(srctree)/scripts/kconfig/merge_config.sh -m $(objtree)/.config
> +$(Q)$(MAKE) -f $(srctree)/Makefile olddefconfig
>
> # ---------------------------------------------------------------------------
> --
> 2.21.0
>


Applied to linux-kbuild/fixes. Thanks.




--
Best Regards
Masahiro Yamada