Subject: Re: bug#32050: invoke (guix build utils) error reporting lacking

From: Maxim Cournoyer <[email-masked]>
Date: Wed, 04 Jul 2018 09:12:56 -0400

More problematic even, it seems "invoke" can't do everything that
"system*" can?

For example, the following package builds fine:

--8<---------------cut here---------------start------------->8---
(define-public docbook-dsssl-doc
  (package
    (name "docbook-dsssl-doc")
    (version "1.79")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/docbook/"
                                  name "/" version "/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
                "1plp5ngc96pbna4rwglp9glcadnirbm3hlcjb4gjvq1f8biic9lz"))))
    (build-system trivial-build-system)
    (arguments
     `(#:modules ((guix build utils))
       #:builder
       (begin
         (use-modules (guix build utils))
         (let ((source (assoc-ref %build-inputs "source"))
               (out (assoc-ref %outputs "out")))
           (mkdir-p out)
           ;; Extract the "doc" subdirectory.
           (system* "tar" "xf" source "--strip-components=1"
                   "--no-same-owner" "-C" out
                   (string-append "docbook-dsssl-" ,version "/doc"))))))
    (native-inputs
     `(("bzip2", bzip2)
       ("tar" ,tar)))
    (home-page "https://docbook.org/")
    (synopsis "DocBook DSSSL style sheets documentation")
    (description "Documentation for the DocBook DSSSL style sheets.")
    (license non-copyleft)))
--8<---------------cut here---------------end--------------->8---

,run-in-store (build-package docbook-dsssl-doc #:use-substitutes? #t #:dry-run? #f)
/gnu/store/ljr8xn3qbr3lahr29zc0lbki9x33zls6-docbook-dsssl-doc-1.79
$4 = #t

But changing just "system*" to "invoke", I get:

--8<---------------cut here---------------start------------->8---
@ build-remote /gnu/store/fdcg5nazw2jvpb7k4mq7q0750gq22zh7-docbook-dsssl-doc-1.79.drv 192.168.1.105
Backtrace:
           2 (primitive-load "/gnu/store/06zszks9mwp52gih8j0mj5bahfi?")
In ice-9/eval.scm:
   191:35  1 (_ #f)
In /gnu/store/xlj36j9dw581iah51iyjgi75iikrj55h-module-import/guix/build/utils.scm:
    616:6  0 (invoke _ . _)

/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" "--no-same-owner" "-C" "/gnu/store/83yjsgvvapffhklg8md5cqa6gmb2dmqg-docbook-dsssl-doc-1.79" "docbook-dsssl-1.79/doc") exit-status: 127 term-signal: #f stop-signal: #f] 68fcc0>)'.
builder for `/gnu/store/fdcg5nazw2jvpb7k4mq7q0750gq22zh7-docbook-dsssl-doc-1.79.drv' failed with exit code 1
derivation '/gnu/store/fdcg5nazw2jvpb7k4mq7q0750gq22zh7-docbook-dsssl-doc-1.79.drv' offloaded to '192.168.1.105' failed: build of `/gnu/store/fdcg5nazw2jvpb7k4mq7q0750gq22zh7-docbook-dsssl-doc-1.79.drv' failed
While executing meta-command:
Throw to key `srfi-34' with args `(#<condition &nix-protocol-error [message: "build of `/gnu/store/fdcg5nazw2jvpb7k4mq7q0750gq22zh7-docbook-dsssl-doc-1.79.drv' failed" status: 100] a7228a0>)'.
--8<---------------cut here---------------end--------------->8---

Thanks,

Maxim