[PATCH] xconfig, Menuconfig fixes (2.4test9)

From: Andrzej Krzysztofowicz (ankry@green.mif.pg.gda.pl)
Date: Thu Oct 05 2000 - 12:34:14 EST


Hi Linus,

Two patches for 2.4.0test9 configuration follow.

1. I found two bugs in configuration utilities:

- Menuconfig doesn't ignore commented out "endmenu" commands (while
  commented out "mainmenu_option" it does). I don't think it is
  intentional... Especially as it breaks s390 architecture configuration
  (commented "endmenu" -> missing uncommented one -> xconfig has problems;
  this is fixead in the second patch, but requires this one)

- Both Menuconfig and xconfig has problem with shortened default values for
  choice lists, eg.:

  choice 'Processor family' \
           [...]
           PPro/6x86MX CONFIG_M686" PPro
           ^^^^^^^^^^^ ^^^^
  In effect, if one hits this value usage case it not properly recognized.
  And no choice variable is set (all are unset) unless he entered the choice
  menu and rechoose. In fact, the default value is rarely used.

2. Fixed some obvious bugs in configuration scripts:

- fixed CONFIG_PCI setting in ppc/arm by introducing
  separate variables for "bool" statements (help entries
  cloned; somebody may want to fix them), [arch/ppc,arch/arm]
- removed bogus initial values for "bool", [arch/ppc,arch/sparc64]
- missing "endmenu" (effect of Menuconfig bug), [drivers/s390]
- bool/int outside menu (in the main menu), [arch/s390]
- "include" instead of "source" (previously sent fix for
  sparc/sparc64 not included). [drivers/s390]

Regards
   Andrzej

******************** PATCH 1 *****************************************
diff -uNr linux-test9/scripts/Menuconfig linux/scripts/Menuconfig
--- linux-test9/scripts/Menuconfig Mon Aug 21 17:57:36 2000
+++ linux/scripts/Menuconfig Thu Oct 5 19:05:38 2000
@@ -634,6 +634,7 @@
         title="$1"
         choices="$2"
         current="$3"
+ chosen=
 
         #
         # Scan current value of choices and set radiolist switches.
@@ -644,7 +645,12 @@
         while [ -n "$2" ]
         do
                 case "$1" in
- "$current") list="$list $2 $1 ON " ;;
+ "$current"*) if [ -z "$chosen" ]; then
+ list="$list $2 $1 ON "
+ chosen=1
+ else
+ list="$list $2 $1 OFF "
+ fi ;;
                 *) list="$list $2 $1 OFF " ;;
                 esac
                         
@@ -722,13 +728,13 @@
 
                         parser(ifile, newmenu)
                 }
+ else if ($0 ~ /^#|\$MAKE|mainmenu_name/) {
+ printf("") >>menu
+ }
                 else if ($1 ~ "endmenu") {
                         printf("}\n") >>menu
                         return
                 }
- else if ($0 ~ /^#|\$MAKE|mainmenu_name/) {
- printf("") >>menu
- }
                 else if ($1 == "source") {
                         parser($2,menu)
                 }
@@ -751,12 +757,12 @@
 function parser(ifile,menu) {
 
         while (getline <ifile) {
- if ($1 ~ /mainmenu_option|endmenu/) {
- printf("") >>menu
- }
- else if ($0 ~ /^#|$MAKE|mainmenu_name/) {
+ if ($0 ~ /^#|$MAKE|mainmenu_name/) {
                         printf("") >>menu
                 }
+ else if ($1 ~ /mainmenu_option|endmenu/) {
+ printf("") >>menu
+ }
                 else if ($1 == "source") {
                         parser($2,menu)
                 }
@@ -1192,6 +1198,7 @@
                 choices="$2"
                 default="$3"
                 current=
+ chosen=
 
                 set -- $choices
                 while [ -n "$2" ]
@@ -1215,12 +1222,15 @@
                 set -- $choices
                 while [ -n "$2" ]
                 do
- if eval [ "$1" = "$current" ]
- then
- define_bool "$2" "y"
- else
- define_bool "$2" "n"
- fi
+ case "$1" in
+ "$current"*) if [ -z "$chosen" ]; then
+ define_bool "$2" "y"
+ chosen=1
+ else
+ define_bool "$2" "n"
+ fi ;;
+ *) define_bool "$2" "n" ;;
+ esac
                         shift ; shift
                 done
         }
