Subject: bug#31294: Failed building dependencies for guix.

From: [email-masked] (Ludovic Courtès)
Date: Mon, 30 Apr 2018 23:10:05 +0200

I diffed the profiles.go you sent against the known-good profiles.go
that I have.  There’s a lot of noise in the diff (different addresses,
etc.), but the interesting bit is this (the minus signs correspond to
the “bad” .go file):

@@ -11999,76 +11999,77 @@ Disassembly of info-dir-file at #x10120:
   94    (struct-set!/immediate 10 1 11) 
   95    (struct-set!/immediate 10 2 8)  
   96    (make-short-immediate 11 772)   ;; ()
-  97    (cons 10 10 11)                 
-  98    (cons 10 3 10)                  
-  99    (cons 10 4 10)                  
- 100    (cons 10 5 10)                  
- 101    (module-box 9 70359 70343 70357 #t);; `(@@ (guix gexp) <gexp>)'
- 106    (box-ref 9 9)                   
- 107    (allocate-struct/immediate 9 9 3)
- 108    (struct-set!/immediate 9 0 10)  
- 109    (struct-set!/immediate 9 1 11)  
- 110    (make-non-immediate 11 74512)   ;; #<procedure 7f1a6cbf2f18 at guix/profiles.scm:689:6 (t-c7b26db35e6c509-5fd8 t…>
- 112    (struct-set!/immediate 9 2 11)  
- 113    (box-set! 12 9)                 
- 114    (toplevel-box 11 74522 51858 74520 #t);; `gexp->derivation'
- 119    (box-ref 11 11)                 
- 120    (make-non-immediate 10 74518)   ;; "info-dir"         at guix/profiles.scm:714:20
- 122    (box-ref 12 12)                 
- 123    (static-ref 9 74533)            ;; #:local-build?
- 125    (static-ref 6 74543)            ;; #:substitutable?
- 127    (handle-interrupts)                                   at guix/profiles.scm:714:2
- 128    (mov 5 11)                      
- 129    (mov 11 10)                     
- 130    (mov 10 12)                     
- 131    (mov 12 5)                      
- 132    (mov 5 6)                       
- 133    (mov 6 7)                       
- 134    (mov 7 5)                       
- 135    (tail-call 7)                   
+  97    (cons 11 10 11)                 
+  98    (cons 11 3 11)                  
+  99    (cons 11 4 11)                  
+ 100    (cons 11 5 11)                  
+ 101    (module-box 10 70359 70343 70357 #t);; `(@@ (guix gexp) <gexp>)'
+ 106    (box-ref 10 10)                 
+ 107    (allocate-struct/immediate 10 10 3)
+ 108    (struct-set!/immediate 10 0 11) 
+ 109    (make-non-immediate 11 74513)   ;; ((guix build utils))
+ 111    (struct-set!/immediate 10 1 11) 
+ 112    (make-non-immediate 11 74514)   ;; #<procedure 7f73ca0eef28 at guix/profiles.scm:689:6 (t-c7b26db35e6c509-5fd8 t…>
+ 114    (struct-set!/immediate 10 2 11) 
+ 115    (box-set! 12 10)                
+ 116    (toplevel-box 11 74524 51856 74522 #t);; `gexp->derivation'
+ 121    (box-ref 11 11)                 
+ 122    (make-non-immediate 10 74520)   ;; "info-dir"         at guix/profiles.scm:714:20
+ 124    (box-ref 12 12)                 
+ 125    (static-ref 9 74535)            ;; #:local-build?
+ 127    (static-ref 6 74545)            ;; #:substitutable?
+ 129    (handle-interrupts)                                   at guix/profiles.scm:714:2
+ 130    (mov 5 11)                      
+ 131    (mov 11 10)                     
+ 132    (mov 10 12)                     
+ 133    (mov 12 5)                      
+ 134    (mov 5 6)                       
+ 135    (mov 6 7)                       
+ 136    (mov 7 5)                       
+ 137    (tail-call 7)                   

It confirms that the bad code creates a <gexp> structure with the empty
list as its ‘modules’ field instead of '((guix build utils)).

That’s clearly a Guile bug.

Ludo’.