Maintainer scripts: test for presence of grub.cfg, don't execute update-grub otherwise
[grml-rescueboot.git] / debian / postinst
index 6442637..d5f9b75 100644 (file)
@@ -1,26 +1,41 @@
 #!/bin/sh
 # postinst script for grml-rescueboot
-#
-# see: dh_installdeb(1)
 
 set -e
 
-# summary of how this script can be called:
-#        * <postinst> `configure' <most-recently-configured-version>
-#        * <old-postinst> `abort-upgrade' <new version>
-#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
-#          <new-version>
-#        * <postinst> `abort-remove'
-#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
-#          <failed-install-package> <version> `removing'
-#          <conflicting-package> <version>
-# for details, see http://www.debian.org/doc/debian-policy/ or
-# the debian-policy package
+update_grub_wrapper() {
+  # default, unless configured otherwise:
+  ISO_LOCATION=/boot/grml
 
+  if [ -r /etc/default/grml-rescueboot ] ; then
+    . /etc/default/grml-rescueboot
+  fi
+
+  if ! ls "${ISO_LOCATION}"/*iso >/dev/null 2>&1 ; then
+    echo "INFO: No *.iso files found inside ${ISO_LOCATION}."
+    echo "INFO: Please create ${ISO_LOCATION} and place rescue ISO(s) there."
+    echo "INFO: Finally invoke update-grub and enjoy your rescue system."
+    return 0
+  fi
+
+  if ! which update-grub >/dev/null 2>&1; then
+    echo "WARN: ISOs found inside ${ISO_LOCATION} but update-grub not present (huh?)"
+    return 0
+  fi
+
+  if ! [ -e /boot/grub/grub.cfg ] ; then
+    echo "WARN: ISOs found inside ${ISO_LOCATION} but /boot/grub/grub.cfg does not exist."
+    echo "WARN: Ignoring request to run update-grub to avoid possible boot loader problems."
+    return 0
+  fi
+
+  echo "INFO: ISOs found inside ${ISO_LOCATION}, invoking update-grub:"
+  update-grub
+}
 
 case "$1" in
     configure)
-      /usr/sbin/update-grub
+      update_grub_wrapper
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)
@@ -32,9 +47,6 @@ case "$1" in
     ;;
 esac
 
-# dh_installdeb will replace this with shell code automatically
-# generated by other debhelper scripts.
-
 #DEBHELPER#
 
 exit 0