Re: kconfig creates strange (invalid?) configuration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 11 Feb 2008 21:13:47 +0100 (CET) Roman Zippel wrote:

> Hi,
> 
> On Sun, 10 Feb 2008, Adrian Bunk wrote:
> 
> > 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.

Thanks for the explanation.  I was just going to patch/RFC a trivial
patch that fixes the build, but is probably not optimal, even if we
didn't have your patch.  (see below)

---
From: Randy Dunlap <randy.dunlap@xxxxxxxxxx>

Adrian Bunk pointed out a kernel config file that contained:
CONFIG_X86=y
# CONFIG_EMBEDDED is not set
CONFIG_SERIO=m
CONFIG_SERIO_I8042=y

which happens to cause:

serio.out:ERROR: "i8042_command" [drivers/misc/acer-wmi.ko] undefined!
serio.out:ERROR: "i8042_command" [drivers/leds/leds-clevo-mail.ko] undefined!


The full config file also contains:
# CONFIG_X86_PC is not set
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
CONFIG_X86_GENERICARCH=y
# CONFIG_X86_ES7000 is not set
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_VSMP is not set

and drivers/input/keyboard/Kconfig says:
config KEYBOARD_ATKBD
	tristate "AT keyboard" if EMBEDDED || !X86_PC
	default y
	select SERIO
	select SERIO_LIBPS2
	select SERIO_I8042 if X86_PC
	select SERIO_GSCPS2 if GSC

Changing the !X86_PC to !X86 fixes the build issue.  However, some of the
CONFIG_X86_* variants may not care for it.

Signed-off-by: Randy Dunlap <randy.dunlap@xxxxxxxxxx>
---
 drivers/input/keyboard/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.25-rc1.orig/drivers/input/keyboard/Kconfig
+++ linux-2.6.25-rc1/drivers/input/keyboard/Kconfig
@@ -13,7 +13,7 @@ menuconfig INPUT_KEYBOARD
 if INPUT_KEYBOARD
 
 config KEYBOARD_ATKBD
-	tristate "AT keyboard" if EMBEDDED || !X86_PC
+	tristate "AT keyboard" if EMBEDDED || !X86
 	default y
 	select SERIO
 	select SERIO_LIBPS2

-
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux