Bump version number in script and release version 0.40.
[grml-debootstrap.git] / chroot-script
index b2158aa..b5e60b4 100755 (executable)
@@ -42,6 +42,15 @@ stage() {
   echo "   Executing stage ${1}"
   return 0
 }
+
+askpass() {
+  # read -s emulation for dash. result is in $resp.
+  set -o noglob
+  stty -echo
+  read resp
+  stty echo
+  set +o noglob
+}
 # }}}
 
 # define chroot mirror {{{
@@ -131,7 +140,12 @@ EOF
 
 # remove now useless apt cache {{{
 remove_apt_cache() {
-  apt-get clean
+  if [ "$RM_APTCACHE" = 'yes' ] ; then
+    echo "Cleaning apt cache."
+    apt-get clean
+  else
+    echo "Not cleaning apt cache as \$RM_APTCACHE is unset."
+  fi
 }
 # }}}
 
@@ -222,10 +236,14 @@ passwords()
      echo "Setting password for user root:"
      while [ "$a" != "$b" ] ; do
        echo -n "Enter new UNIX password for user root: "
-       read -s a
+       askpass
+       a="$resp"
+       unset resp
        echo
        echo -n "Retype new UNIX password for user root: "
-       read -s b
+       askpass
+       b="$resp"
+       unset resp
        echo
        if [ "$a" != "$b" ] ; then
          echo "Sorry, passwords do not match. Retry."
@@ -380,8 +398,11 @@ grub_config() {
      # finally install grub
      if [ -x /usr/sbin/update-grub ] ; then
         UPDATEGRUB='/usr/sbin/update-grub'
-     else
+     elif [ -x /sbin/update-grub ] ; then
         UPDATEGRUB='/sbin/update-grub'
+     else
+       echo "Error: update-grub not available, can not execute it."
+       return 1
      fi
 
      # grub2:
@@ -411,15 +432,14 @@ services() {
 }
 # }}}
 
-# unmount all filesystems in chroot, make sure nothing is left {{{
+# unmount /proc and make sure nothing is left {{{
 finalize() {
   # make sure we don't leave any sensible data
   rm -f /etc/debootstrap/variables
+
   [ -n "$POLICYRCD" ] && rm -f /usr/sbin/policy-rc.d
-  umount -a    1>/dev/null 2>/dev/null || true
-  umount /proc 1>/dev/null 2>/dev/null || true
-  umount /proc 1>/dev/null 2>/dev/null || true
-  umount -a    1>/dev/null 2>/dev/null || true
+
+  umount /proc >/dev/null 2>/dev/null || true
 }
 # }}}
 
@@ -441,9 +461,9 @@ trap signal_handler HUP INT QUIT TERM
  install_policy_rcd
 
  for i in chrootmirror grmlrepos kernelimg_conf \
-     remove_apt_cache kernel packages extrapackages reconfigure hosts interfaces   \
-     timezone fstab hostname initrd grub_config passwords custom_scripts   \
-     services ; do
+     kernel packages extrapackages  reconfigure hosts interfaces \
+     timezone fstab hostname initrd grub_config passwords        \
+     custom_scripts remove_apt_cache services ; do
      if stage $i ; then
        $i && stage $i done || exit 1
      fi