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

From: Masahiro Yamada
Date: Mon Sep 03 2018 - 06:23:54 EST


Hi.


2018-08-21 3:37 GMT+09:00 Takashi Iwai <tiwai@xxxxxxx>:
> 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 .config may not exist, may not be loaded.

For "make help", "make headers_install" etc.
ARCH needs be given from the command line anyway.

I do not want to obscure "when to pass ARCH".


> 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?


Recording ARCH in .config does not solve the problem
because the .config contents depend on the compiler.


>
>
> thanks,
>
> Takashi



--
Best Regards
Masahiro Yamada