Rework resolv.conf handling, error out on wrong symlinks. [Closes: issue984]
[grml-live.git] / etc / grml / fai / config / scripts / GRMLBASE / 96-apt-listbugs
index 19c6844..bbe6117 100755 (executable)
@@ -1,23 +1,55 @@
-#!/bin/sh
+#!/bin/bash
 # Filename:      /etc/grml/fai/config/scripts/GRMLBASE/96-apt-listbugs
 # Purpose:       retreive list of bugreports of installed packages inside chroot
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2 or any later version.
-# Latest change: Sat Oct 13 18:03:15 CEST 2007 [mika]
 ################################################################################
 
-HOSTNAME=''
-[ -r /etc/grml/grml-live.conf ] && . /etc/grml/grml-live.conf
-[ -n "$HOSTNAME" ] || HOSTNAME=grml
-
-if [ -x $target/usr/sbin/apt-listbugs ] ; then
-   for severity in critical grave serious ; do
-       apt-listbugs -s $severity list $(apt-show-source | \
-       grep -v -e 'not installed' -e '--------------' -e 'Version' | \
-       awk '{print $4;}' | grep -v '^[() ]*$'| sort | uniq) \
-       /var/log/fai/dirinstall/$HOSTNAME/bugs.${severity}
-   done
+set -e
+
+if [ -r $target/etc/apt/apt.conf.d/10apt-listbugs ] ; then
+   if [ -x $target/usr/sbin/apt-listbugs ] ; then
+      sed -i 's#//DPkg::#DPkg::#' $target/etc/apt/apt.conf.d/10apt-listbugs
+   fi
+fi
+
+if ifclass RELEASE ; then
+
+  HOSTNAME=''
+  [ -r /etc/grml/grml-live.conf ]  && . /etc/grml/grml-live.conf
+  [ -r /etc/grml/grml-live.local ] && . /etc/grml/grml-live.local
+  [ -n "$HOSTNAME" ] || HOSTNAME=grml
+
+  if [ -r /etc/resolv.conf ] ; then
+    if [ -d $target/etc/resolvconf/run ] ; then # resolvconf
+      # sanity check to avoid "input file is output file",
+      # see http://bts.grml.org/grml/issue984
+      if ! [ -L $target/etc/resolvconf/run/resolv.conf ] ; then
+        cat /etc/resolv.conf >> $target/etc/resolvconf/run/resolv.conf
+      else
+        echo "Error: /etc/resolvconf/run/resolv.conf in chroot should not be a symlink." >&2
+        echo "       Looks like something is wrong, please fix manually." >&2
+        exit 1
+      fi
+    else # no resolvconf installed in chroot
+      if ! [ -L $target/etc/resolv.conf ] ; then
+        cat /etc/resolv.conf >> $target/etc/resolv.conf
+      else
+        echo "Error: /etc/resolv.conf in chroot should not be a symlink (resolvconf not installed)." >&2
+        exit 1
+      fi
+    fi
+  fi
+
+  if [ -x $target/usr/sbin/apt-listbugs -a -x $target/usr/bin/apt-show-source ] && \
+     [ -x $target/etc/apt/grml/listbugs ] ; then
+     for severity in critical grave serious ; do
+         SEVERITY=$severity $ROOTCMD /etc/apt/grml/listbugs > \
+         /var/log/fai/$HOSTNAME/last/bugs.${severity} || true # make sure it does not fail
+     done
+  fi
+
 fi
 
 ## END OF FILE #################################################################