GNU bug report logs -
#28265
guix system build fails
Previous Next
Full log
View this message in rfc822 format
Hello!
Christopher Baines <mail <at> cbaines.net> skribis:
> On Mon, 28 Aug 2017 21:52:32 +0300
> Efraim Flashner <efraim <at> flashner.co.il> wrote:
>
>> efraim <at> macbook42:~/workspace/guix$ time nice ./pre-inst-env guix
>> system build ~/lightweight-desktop.scm Backtrace:
>> 11 (primitive-load
>> "/home/efraim/workspace/guix/scripts/gu…") In guix/ui.scm:
>> 1331:12 10 (run-guix-command _ . _)
>> In ice-9/boot-9.scm:
>> 837:9 9 (catch _ _ #<procedure 7f4e83aea8c0 at guix/ui.scm:448…>
>> …) 837:9 8 (catch _ _ #<procedure 7f4e83aea8d8 at guix/ui.scm:536…>
>> …) In guix/scripts/system.scm:
>> 1022:8 7 (_)
>> 905:6 6 (process-action _ _ _)
>> In guix/store.scm:
>> 1441:24 5 (run-with-store _ _ #:guile-for-build _ #:system _)
>> In guix/scripts/system.scm:
>> 637:2 4 (_ _)
>> In gnu/system.scm:
>> 884:4 3 (_ _)
>> In gnu/bootloader/grub.scm:
>> 343:29 2 (grub-configuration-file #<<bootloader-configuration> …>
>> …) 207:30 1 (eye-candy #<<bootloader-configuration> bootloader: #<…>
>> …) 149:22 0 (grub-background-image #<<bootloader-configuration> bo…>
>> …)
>>
>> gnu/bootloader/grub.scm:149:22: In procedure grub-background-image:
>> gnu/bootloader/grub.scm:149:22: In procedure struct_vtable: Wrong
>> type argument in position 1 (expecting struct): 5
>>
>
> I tried this, and got the same error, but then I deleted all the .go
> files, re-ran make, and then tried again, and then it worked.
Yeah, this kind of error is typical of an ABI mismatch. The reason is
that in Guile, record field accessors of SRFI-9 record types are
inlined:
--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> ,use(srfi srfi-9)
scheme@(guile-user)> (define-record-type <foo>
(make-foo x)
foo?
(x foo-x))
scheme@(guile-user)> ,expand (foo-x bar)
$2 = (let ((s bar))
(if ((@@ (srfi srfi-9) eq?)
((@@ (srfi srfi-9) struct-vtable) s)
<foo>)
((@@ (srfi srfi-9) struct-ref) s 0)
(let ((s* s))
((@@ (srfi srfi-9) throw)
'wrong-type-arg
'foo-x
"Wrong type argument: ~S"
((@@ (srfi srfi-9) list) s*)
((@@ (srfi srfi-9) list) s*)))))
--8<---------------cut here---------------end--------------->8---
The (struct-ref s 0) above becomes incorrect if, say, we add a field
right before ‘x’, because ‘x’ would now be at offset 1.
The safe solution here is to “make clean-go && make”.
Ludo’.
This bug report was last modified 7 years and 350 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.