linux/scripts/kconfig
Roman Zippel 587c90616a kconfig: fix select in combination with default
> The attached .config (with current -git) results in a compile
> error since it contains:
>
> CONFIG_X86=y
> # CONFIG_EMBEDDED is not set
> CONFIG_SERIO=m
> CONFIG_SERIO_I8042=y
>
> Looking at drivers/input/serio/Kconfig I simply don't get how this
> can happen.

You've hit the rather subtle rules of select vs default. What happened is
that SERIO is selected to m, but SERIO_I8042 isn't selected so the default
of y is used instead.
We already had the problem in the past that select and default don't work
well together, so this patch cleans this up and makes the rule hopefully
more straightforward. Basically now the value is calculated like this:

	(value && dependency) || select

where the value is the user choice (if available and the symbol is
visible) or default.

In this case it means SERIO and SERIO_I8042 are both set to y due to their
default and if SERIO didn't had the default, then the SERIO_I8042 value
would be limited to m due to the dependency.

I tested this patch with more 10000 random configs and above case is the
only the difference that showed up, so I hope there is nothing that
depended on the old more complex and subtle rules.

Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Tested-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
2008-02-13 22:30:09 +01:00
..
lxdialog kconfig: gettext support for lxdialog 2008-01-28 23:14:39 +01:00
.gitignore
check.sh
conf.c kconfig: tristate choices with mixed tristate and boolean values 2008-01-28 23:21:18 +01:00
confdata.c kconfig: explicitly introduce expression list 2008-01-28 23:14:39 +01:00
expr.c kconfig: tristate choices with mixed tristate and boolean values 2008-01-28 23:21:18 +01:00
expr.h kconfig: environment symbol support 2008-01-28 23:14:39 +01:00
gconf.c kconfig: gconfig: symbol fix 2008-01-28 23:14:39 +01:00
gconf.glade
images.c
kconfig_load.c
kxgettext.c
lex.zconf.c_shipped kconfig: whitespace removing 2008-01-28 23:14:38 +01:00
lkc_proto.h
lkc.h kconfig: environment symbol support 2008-01-28 23:14:39 +01:00
Makefile kconfig: gettext support for gconfig 2008-01-28 23:14:39 +01:00
mconf.c kconfig: mark config as changed when loading an alternate config 2008-02-03 08:58:07 +01:00
menu.c kconfig: ignore select of unknown symbol 2008-02-03 08:58:07 +01:00
POTFILES.in kconfig: gettext support for lxdialog 2008-01-28 23:14:39 +01:00
qconf.cc kconfig: environment symbol support 2008-01-28 23:14:39 +01:00
qconf.h
symbol.c kconfig: fix select in combination with default 2008-02-13 22:30:09 +01:00
util.c kconfig: environment symbol support 2008-01-28 23:14:39 +01:00
zconf.gperf kconfig: remove "enable" 2008-01-28 23:21:18 +01:00
zconf.hash.c_shipped kconfig: remove "enable" 2008-01-28 23:21:18 +01:00
zconf.l kconfig: whitespace removing 2008-01-28 23:14:38 +01:00
zconf.tab.c_shipped
zconf.y