summaryrefslogtreecommitdiffstats
path: root/functions
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2012-04-18 00:39:41 (GMT)
committerJoey Hess <joey@kitenet.net>2012-04-18 00:44:22 (GMT)
commitdaa802a0a4229d8267c51dccd8b774b3cc97e33f (patch)
tree9e2b4021671a59823456cb23634ce921e5649a94 /functions
parent67932a83320b73d339bdd075b8d66d20c9817a5d (diff)
downloaddebootstrap-daa802a0a4229d8267c51dccd8b774b3cc97e33f.zip
debootstrap-daa802a0a4229d8267c51dccd8b774b3cc97e33f.tar.gz
debootstrap-daa802a0a4229d8267c51dccd8b774b3cc97e33f.tar.bz2
point users at the log file on error, try to show a package name too
When installation or configuration of a package fails, output a message that points the user to the log file[1]. Attempt to grep out the first package that dpkg failed on and show its name too. Closes: #472704 Sample: W: Failure while configuring base packages. This will be re-attempted up to five times. W: See sid/debootstrap.log for details (possibly the package libept1 is at fault) This relies on the LANG=C currently set for the debootstrap run. Changes to the "dpkg: error processing $PACKAGE" message would break the package name extractor, but it'd fall back to not showing a package name. This adds cut to the set of utilities debootstrap uses, which shouldn't be a problem. [1] In d-i, debootstrap doesn't know where the log file is, but then this message goes to the same syslog file, so I didn't add any special handling for this case.
Diffstat (limited to 'functions')
-rw-r--r--functions12
1 files changed, 12 insertions, 0 deletions
diff --git a/functions b/functions
index edc6332..ad7b211 100644
--- a/functions
+++ b/functions
@@ -877,6 +877,18 @@ in_target_failmsg () {
shift; shift; shift
if ! $CHROOT_CMD "$@"; then
warning "$code" "$msg" "$arg"
+ # Try to point user at actual failing package.
+ msg="See %s for details"
+ if [ -e "$TARGET/debootstrap/debootstrap.log" ]; then
+ arg="$TARGET/debootstrap/debootstrap.log"
+ local pkg="$(grep '^dpkg: error processing ' "$TARGET/debootstrap/debootstrap.log" | head -n 1 | cut -d ' ' -f 4)"
+ if [ -n "$pkg" ]; then
+ msg="$msg (possibly the package $pkg is at fault)"
+ fi
+ else
+ arg="the log"
+ fi
+ warning "$code" "$msg" "$arg"
return 1
fi
return 0