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

From: Michal SuchÃnek
Date: Wed Jun 27 2018 - 08:37:20 EST


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. Since commit f467c5640c29 ("kconfig: only write '#
CONFIG_FOO is not set' for visible symbols") the value of 64BIT is not
saved if the ARCH is set i386 or x86_64 because the symbol is not
visible.

There is a number of ways to hack this particular case to work.

However, there is a more general problem with this. Some config options
may depend on the environment, may not be saved, and the environment is
not saved either. So in the end all the infrastructure with symlinks
from module directory pointing to the kernel source and object
directory is useless. To interpret the config stored there you need the
environment and that is not saved anywhere. So if you try to build
out-of-tree module it might end up reconfiguring your kernel and
producing useless modules.

Is there any plan to fix this?

Thanks

Michal