diff options
author | Joey Hess <joey@kitenet.net> | 2012-04-18 00:39:41 (GMT) |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-04-18 00:44:22 (GMT) |
commit | daa802a0a4229d8267c51dccd8b774b3cc97e33f (patch) | |
tree | 9e2b4021671a59823456cb23634ce921e5649a94 /functions | |
parent | 67932a83320b73d339bdd075b8d66d20c9817a5d (diff) | |
download | debootstrap-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-- | functions | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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 |