Re: [PATCH][RFC] check for select dependency errors on config load

Randy Dunlap
2009-02-21T06:19:59Z

Andrew Morton wrote:
> On Sat, 21 Feb 2009 00:24:05 -0500 (EST) Steven Rostedt <rostedt@goodmis.org> wrote:
>
>> There's been a few problems with SELECT and dependencies lately.
>> I've been burnt by it a few times myself. So I look at the kconfig
>> code and added this patch. It can use a bit more work but it does what
>> I want.
>>
>> When the config is loaded, it checks all the symbols that are
>> selected by an active config and makes sure the visible dependencies are
>> also activated. This should probably be moved to the writing of the
>> config instead, but since I just wanted to see if my current config was
>> OK, I did it on load. This is an RFC patch anyway, so fixes/comments are
>> definitely welcome.
>>
>> Here's what I get with the attached config running on 2.6.29-rc5.
>>
>> $ make menuconfig
>> scripts/kconfig/mconf arch/x86/Kconfig
>> .config:2561:warning: MICROCODE selects FW_LOADER which fails its dependencies!
>> .config:2561:warning: MICROCODE_INTEL selects FW_LOADER which fails its dependencies!
>> .config:2561:warning: PCMCIA_LOAD_CIS selects FW_LOADER which fails its dependencies!
>> .config:2561:warning: SCSI_SAS_LIBSAS selects SCSI_SAS_ATTRS which fails its dependencies!
>> .config:2561:warning: SCSI_AIC94XX selects FW_LOADER which fails its dependencies!
>> .config:2561:warning: KEYBOARD_ATKBD selects SERIO which fails its dependencies!
>> .config:2561:warning: KEYBOARD_ATKBD selects SERIO_LIBPS2 which fails its dependencies!
>> .config:2561:warning: KEYBOARD_ATKBD selects SERIO_I8042 which fails its dependencies!
>> .config:2561:warning: MOUSE_PS2 selects SERIO which fails its dependencies!
>> .config:2561:warning: MOUSE_PS2 selects SERIO_LIBPS2 which fails its dependencies!
>> .config:2561:warning: MOUSE_PS2 selects SERIO_I8042 which fails its dependencies!
>> .config:2561:warning: VT selects INPUT which fails its dependencies!
>> .config:2561:warning: DRM selects I2C_ALGOBIT which fails its dependencies!
>> .config:2561:warning: SND_EMU10K1 selects FW_LOADER which fails its dependencies!
>>
>> <exit out>
>>
>
> OK, this is fairly easy to use.
>
> You get
>
> .config:1181:warning: PCMCIA_LOAD_CIS selects FW_LOADER which fails its dependencies!
>
> So you then go into `make menuconfig' and type /^fw_loader$ to display
> FW_LOADER's dependencies.
>
> Depends on: HOTPLUG && EMBEDDED
>
> then do `egrep "HOTPLUG|EMBEDDED" .config'
>
> And we discover weird things. Why does FW_LOADER depend on EMBEDDED?
>
> And why the heck does INPUT depend on EMBEDDED?!??!
>
> And what's up with CONFIG_SERIO?
>
> Depends on: !S390 && (EMBEDDED || !X86)
>
> hm.

EMBEDDED is misnamed. It means "those who think that they know enough
to use all of the power of kconfig."
Some people spell that EXPERT etc.
Or it means "let me shoot myself in the foot."

So HOTPLUG, INPUT, FW_LOADER, etc. should not be modified by Aunt Tillie,
but you and I can play with them.

for SERIO:

config SERIO
tristate "Serial I/O support" if EMBEDDED || !X86
default y

Experts can modify it. !X86 can modify it.
It's usually needed on X86 for keyboard controllers etc.,
but if one sets EMBEDDED, you can muck up your config and not be
able to use the keyboard.

I don't know where the !S390 comes from, but it's not surprising.

--
~Randy