Author: hawk
Date: Wed Mar 15 11:16:41 2006
New Revision: 7166

Modified:
   bootdisk/trunk/batch-installer/ui/ui-main
Log:
- make sure that hostadapters_modules are set and loaded before
  selecting source devices (only for source type cdrom and disk)
- show more detailed list of CD-ROMs, mark detected ones
- with source type disk show only detected patitions in source
  partition selection dialog


Modified: bootdisk/trunk/batch-installer/ui/ui-main
==============================================================================
--- bootdisk/trunk/batch-installer/ui/ui-main   (original)
+++ bootdisk/trunk/batch-installer/ui/ui-main   Wed Mar 15 11:16:41 2006
@@ -81,79 +81,138 @@
 EOF
 }
 
+cd_det () {
+  if echo " $autocdrom " | grep -q " $1 " ; then
+    nls "(detected)"
+  fi
+}
+
 ui-source_device () {
-case "$source" in 
-    cdrom)
-       item1="/dev/hda"
-       item2="/dev/hdb"
-       item3="/dev/hdc"
-       item4="/dev/hdd"
-       item5="/dev/scd0"
-       item6="/dev/scd1"
-       item7="/dev/scd2"
-       item8="/dev/scd3"
-       item9="/dev/scd4"
-       dml <<EOF 
-           <br>`nls "If you have single IDE cdrom, choose auto"`
-           <br>
-           <meta title="CDROM">
-           <menu id=res_menu res=1>
-           <item id=ui_custom>${custom_text}
-           <item id=auto>${auto_text}
-           <item id=$item1>$item1
-           <item id=$item2>$item2
-           <item id=$item3>$item3
-           <item id=$item4>$item4
-           <item id=$item5>$item5
-           <item id=$item6>$item6
-           <item id=$item7>$item7
-           <item id=$item8>$item8
-           <item id=$item9>$item9
-           </menu>
-           $@
-EOF
-       ;;
-    nfs)
-       item1="192.168.0.1:/home/users/klakier/rpm"
-       item2="heaven.net:/pub/all/saints"
+local bailout scds cscd
+bailout=
+autocdrom=
+
+case "$source" in
+    cdrom|disk)
+    if test -z "$hostadapters_modules"; then
        dml <<EOF
-           <br>`nls "NFS device should be given in form machine:/directory."`
+           <meta title="$(nls "Information")">
+           <meta active=$act>
            <br>
-           <meta title="$(nls "NFS server")">
-           <menu id=res_menu res=1>
-           <item id=ui_custom>${custom_text}
-           <item id=$item1>$item1
-           <item id=$item2>$item2
-           </menu> 
-           $@
+           <br>`nls "hostadapters_modules must be set before selecting source 
devices."`
+           <br><br>
+           <button res=1>
 EOF
-       ;;
-    net) 
-       dml <<EOF
-           <br>`nls "Choose server or enter custom one"`
-           <br>
-           <meta title="$(nls "Remote server")">
-           <menu id=res_menu res=1> 
-           <item id=ui_custom>${custom_text}
-$(ui-mirror just-dump)
-           </menu>
-           $@
+       bailout="true"
+    else
+       # execute load_device_modules with output redirected to current console
+       load_device_modules "$hostadapters_modules" 1>/dev/tty 2>/dev/tty
+       if [ -d /proc/ide ] ; then
+           for f in /proc/ide/hd* ; do
+               if [ -f $f/media ] && [ "$(cat $f/media)" = "cdrom" ] ; then
+                   autocdrom="$autocdrom /dev/`basename $f`"
+               fi
+           done
+       fi
+       if [ -f /proc/scsi/scsi ] ; then
+           scds=`cat /proc/scsi/scsi | grep "Type:.*CD-ROM" | wc -l`
+           cscd=0
+           while [ $cscd -lt $scds ]; do
+               autocdrom="$autocdrom /dev/scd$cscd"
+               cscd=$(($cscd+1))
+           done
+       fi
+       autocdrom=$(echo "$autocdrom" | sed -e 's/^ //')
+    ;;
+esac
+
+if test -z "$bailout"; then
+    case "$source" in 
+        cdrom)
+           dml <<EOF 
+               <br>`nls "Choose your CD-ROM device. If you have single CD 
drive, choose auto."`
+               <br>
+               <meta title='$(nls "CD-ROM device")'>
+               <menu id=res_menu res=1>
+               <item id=ui_custom>${custom_text}
+               <item id=auto>${auto_text}
+               <item id=/dev/hda>/dev/hda $(nls "(Primary Master)") $(cd_det 
/dev/hda)
+               <item id=/dev/hdb>/dev/hdb $(nls "(Primary Slave)") $(cd_det 
/dev/hdb)
+               <item id=/dev/hdc>/dev/hdc $(nls "(Secondary Master)") $(cd_det 
/dev/hdc)
+               <item id=/dev/hdd>/dev/hdd $(nls "(Secondary Slave)") $(cd_det 
/dev/hdd)
+               <item id=/dev/scd0>/dev/scd0 $(nls "(SCSI CD-ROM #0)") $(cd_det 
/dev/scd0)
+               <item id=/dev/scd1>/dev/scd1 $(nls "(SCSI CD-ROM #1)") $(cd_det 
/dev/scd1)
+               <item id=/dev/scd2>/dev/scd2 $(nls "(SCSI CD-ROM #2)") $(cd_det 
/dev/scd2)
+               <item id=/dev/scd3>/dev/scd3 $(nls "(SCSI CD-ROM #3)") $(cd_det 
/dev/scd3)
+               </menu>
+               $@
 EOF
        ;;
