Re: [GIT] kbuild: kconfig changes

Michal Marek
2010-08-10T14:07:05Z

On 8.8.2010 17:57, Sam Ravnborg wrote:
> On Fri, Aug 06, 2010 at 09:43:24PM -0700, Arve Hj?nnev?g wrote:
>> On Fri, Aug 6, 2010 at 9:01 PM, Sam Ravnborg <sam@ravnborg.org> wrote:
>>>>
>>>> This change prevents some the minimal defconfig options from working.
>>>> Specifically our usb gadget drivers do not get set.
>>>
>>> Can you help me reproduce this?
>>>
>>> I have found an issue with choice values in combination with
>>> tristate logic that fails. I hope this is something similar.
>>>
>>
>> It is probably the same problem. The gadget driver that was not set is
>> not buildable as a module (it is not in the mainline kernel). If I
>> select another gadget driver instead it just gets changed to build as
>> a module instead.
>>
>> If you create a file, arch/arm/configs/test_defconfig with the following:
>> CONFIG_MODULES=y
>> CONFIG_USB_GADGET=y
>> CONFIG_USB_MASS_STORAGE=y
>>
>> then "make test_defconfig" results in .config having:
>> CONFIG_USB_MASS_STORAGE=m
>>
>> (at least if you are set up to compile for arm)
>
> Thanks Arve.
>
> I have it reproduced now with a simple Kconfig:
>
> $ cat Kconfig
> config M
> def_bool y
> option modules
>
> choice
> prompt "choice list"
>
> config A
> tristate "a"
>
> config B
> tristate "b"
>
> endchoice
>
> $cat defconfig
> CONFIG_M=y
> CONFIG_A=y
> # CONFIG_B is not set
>
>
> If I do:
>
> $scripts/kconfig/conf --defconfig=defconfig Kconfig
>
> with the above input the resulting .config is OK.
>
> But If I drop the line:
>
> # CONFIG_B is not set
>
> in the defconfig file then I end with CONFIG_A set to m.
> And this is not as expected - I cannot see why it should matter
> if we specify the value of B or not.
>
> What we see here is that savedefconfig trigger a bug in the
> other part of kconfig - a bug which was not exposed before.
>
> The reason why your patch cured it was that we then no
> longer triggered the bug (at least I guess so I did not look to close).
>
> I will look into this as time permits. I assume the fix is simple
> when I find the reason.

I'm looking into it now, but understanding the kconfig internals is not
easy...

Michal