Support execution of further scripts
[grml-debootstrap.git] / chroot-script
index f221d50..eaf39f6 100755 (executable)
@@ -44,6 +44,7 @@ stage() {
 
 # define chroot mirror {{{
 chrootmirror() {
+  [ -n "$KEEP_SRC_LIST" ] && return
   if [ -n "$ISO" ] ; then
      echo "deb $ISO $RELEASE main contrib" > /etc/apt/sources.list
      [ -n "$CHROOTMIRROR" ] && echo "deb $CHROOTMIRROR $RELEASE main contrib non-free" >> /etc/apt/sources.list
@@ -58,7 +59,9 @@ chrootmirror() {
 # set up grml repository {{{
 grmlrepos() {
   if [ -n "$GRMLREPOS" ] ; then
-     cat >> /etc/apt/sources.list << EOF
+     # user might have provided their own apt sources.list
+     if ! grep -q grml /etc/apt/sources.list 2>/dev/null ; then
+        cat >> /etc/apt/sources.list << EOF
 
 # grml: stable repository:
   deb     http://deb.grml.org/ grml-stable  main
@@ -69,6 +72,8 @@ grmlrepos() {
   deb-src http://deb.grml.org/ grml-testing main
 
 EOF
+     fi
+
      # make sure we have the keys available for aptitude
      gpg --keyserver subkeys.pgp.net --recv-keys F61E2E7CECDEA787
      gpg --export F61E2E7CECDEA787 | apt-key add - || /bin/true # not yet sure
@@ -133,8 +138,10 @@ EOF
 packages() {
   # Pre-seed the debconf database with answers. Each question will be marked
   # as seen to prevent debconf from asking the question interactively.
-  [ -f /etc/debootstrap/debconf-selections ] && \
+  [ -f /etc/debootstrap/debconf-selections ] && {
+    echo "Preseeding the debconf database, some lines might be skipped..."
     cat /etc/debootstrap/debconf-selections | debconf-set-selections
+  }
 
   if [ "$PACKAGES" = 'yes' ] ; then
      if ! [ -r /etc/debootstrap/packages ] ; then
@@ -249,7 +256,7 @@ hosts() {
 
 # set up /etc/network/interfaces {{{
 interfaces() {
-  if ! [ -r /etc/network/interfaces ] ; then
+  if ! [ -r /etc/network/interfaces ] || ! grep -q "auto lo" /etc/network/interfaces ; then
      echo "Setting up /etc/network/interfaces"
      cat >> /etc/network/interfaces << EOF
 
@@ -317,6 +324,11 @@ hostname() {
   if [ -n "$HOSTNAME" ] ; then
      echo "Setting hostname to ${HOSTNAME}."
      echo "$HOSTNAME" > /etc/hostname
+
+     # adjust postfix configuration
+     if [ -r /etc/postfix/main.cf ] ; then
+        sed -i "s/grml/$HOSTNAME/g" /etc/postfix/main.cf
+     fi
   fi
 }
 # }}}
@@ -381,6 +393,17 @@ grub() {
 }
 # }}}
 
+# execute all scripts present in /etc/debootstrap/chroot-scripts/ {{{
+custom_scripts() {
+  [ -d /etc/debootstrap/chroot-scripts/ ] || return 0
+
+  for script in /etc/debootstrap/chroot-scripts/* ; do
+      echo "Executing script $script"
+      $script && echo "done" || echo "failed"
+  done
+}
+# }}}
+
 # make sure we don't have any running processes left {{{
 services() {
   for service in ssh mdadm mdadm-raid ; do
@@ -406,10 +429,11 @@ finalize() {
 # execute the functions {{{
  for i in chrootmirror grmlrepos kernelimg_conf makedev install_policy_rcd \
      packages extrapackages mkinitrd kernel reconfigure hosts interfaces   \
-     timezone fstab hostname initrd grub passwords services finalize ; do
-    if stage $i ; then
+     timezone fstab hostname initrd grub passwords custom_scripts \
+     services finalize ; do
+     if stage $i ; then
        $i && stage $i done || exit 1
-    fi
+     fi
   done
 # }}}