diff -uNr linux-test9/scripts/tkparse.c linux/scripts/tkparse.c
--- linux-test9/scripts/tkparse.c Mon Jun 19 22:45:52 2000
+++ linux/scripts/tkparse.c Thu Oct 5 13:52:51 2000
@@ -326,6 +326,7 @@
 static const char * tokenize_choices( struct kconfig * cfg_choose,
     const char * pnt )
 {
+ int default_checked = 0;
     for ( ; ; )
     {
         struct kconfig * cfg;
@@ -349,12 +350,20 @@
         cfg->token = token_choice_item;
         cfg->cfg_parent = cfg_choose;
         pnt = get_string( pnt, &cfg->label );
+ if ( ! default_checked &&
+ ! strncmp( cfg->label, cfg_choose->value, strlen( cfg_choose->value ) ) )
+ {
+ default_checked = 1;
+ free( cfg_choose->value );
+ cfg_choose->value = cfg->label;
+ }
         while ( *pnt == ' ' || *pnt == '\t' )
             pnt++;
         pnt = get_string( pnt, &buffer );
         cfg->nameindex = get_varnum( buffer );
     }
-
+ if ( ! default_checked )
+ syntax_error( "bad 'choice' default value" );
     return pnt;
 }
 
@@ -515,7 +524,6 @@
             pnt = get_qstring ( pnt, &cfg->label );
             pnt = get_qstring ( pnt, &choice_list );
             pnt = get_string ( pnt, &cfg->value );
-
             cfg->nameindex = -(choose_number++);
             tokenize_choices( cfg, choice_list );
             free( choice_list );
**********************************************************************
******************** PATCH 2 *****************************************
diff -uNr linux-test9/Documentation/Configure.help linux/Documentation/Configure.help
--- linux-test9/Documentation/Configure.help Sat Sep 23 02:11:37 2000
+++ linux/Documentation/Configure.help Thu Oct 5 14:21:55 2000
@@ -2376,6 +2376,30 @@
   information about which PCI hardware does work under Linux and which
   doesn't.
 
+PCI support
+CONFIG_PCI_INTEGRATOR
+ Find out whether you have a PCI motherboard. PCI is the name of a
+ bus system, i.e. the way the CPU talks to the other stuff inside
+ your box. Other bus systems are ISA, EISA, Microchannel (MCA) or
+ VESA. If you have PCI, say Y, otherwise N.
+
+ The PCI-HOWTO, available from
+ http://www.linuxdoc.org/docs.html#howto , contains valuable
+ information about which PCI hardware does work under Linux and which
+ doesn't.
+
+QSpan PCI
+CONFIG_PCI_QSPAN
+ Find out whether you have a PCI motherboard. PCI is the name of a
+ bus system, i.e. the way the CPU talks to the other stuff inside
+ your box. Other bus systems are ISA, EISA, Microchannel (MCA) or
+ VESA. If you have PCI, say Y, otherwise N.
+
+ The PCI-HOWTO, available from
+ http://www.linuxdoc.org/docs.html#howto , contains valuable
+ information about which PCI hardware does work under Linux and which
+ doesn't.
+
 PCI access mode
 CONFIG_PCI_GOBIOS
   On PCI systems, the BIOS can be used to detect the PCI devices and
diff -uNr linux-test9/arch/arm/config.in linux/arch/arm/config.in
--- linux-test9/arch/arm/config.in Tue Sep 19 19:57:30 2000
+++ linux/arch/arm/config.in Thu Oct 5 12:25:49 2000
@@ -213,7 +213,8 @@
    define_bool CONFIG_PCI y
 else
    if [ "$CONFIG_ARCH_INTEGRATOR" = "y" ]; then
- bool 'PCI support' CONFIG_PCI
+ bool 'PCI support' CONFIG_PCI_INTEGRATOR
+ define_bool CONFIG_PCI $CONFIG_PCI_INTEGRATOR
    else
       define_bool CONFIG_PCI n
    fi
diff -uNr linux-test9/arch/ppc/config.in linux/arch/ppc/config.in
--- linux-test9/arch/ppc/config.in Tue Sep 19 19:57:30 2000
+++ linux/arch/ppc/config.in Thu Oct 5 12:25:49 2000
@@ -104,11 +104,11 @@
      "$CONFIG_8260" = "y" ]; then
    define_bool CONFIG_PCI n
 else
- if [ "$CONFIG_6xx" = "y" -o "$CONFIG_PPC64BRIDGE" = "y" ]; then
- define_bool CONFIG_PCI y
+ if [ "$CONFIG_8xx" = "y" ]; then
+ bool 'QSpan PCI' CONFIG_PCI_QSPAN
+ define_bool CONFIG_PCI $CONFIG_PCI_QSPAN
    else
- # CONFIG_8xx
- bool 'QSpan PCI' CONFIG_PCI
+ define_bool CONFIG_PCI y
    fi
 fi
 
@@ -151,7 +151,7 @@
 fi
 
 if [ "$CONFIG_PREP" = "y" -o "$CONFIG_ALL_PPC" = "y" ]; then
- bool 'PReP bootloader kernel arguments' CONFIG_CMDLINE_BOOL y
+ bool 'PReP bootloader kernel arguments' CONFIG_CMDLINE_BOOL
   if [ "$CONFIG_CMDLINE_BOOL" = "y" ] ; then
     string 'Initial kernel command string' CONFIG_CMDLINE "console=ttyS0,9600 console=tty0 root=/dev/sda2"
   fi
