Menuconfig Bug Fix

The kernel configuration script "Menuconfig" contains a bug exclusive to alpha systems. Specifically, certain scsi drivers that are listed as options when running the non-menu based "Config" are ABSENT from the low-level scsi menu when running "Menuconfig". The reason for this bug, not surprisingly, is that "Menuconfig" was not written to work correctly on alpha systems! As a result, two files must be slightly modified in order for "Menuconfig" to display all possible drivers.


The first file to be modified is /usr/src/linux/scripts/Menuconfig. A change needs to be made to a function named define_bool().

In the buggy version the function is defined like this:

#
# Don't need this yet, but we don't want to puke either.
#
function define_bool () {
        :
}

This function must be edited so that it is defined  like this:

function define_bool () {

    eval $1="$2"
    if [ "$2" = "m" -a "$CONFIG_MODULES" != "y" ]
    then
    eval $1="y"
    fi
 }

The next (and last) change is to the file /usr/src/linux/arch/alpha/config.in. In the beginning of the file, there are a number of "unset" commands. When applied to a variable, the unset command clears the value stored by that variable. Since the config.in file is read and parsed each time a new menu is to be displayed, the values stored in the variables in unset commands are ALWAYS cleared, even if the user had just selected to "turn them on" in another menu. Thus, three of these commands must be moved to a more logical place.

The "unset" commands to be moved are the first three, namely:

unset CONFIG_CROSSCOMPILE CONFIG_NATIVE
unset CONFIG_PCI CONFIG_ALPHA_EISA
unset CONFIG_ALPHA_LCA CONFIG_ALPHA_APECS CONFIG_ALPHA_CIA CONFIG_ALPHA_T2

These must be moved so that they directly follow the line "comment 'General setup'", and they directly precede the line "if [ "`uname`" != "Linux" ]; then" as follows:

mainmenu_option next_comment
comment 'General setup'

unset CONFIG_CROSSCOMPILE CONFIG_NATIVE
unset CONFIG_PCI CONFIG_ALPHA_LCA CONFIG_ALPHA_APECS
unset CONFIG_ALPHA_NEED_ROUNDING_EMULATION

if [ "`uname`" != "Linux" ]; then


Once these changes have been made, "Menuconfig" behaves exactly as it should, displaying every scsi driver that would appear when running "Config".
Any further bug reports may be sent to roadcapw@titus.org. He should still be maintaining this program, although he did mention that he didn't have much time to devote to it anymore.
 
Author: Adam J. Ruja
Date: Sept. 19, 1998