Subject: Re: bug#20272: Support reproducible builds

From: [email-masked] (Ludovic Courtès)
Date: Thu, 15 Dec 2016 00:32:47 +0100

[email-masked] (Ludovic Courtès) skribis:

> Jan Nieuwenhuizen <[email-masked]> skribis:
>
>> I have been building quite some versions of Guile the past week.  There
>> re a couple of .go files that keep giving me problems wrt
>> nondeterminism:
>>
>>     web/server/http.go
>>
>> (define *timer* (gettimeofday)) seemed suspect, but seems harmless.
>>
>>     rnrs/arithmetic/fixnums.go
>>
>> make-implementation-restriction-violation seemed suspect, but commenting
>> it out does not seem to help.
>>
>> After commenting out all of http.scm and fixnums.scm, yesterday I had 3
>> Guix builds on two machines (GuixSD and one Ubuntu+Guix) that were
>> bit-identical, but one build showed differences in
>>
>>     system/repl/commands.go
>>
>> Apparently most of the time this file builds deterministicly, but some
>> times it does not!?  Ideas?
>
> Did you look at these differences with diffoscope?  That would be
> useful.

I built it with ‘guix build --rounds=2 -K’ and got 17 differing .go
files.  I looked at srfi/srfi-9/gnu.go with ediff + hexl-mode in Emacs
and found a dozen of “t-XYZ” and “tmp-XYZ” identifiers with a different
value for XYZ (an integer).

To be continued…

Ludo’.