-    disk)
-       dml <<EOF 
-       <br>`nls "Choose partition or enter custom one"`
+       disk)
+           dml <<EOF 
+       <br>`nls "Choose partition or enter custom one."`
        <br>
        <meta title="$(nls "Disk partition with source")">
        <menu id=res_menu res=1> 
        <item id=ui_custom>${custom_text}
-       <item id=/dev/hda1>/dev/hda1
-       <item id=/dev/hda2>/dev/hda2
+       $(
+           avail_dest_devices=`awk '
+           {
+               if (match($4, /hd[a-h][0-9]$/) ||
+               match($4, /sd[a-h][0-9]$/) ||
+               match($4, /rd\/c[0-9]d[0-9]p[0-9]*$/) ||
+               match($4, /ida\/c[0-9]d[0-9]p[0-9]*$/) ||
+               match($4, /cciss\/c[0-9]d[0-9]p[0-9]*$/) ||
+               match($4, /ataraid\/d[0-9]p[0-9]*$/) ||
+               match($4, /i2o\/hd[a-h][0-9]$/))
+               print "/dev/" $4
+           }
+           ' /proc/partitions | sort`
+           for dev in $avail_dest_devices; do
+               # filter out IDE CD-ROMs
+               media=`echo "/proc/ide/$dev/media" | sed -e 's|/dev/||g'`
+               if [ -f $media ] ; then
+                   if [ "$(cat $media)" != "cdrom" ] ; then
+                       echo "<item id=$dev>$dev $(disk_name $dev)"
+                   fi
+               else
+                   echo "<item id=$dev>$dev $(disk_name $dev)"
+               fi
+           done
+       )
        </menu>
        $@
 EOF
        ;;
-esac
+        nfs)
+           item1="192.168.0.1:/home/users/klakier/rpm"
+           item2="heaven.net:/pub/all/saints"
+           dml <<EOF
+               <br>`nls "NFS device should be given in form 
machine:/directory."`
+               <br>
+               <meta title="$(nls "NFS server")">
+               <menu id=res_menu res=1>
+               <item id=ui_custom>${custom_text}
+               <item id=$item1>$item1
+               <item id=$item2>$item2
+               </menu> 
+               $@
+EOF
+        ;;
+       net) 
+           dml <<EOF
+               <br>`nls "Choose server or enter custom one."`
+               <br>
+               <meta title="$(nls "Remote server")">
+               <menu id=res_menu res=1> 
+               <item id=ui_custom>${custom_text}
+$(ui-mirror just-dump)
+               </menu>
+               $@
+EOF
+       ;;
+    esac
+fi
 }
 
 
@@ -208,6 +267,7 @@
 
 
 ui-dest_devices () {
+local avail_dest_devices
 if test -z "$hostadapters_modules"; then
   dml <<EOF
     <meta title="$(nls "Information")">
_______________________________________________
pld-cvs-commit mailing list
pld-cvs-commit@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to