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/