Re: due to kconfig changes kernel config file is no longer sufficient for configuring the kernel

From: Takashi Iwai
Date: Mon Aug 20 2018 - 14:37:19 EST


On Mon, 20 Aug 2018 20:15:12 +0200,
Masahiro Yamada wrote:
>
> 2018-08-07 3:07 GMT+09:00 Michal SuchÃnek <msuchanek@xxxxxxx>:
> > On Mon, 30 Jul 2018 17:02:42 +0900
> > Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> wrote:
> >
> >> 2018-06-28 18:16 GMT+09:00 Michal SuchÃnek <msuchanek@xxxxxxx>:
> >> > On Wed, 27 Jun 2018 23:07:21 +0900
> >> > Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> wrote:
> >> >
> >> >> Hi.
> >> >>
> >> >>
> >> >> 2018-06-27 21:37 GMT+09:00 Michal SuchÃnek <msuchanek@xxxxxxx>:
> >> >> > Hello,
> >> >> >
> >> >> > in the x86 Kconfig we have this:
> >> >> >
> >> >> > # Select 32 or 64 bit
> >> >> > config 64BIT
> >> >> > bool "64-bit kernel" if "$(ARCH)" = "x86"
> >> >> > default "$(ARCH)" != "i386"
> >> >> > ---help---
> >> >> > Say yes to build a 64-bit kernel - formerly known as
> >> >> > x86_64 Say no to build a 32-bit kernel - formerly known as i386
> >> >> >
> >> >> > Since commit 104daea149c4 ("kconfig: reference environment
> >> >> > variables directly and remove 'option env='") the value of ARCH
> >> >> > is not saved in the kernel config.
> >> >>
> >> >> I think this commit is unrelated. It was just a syntax change.
> >> >
> >> > This does not look like syntax only change to me:
> >> >
> >> > diff --git a/init/Kconfig b/init/Kconfig
> >> > index 15aae32e0719..1217fc62ca61 100644
> >> > --- a/init/Kconfig
> >> > +++ b/init/Kconfig
> >> > @@ -1,20 +1,12 @@
> >> > -config ARCH
> >> > - string
> >> > - option env="ARCH"
> >> > -
> >> > -config KERNELVERSION
> >> > - string
> >> > - option env="KERNELVERSION"
> >> > -
> >>
> >> This is just syntax change.
> >>
> >> 'option env=' was used to reference an environment variable.
> >>
> >> Now, $(ARCH), $(KERNELVERSION) are simpler forms.
> >>
> >>
> >> >>
> >> >> Unless I am missing something,
> >> >> we have never saved ARCH in the .config in the past.
> >> >
> >> > There was a config symbol defined for it before the commit removed
> >> > it.
> >>
> >> No.
> >>
> >> CONFIG symbols with'option env='
> >> are not written out to the .config file.
> >>
> >> We have never had CONFIG_ARCH or CONFIG_KERNELVERSION.

Maybe it sounds like a stupid question, but...
if passing ARCH= is almost mandatory for distinguishing the bi-arch or
cross-compile cases, why don't we save it in .config?

The whole "regression" we've seen can be worked around by passing
ARCH at each time. So, by having it in .config, everything would work
more easily, no?


thanks,

Takashi