Subject: (guix self) can silently miscompile modules
From: [email-masked] (Ludovic Courtès)
To: [email-masked]
Date: Tue, 01 May 2018 12:09:16 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Sometimes (guix self), used by ‘guix pull’, can silently miscompile
modules as shown in
<https://berlin.guixsd.org/log/g5mp6aqwf8xqx3znwf13zrv3szd8a3b5-guix-packages>:

--8<---------------cut here---------------start------------->8---
compiling...	 37.3% of 407 filesIn thread:
unexpected syntax
In thread:
no code for module (guix licenses)
.compiling...	 37.6% of 407 filesIn thread:
no code for module (guix licenses)
.compiling...	 37.8% of 407 filesIn thread:
no code for module (guix licenses)
.compiling...	 38.1% of 407 filesIn thread:
no code for module (guix licenses)
.compiling...	 38.3% of 407 filesIn thread:
no code for module (guix licenses)
.compiling...	 38.6% of 407 filesIn thread:
no code for module (guix licenses)
.compiling...	 38.8% of 407 filesIn thread:
no code for module (guix build-system haskell)
.compiling...	100.0% of 407 files
@ build-succeeded /gnu/store/m5z6zk6898iiahslp6h5ji2jqgimqd14-guix-packages.drv -
--8<---------------cut here---------------end--------------->8---

The result in this case is a semi-broken set of .go files, which can
additionally be distributed as substitutes by berlin.

For instance, I get this:

--8<---------------cut here---------------start------------->8---
$ guix build gimp -n
Backtrace:
          17 (apply-smob/1 #<catch-closure 1a63c60>)
In ice-9/boot-9.scm:
    705:2 16 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8 15 (_ #(#(#<directory (guile-user) 1b11140>)))
In guix/ui.scm:
  1502:12 14 (run-guix-command _ . _)
In ice-9/boot-9.scm:
    829:9 13 (catch _ _ #<procedure 7f7488abe430 at guix/ui.scm:553…> …)
    829:9 12 (catch _ _ #<procedure 7f7488abe448 at guix/ui.scm:661…> …)
In guix/scripts/build.scm:
   736:24 11 (_)
    665:4 10 (options->derivations _ _)
In srfi/srfi-1.scm:
   679:15  9 (append-map _ _ . _)
   592:17  8 (map1 (#<package [email-masked] gnu/packages/gimp.scm:117…>))
In guix/scripts/build.scm:
   670:30  7 (_ _)
In guix/packages.scm:
   839:14  6 (cache! #<weak-table 0/113> #<package [email-masked] gnu/…> …)
In unknown file:
           5 (_ #<procedure thunk ()> #<procedure list _> #<undefined>)
In guix/packages.scm:
  1158:22  4 (thunk)
   839:14  3 (cache! #<weak-table 0/223> #<package [email-masked] gnu/…> …)
In unknown file:
           2 (_ #<procedure thunk ()> #<procedure list _> #<undefined>)
In guix/packages.scm:
   942:46  1 (thunk)
In gnu/packages/gimp.scm:
    152:5  0 (inputs)

gnu/packages/gimp.scm:152:5: In procedure inputs:
poppler-data: unbound variable
--8<---------------cut here---------------end--------------->8---

… and this is only because pdf.go is missing from ~/.config/guix/latest
and it ends up picking up an old and unrelated pdf.go.

Compilation should abort on the first exception.

Ludo’.