[Buildroot] [PATCH 1/1] linux: Deselect all unconfigured compression options

Cam Hutchison camh at xdna.net
Sat Oct 21 19:38:48 UTC 2017


Yann E. MORIN wrote:
> Cam, All,
> 
> On 2017-10-19 21:59 +1100, Cam Hutchison spake thusly:
> > The LINUX_KCONFIG_FIXUP_CMDS are meant to deselect any compression
> > option that are not selected in the buildroot configuration. But it only
> > deselects the last one in the list instead of all of them because it
> > overwrites the LINUX_COMPRESSION_OPT_ variable instead of appending to
> > it. Only the last option set to that variable gets deselected.
> > 
> > This produces the warning:
> > 
> > .config:2216:warning: override: KERNEL_GZIP changes choice state
> > 
> > is emitted when buildroot runs olddefconfig when buildroot configures a
> > kernel with a custom config that has a different kernel compression
> > option set to what is configured in buildroot.
> > 
> > Accumulate all the deselected compression options instead of overwriting
> > them to ensure all non-selected options get deselected..
> > 
> > Signed-off-by: Cam Hutchison <camh at xdna.net>
> 
> Reviewed-by: "Yann E. MORIN" <yann.morin.1998 at free.fr>
> 
> Small comment below...
> 
> > ---
> >  linux/linux.mk | 12 ++++++------
> >  1 file changed, 6 insertions(+), 6 deletions(-)
> > 
> > diff --git a/linux/linux.mk b/linux/linux.mk
> > index 9c2aa77a10..bd5589bae0 100644
> > --- a/linux/linux.mk
> > +++ b/linux/linux.mk
> > @@ -74,11 +74,11 @@ LINUX_DEPENDENCIES += host-lzop
> >  else ifeq ($(BR2_LINUX_KERNEL_XZ),y)
> >  LINUX_DEPENDENCIES += host-xz
> >  endif
> > -LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_GZIP) = CONFIG_KERNEL_GZIP
> > -LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZ4) = CONFIG_KERNEL_LZ4
> > -LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) = CONFIG_KERNEL_LZMA
> > -LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) = CONFIG_KERNEL_LZO
> > -LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) = CONFIG_KERNEL_XZ
> > +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_GZIP) += CONFIG_KERNEL_GZIP
> > +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZ4) += CONFIG_KERNEL_LZ4
> > +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) += CONFIG_KERNEL_LZMA
> > +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) += CONFIG_KERNEL_LZO
> > +LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_KERNEL_XZ
> >  
> >  # If host-uboot-tools is selected by the user, assume it is needed to
> >  # create a custom image
> > @@ -252,7 +252,7 @@ endif
> >  define LINUX_KCONFIG_FIXUP_CMDS
> >  	$(if $(LINUX_NEEDS_MODULES),
> >  		$(call KCONFIG_ENABLE_OPT,CONFIG_MODULES,$(@D)/.config))
> > -	$(call KCONFIG_ENABLE_OPT,$(LINUX_COMPRESSION_OPT_y),$(@D)/.config)
> > +	$(call KCONFIG_ENABLE_OPT,$(strip $(LINUX_COMPRESSION_OPT_y)),$(@D)/.config)
> 
> I think the strip is not needed, because leading spaces in arguments to
> a call are anyway stripped.

Actually, that's not true. I did need the strip, otherwise the var had a
space in the output.

The GNU make docs have this to say about $(call):

    A final caution: be careful when adding whitespace to the arguments
    to call. As with other functions, any whitespace contained in the
    second and subsequent arguments is kept; this can cause strange
    effects. It’s generally safest to remove all extraneous whitespace
    when providing parameters to call.

> But it is most systematice to do, so it's fine with me.
> 
> Regards,
> Yann E. MORIN.
> 
> >  	$(foreach opt, $(LINUX_COMPRESSION_OPT_),
> >  		$(call KCONFIG_DISABLE_OPT,$(opt),$(@D)/.config)
> >  	)
> > -- 
> > 2.11.0
> > 


More information about the buildroot mailing list