Re: [MOAN] CONFIG_SERIAL_CONSOLE

Greg Banks (gnb@alphalink.com.au)
Sun, 28 Jul 2002 21:22:21 +1000


G'day,

Russell King wrote:
> Since ppc also include{s,d} drivers/char/Config.in, this means there was
> a define_bool _and_ bool for the same configuration variable. This sounds
> contary to the shell-nature of the configure scripts, and therefore illegal,
> and as such gets broken when changes happen.

Thanks to Russell for pointing out a problem I had not been aware of.

There are quite a few similar errors in the CML1 corpus, where a query and a
define for the same symbol exist with conditions that can overlap. A synthetic
example of the problem is

bool 'foo' CONFIG_FOO

if [ "$CONFIG_FOO" = "y" ]; then
define_bool CONFIG_BAR y
fi

bool 'bar' CONFIG_BAR

There are at least eight variants of this problem, depending on the order
of the query and the define, which is conditional, and whether they're in
the same menu. All break at least one of the configurators. The symptoms
vary in severity (mildest first)

* .config has two copies of the correct value: BAR=y BAR=y
* .config has two different values, correct one last: BAR=n BAR=y
* .config has two different values, incorrect one last: BAR=y BAR=n
* configurator incorrectly displays query and correctly prevents
user from entering anything except the one valid value
* configurator incorrectly does not allow user to set a valid value
* configurator accepts a valid value from the user and saves a
different value to the .config file.

Also it is typical that different configurators will generate different
.config files in response to the same sequence of selections.

I'm modifying gcml2 to try and detect these problems. In the meantime, here
are some examples of this problem from 2.5.26, found using a preliminary
version of the overlap detector.

CONFIG_ACPI_BUS
drivers/acpi/Config.in:52
drivers/acpi/Config.in:73

CONFIG_ACPI_BUTTON
drivers/acpi/Config.in:57
drivers/acpi/Config.in:77

CONFIG_ACPI_FAN
drivers/acpi/Config.in:58
drivers/acpi/Config.in:78

CONFIG_ACPI_INTERPRETER
arch/ia64/config.in:45
drivers/acpi/Config.in:53
drivers/acpi/Config.in:74

CONFIG_ACPI_PCI
drivers/acpi/Config.in:54
drivers/acpi/Config.in:68

CONFIG_ACPI_POWER
drivers/acpi/Config.in:55
drivers/acpi/Config.in:75

CONFIG_ACPI_PROCESSOR
drivers/acpi/Config.in:59
drivers/acpi/Config.in:79

CONFIG_ACPI_SYSTEM
drivers/acpi/Config.in:56
drivers/acpi/Config.in:76

CONFIG_ACPI_THERMAL
drivers/acpi/Config.in:60
drivers/acpi/Config.in:80

CONFIG_ALPHA_AVANTI
arch/alpha/config.in:16
arch/alpha/config.in:218

CONFIG_ALPHA_EB64P
arch/alpha/config.in:16
arch/alpha/config.in:89

CONFIG_ALPHA_NONAME
arch/alpha/config.in:16
arch/alpha/config.in:73

CONFIG_BUSMOUSE
drivers/char/Config.in:116
arch/ppc/config.in:384

CONFIG_CD_NO_IDESCSI
arch/ppc64/config.in:137
arch/ppc64/config.in:186

CONFIG_CD_NO_IDESCSI
arch/ppc/config.in:469
arch/ppc/config.in:506

CONFIG_DEBUG_SPINLOCK
arch/x86_64/config.in:225
arch/x86_64/config.in:228

CONFIG_DEVFS_FS
arch/ia64/config.in:77
fs/Config.in:78

CONFIG_FB
drivers/video/Config.in:8
arch/ppc/config.in:382

CONFIG_IDE
arch/cris/config.in:147
arch/cris/drivers/Config.in:114,130

CONFIG_PARPORT
arch/cris/drivers/Config.in:97,101
drivers/parport/Config.in:11

CONFIG_PARPORT_1284
arch/cris/drivers/Config.in:98
drivers/parport/Config.in:68

CONFIG_PC_KEYB (mx,ds,bc,dm)
arch/mips/config.in:188
arch/mips/config.in:53

CONFIG_PRINTER
arch/cris/drivers/Config.in:99
drivers/char/Config.in:103

CONFIG_MTD
drivers/mtd/Config.in:7
arch/cris/drivers/Config.in:139

CONFIG_MTD_AMDSTD
drivers/mtd/chips/Config.in:52
arch/cris/drivers/Config.in:145

CONFIG_MTD_BLOCK
drivers/mtd/Config.in:23
arch/cris/drivers/Config.in:148

CONFIG_MTD_CHAR
drivers/mtd/Config.in:22
arch/cris/drivers/Config.in:147

CONFIG_MTD_CFI
drivers/mtd/chips/Config.in:9
arch/cris/drivers/Config.in:141

CONFIG_MTD_CFI_AMDSTD
drivers/mtd/chips/Config.in:45
arch/cris/drivers/Config.in:143

CONFIG_MTD_CFI_INTELEXT
drivers/mtd/chips/Config.in:44
arch/cris/drivers/Config.in:142

CONFIG_MTD_PARTITIONS
drivers/mtd/Config.in:14
arch/cris/drivers/Config.in:149

CONFIG_SOUND_CMPCI_FMIO
sound/oss/Config.in:14
sound/oss/Config.in:15

CONFIG_SYSCLK_100
arch/mips/config.in:140
arch/mips/config.in:24

CONFIG_VIDEO_SELECT
drivers/video/Config.in:101
arch/i386/config.in:387

CONFIG_VIDEO_SELECT
drivers/video/Config.in:101
arch/x86_64/config.in:196

Greg.

-- 
the price of civilisation today is a courageous willingness to prevail,
with force, if necessary, against whatever vicious and uncomprehending
enemies try to strike it down.	   - Roger Sandall, The Age, 28Sep2001.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/