kconfig: fix tristate choice with minimal config
authorSam Ravnborg <sam@ravnborg.org>
Thu, 12 Aug 2010 07:11:52 +0000 (09:11 +0200)
committerMichal Marek <mmarek@suse.cz>
Thu, 12 Aug 2010 08:55:02 +0000 (10:55 +0200)
commita64b44ead002ba15fdf841106a6fd344b8dd46d8
treed5f3be005c10369a69ea1d968c790854f9d52a1a
parent801690caf1894d4f8b1277ca9f5dcf0bcf9b3f58
kconfig: fix tristate choice with minimal config

If a minimal config did not specify the value
of all choice values, the resulting configuration
could have wrong values.

Consider following example:
config M
        def_bool y
        option modules
choice
        prompt "choice list"
config A
        tristate "a"
config B
tristate "b"
endchoice

With a defconfig like this:
CONFIG_M=y
CONFIG_A=y

The resulting configuration would have

    CONFIG_A=m

which was unexpected.

The problem was not not all choice values were set and thus
kconfig calculated a wrong value.

The fix is to set all choice values when we
read a defconfig files.

conf_set_all_new_symbols() is refactored such that
random choice values are now handled by a dedicated function.
And new choice values are set by set_all_choice_values().

This was not the minimal fix, but the fix that resulted
in the most readable code.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Reported-by: Arve Hjønnevåg <arve@android.com>
Tested-by: Arve Hjønnevåg <arve@android.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
scripts/kconfig/confdata.c