Re: [PATCH v3 3/7] selftests/nolibc: add extra configs customize support

From: Willy Tarreau
Date: Sat Jul 29 2023 - 12:29:24 EST


On Sat, Jul 29, 2023 at 10:39:33PM +0800, Zhangjin Wu wrote:
> > > diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile
> > > index f42adef87e12..9576f1a0a98d 100644
> > > --- a/tools/testing/selftests/nolibc/Makefile
> > > +++ b/tools/testing/selftests/nolibc/Makefile
> > > @@ -39,6 +39,9 @@ DEFCONFIG_s390 = defconfig
> > > DEFCONFIG_loongarch = defconfig
> > > DEFCONFIG = $(DEFCONFIG_$(ARCH))
> > >
> > > +# extra kernel config files under configs/, include common + architecture specific
> > > +EXTCONFIG = common.config $(ARCH).config
> >
> > As this series seems to need a respin anyways:
> >
> > extconfig means "extended config", correct?
> > That is fairly nondescript.
> >
>
> It is more about 'extra' as commented (or 'additional'), for both
> defconfig (may) and tinyconfig (must) require more options to make boot
> and print work for nolibc-test.
>
> defconfig ------\
> \
> \
> EXTCONFIG ----> a working .config for nolibc-test
> /
> /
> tinyconfig------/
>
> > I would prefer something like "NOLIBC_TEST_CONFIG"
> >
>
> Using NOLIBC_TEST_CONFIG is ok, but with this name, do we still only put
> the 'additional' options there? or we simply use EXTRA_CONFIG instead?
>
> # extra kernel config files under configs/, include common + architecture specific
> EXTRA_CONFIG = common.config $(ARCH).config

Either are fine to me. The most important is to mention that these
configs are appended to the config during the defconfig and tinyconfig
targets.

Also I find it odd to use $(ARCH) here, I would have expected $(XARCH)
since you probably want to distinguish ppc64 from ppc for example.

> > something like "make nolibctestconfig" to make an existing config ready for
> > nolibc-test.
>
> Do you mean rename 'defconfig' to 'nolibctestconfig'? or something
> nolibc-test-config:
>
> nolibc-test-config:
> $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) mrproper $(DEFCONFIG) prepare
> $(Q)$(srctree)/scripts/kconfig/merge_config.sh -O "$(srctree)" -m "$(srctree)/.config" $(foreach c,$(EXTRA_CONFIG),$(wildcard $(CURDIR)/configs/$c))
> $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) KCONFIG_ALLCONFIG="$(srctree)/.config" allnoconfig
>
> It looks too long ;-)

I think that as long as we don't claim to call topdir's makefile targets
from this directory, we can reuse some similarly named targets which are
documented in "make help" and are non-ambiguous.

> Currently, we use 'defconfig' by default and we use 'make defconfig
> DEFCONFIG=tinyconfig' to switch to tinyconfig, in the next weeks, when
> all of the nolibc supported architectures have tinyconfig support, it is
> able to switch 'tinyconfig' as the default config target.

As long as it doesn't require to locally maintain too many options, I
think I'm fine with that. But we'll see.

Willy