Subject: invoke (guix build utils) error reporting lacking
From: Maxim Cournoyer <[email-masked]>
To: bug-guix <[email-masked]>
Date: Wed, 04 Jul 2018 08:50:50 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

The error reported by `invoke' isn't accurate, and mutes important
output from the program invoked.

Example of a failed tar extraction:
--8<---------------cut here---------------start------------->8---
/gnu/store/xlj36j9dw581iah51iyjgi75iikrj55h-module-import/guix/build/utils.scm:616:6: In procedure invoke:
Throw to key `srfi-34' with args `(#<condition &invoke-error [program: "tar" arguments: ("xf" "/gnu/store/yanfzfi7rdyf5scf5h65xbkn7xg0nnbn-docbook-dsssl-doc-1.79.tar.bz2" "--strip-components=1" "-C" "/gnu/store/rw7yzjk1wffza65z6l6rnn25qg97jvh1-docbook-dsssl-doc-1.79" "docbook-dssl-1.79/doc") exit-status: 127 term-signal: #f stop-signal: #f] 68fc80>)'.
--8<---------------cut here---------------end--------------->8---

While reproducing the same error in an containerized environment,
calling the command directly yields:

--8<---------------cut here---------------start------------->8---
tar xf yanfzfi7rdyf5scf5h65xbkn7xg0nnbn-docbook-dsssl-doc-1.79.tar.bz2 --strip-components=1 -C $PWD docbook-dssl-1.79/doc
tar: docbook-dssl-1.79/doc: Not found in archive
tar: Exiting with failure status due to previous errors
maxim@apteryx /tmp/docbook-dsssl-doc [env]# echo $?
2
--8<---------------cut here---------------end--------------->8---

Two observations:

1. invoke's reported exit status was wrong (127 rather than 2)
2. The useful error message "docbook-dssl-1.79/doc: Not found in
archive" was masked.