Author: hawk
Date: Tue Mar 21 22:47:18 2006
New Revision: 7262

Modified:
   bootdisk/trunk/batch-installer/installer-prep
Log:
- if we are installing from net, try to load modules from net to avoid
  addons juggling (but fallback to addons when network loading fails)
- small cosmetic


Modified: bootdisk/trunk/batch-installer/installer-prep
==============================================================================
--- bootdisk/trunk/batch-installer/installer-prep       (original)
+++ bootdisk/trunk/batch-installer/installer-prep       Tue Mar 21 22:47:18 2006
@@ -75,46 +75,55 @@
     test -d "$modules_dir" || die "No $modules_dir directory"
 
     if test ! -r "$modules_dir/${1}.o"; then
-       # try to load from addons diskette
-       package=`find_package ${1}`
-       test "$package" || die "No package contains module $1"
-       addons=`find_addons $package`
-       test "$addons" || die "No addons disk contains package $package"
-       first=yes
-       # the source will be the diskette, temporarily 
-       # (that _is_ mountable)
-       tmp=$source_not_mountable
-       source_not_mountable=""
-       while : ; do
-           if grep -q "$source_mountpoint" /proc/mounts; then
-               umount $source_mountpoint || :
+        package=`find_package ${1}`
+        test "$package" || die "No package contains module $1"
+       # if we are installing from net, try to fetch whole required package
+       # (to avoid fetching it again if some other module from it will be 
needed)
+        if test -n "$source_not_mountable"; then
+           if load_package $package; then
+               tmp="value"
            fi
-           
-           if mount /dev/fd0 -t ext2 $source_mountpoint 2>/dev/null ; then
-               if load_package $package ${1}.o; then 
-                   break 
-               else
-                   nls "This disk does not contain package %s with module 
%s.\n" "$package" "$1"
+       fi
+       # if fetching from network wasn't executed or has failed, search for
+       # required module on addons disks
+       if test -z $tmp ; then
+           addons=`find_addons $package`
+           test "$addons" || die "No addons disk contains package $package"
+           first=yes
+           # the source will be the diskette, temporarily 
+           # (that _is_ mountable)
+           tmp=$source_not_mountable
+           source_not_mountable=""
+           while : ; do
+               if grep -q "$source_mountpoint" /proc/mounts; then
+                   umount $source_mountpoint || :
                fi
-           else
-               if test ! "$first" ; then
-                   nls "Cannot mount diskette!\n"
+
+               if mount /dev/fd0 -t ext2 $source_mountpoint 2>/dev/null ; then
+                   if load_package $package ${1}.o; then 
+                       break 
+                   else
+                       nls "This disk does not contain package %s with module 
%s.\n" "$package" "$1"
+                   fi
+               else
+                   if test ! "$first" ; then
+                       nls "Cannot mount diskette!\n"
+                   fi
                fi
-           fi
-           
-           if test "$first" ; then
-               nls "Module %s is not available, package %s must be loaded.\n" 
"$1" "$package"
-               nls "Please insert disk \"addons %d\" and press Enter\n" 
"$addons"
-               first=
-           else
-               nls "Try another disk and press Enter.\n"
-           fi
-           read ans
-       done
-       # restore correct value
-       source_not_mountable=$tmp
 
-       umount $source_mountpoint || :
+               if test "$first" ; then
+                   nls "Module %s is not available, package %s must be 
loaded.\n" "$1" "$package"
+                   nls "Please insert disk \"addons %d\" and press Enter\n" 
"$addons"
+                   first=
+               else
+                   nls "Try another disk and press Enter.\n"
+               fi
+               read ans
+           done
+           # restore correct value
+           source_not_mountable=$tmp
+           umount $source_mountpoint || :
+       fi
     fi
 
     # find and load modules on which our wanted module depends
@@ -180,7 +189,10 @@
              ;;
          esac
          snarf -n "$file" 
-       ) || die "Cannot get $file"
+       ) || {
+           log warn "`nls "Cannot get %s" "$file"`"
+           return 1
+         }
        file="$tmp/${pkg}.tar.gz"
     else
        file="${source_mountpoint}${source_dir}/$inst_dir/${pkg}.tar.gz"
@@ -189,7 +201,7 @@
          # try without source_dir (for addons disk)
          file="${source_mountpoint}/$inst_dir/${pkg}.tar.gz"
          test -f "$file" || { 
-           echo "No file 
${source_mountpoint}${source_dir}/$inst_dir/${pkg}.tar.gz nor 
${source_mountpoint}/$inst_dir/${pkg}.tar.gz"
+           log warn "`nls "No file %s nor %s" 
"${source_mountpoint}${source_dir}/$inst_dir/${pkg}.tar.gz" 
"${source_mountpoint}/$inst_dir/${pkg}.tar.gz"`"
            return 1
          }
        }
@@ -521,12 +533,15 @@
 
 inst_dir="$INSTALLER_DIR"
 
-# needed before $0 testing...
 if test "X$source" = "Xnet" ; then
+  # needed before $0 testing...
   source_not_mountable=1
+  # configure network to avoid using addons disks where possible
+  load_net_device_modules
+  configure_network
 fi
 
-# invoked as load_nodule runs function load_module,
+# invoked as load_nodule runs function load_module
 if test "x`basename $0 || :`" = "xload_module"; then 
     load_module "$@"; exit $?
 # invoked as load_device_modules, runs function load_device_modules
@@ -606,7 +621,7 @@
        ;;
 esac
 
-# invoked as load_package runs function load_package,
+# invoked as load_package runs function load_package
 if test "x`basename $0 || :`" = "xload_package"; then 
     load_package "$@"; exit $?
 fi
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to