diff -uNr linux-test9/arch/s390/config.in linux/arch/s390/config.in
--- linux-test9/arch/s390/config.in Tue Aug 22 20:29:02 2000
+++ linux/arch/s390/config.in Thu Oct 5 12:42:22 2000
@@ -46,10 +46,15 @@
 endmenu
 
 source drivers/s390/Config.in
+
+mainmenu_option next_comment
+comment 'Character devices'
 bool 'Unix98 PTY support' CONFIG_UNIX98_PTYS
 if [ "$CONFIG_UNIX98_PTYS" = "y" ]; then
   int 'Maximum number of Unix98 PTYs in use (0-2048)' CONFIG_UNIX98_PTY_COUNT 256
 fi
+
+endmenu
 
 if [ "$CONFIG_NET" = "y" ]; then
   source net/Config.in
diff -uNr linux-test9/arch/sparc64/config.in linux/arch/sparc64/config.in
--- linux-test9/arch/sparc64/config.in Tue Sep 19 19:59:52 2000
+++ linux/arch/sparc64/config.in Thu Oct 5 12:25:49 2000
@@ -89,8 +89,8 @@
 tristate 'Loopback device support' CONFIG_BLK_DEV_LOOP
 dep_tristate 'Network block device support' CONFIG_BLK_DEV_NBD $CONFIG_NET
 
-#tristate 'Logical volume manager (LVM) support' CONFIG_BLK_DEV_LVM N
+#tristate 'Logical volume manager (LVM) support' CONFIG_BLK_DEV_LVM
 #if [ "$CONFIG_BLK_DEV_LVM" != "n" ]; then
-# bool ' LVM information in proc filesystem' CONFIG_LVM_PROC_FS Y
+# bool ' LVM information in proc filesystem' CONFIG_LVM_PROC_FS
 #fi
 
@@ -166,7 +166,7 @@
    if [ "$CONFIG_PCI" != "n" ]; then
       dep_tristate 'Adaptec AIC7xxx support' CONFIG_SCSI_AIC7XXX $CONFIG_SCSI
       if [ "$CONFIG_SCSI_AIC7XXX" != "n" ]; then
- bool ' Enable tagged command queueing (TCQ) by default' CONFIG_AIC7XXX_TAGGED_QUEUEING Y
+ bool ' Enable tagged command queueing (TCQ) by default' CONFIG_AIC7XXX_TAGGED_QUEUEING
          int ' Maximum number of TCQ commands per device' CONFIG_AIC7XXX_CMDS_PER_DEVICE 8
            bool ' Collect statistics to report in /proc' CONFIG_AIC7XXX_PROC_STATS N
          int ' Delay in seconds after SCSI bus reset' CONFIG_AIC7XXX_RESET_DELAY 5
diff -uNr linux-test9/drivers/s390/Config.in linux/drivers/s390/Config.in
--- linux-test9/drivers/s390/Config.in Tue Sep 19 19:58:38 2000
+++ linux/drivers/s390/Config.in Thu Oct 5 13:10:53 2000
@@ -5,7 +5,7 @@
 if [ "$CONFIG_NET" = "y" ]; then
   tristate 'Network block device support' CONFIG_BLK_DEV_NBD
 fi
-include drivers/md/Config.in
+source drivers/md/Config.in
 tristate 'RAM disk support' CONFIG_BLK_DEV_RAM
 if [ "$CONFIG_BLK_DEV_RAM" = "y" ]; then
   bool ' Initial RAM disk (initrd) support' CONFIG_BLK_DEV_INITRD
@@ -24,6 +24,8 @@
   bool ' Support for DIAG access to CMS reserved Disks' CONFIG_DASD_MDSK
 fi
 
+endmenu
+
 #menu_option next_comment
 #endmenu
 
@@ -33,7 +35,7 @@
   bool 'Channel Device Configuration (Temporary Option)' CONFIG_CHANDEV
   bool 'Network device support' CONFIG_NETDEVICES
   if [ "$CONFIG_NETDEVICES" = "y" ]; then
- menu_option next_comment
+ mainmenu_option next_comment
     comment 'S390 Network devices'
     bool 'CTC device support' CONFIG_CTC
     bool 'IUCV device support (VM only)' CONFIG_IUCV
@@ -41,6 +43,7 @@
     bool 'Ethernet (10 or 100Mbit)' CONFIG_NET_ETHERNET
     bool 'Token Ring driver support' CONFIG_TR
     bool 'FDDI driver support' CONFIG_FDDI
+ endmenu
   fi
   endmenu
 fi
**********************************************************************

-- 
=======================================================================
  Andrzej M. Krzysztofowicz               ankry@mif.pg.gda.pl
  phone (48)(58) 347 14 61
Faculty of Applied Phys. & Math.,   Technical University of Gdansk
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Oct 07 2000 - 21:00:17 EST