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.



Reply via email to