Your existing build was built unreproducibly. You need to remove it with guix gc first. Then you can run --rounds=2.

Alternatively add "-j1" as an argument to dune (as #:build-flags). That will change the output, ensuring you don't compare with an unreproducible build.

Le 13 octobre 2020 08:09:55 GMT-04:00, zimoun <zimon.toutoune@gmail.com> a écrit :
Hi Julien,

Wow! Thank you for this detailed investigation.


On Tue, 13 Oct 2020 at 04:03, Julien Lepiller <julien@lepiller.eu> wrote:

So, my hypothesis is that dune is building files out of order, but lets
ocaml read the generated cmi files. Since the build is not in order,
when it builds the same file in two different builds, the cmi are not
the same and the result is different. Since dune will always use all
my cores, I used a trick I learned from LFS:

echo 0 > /sys/devices/system/cpu/cpu1/online
(and similar for every other core, except cpu0)

This way, I have a single-core machine and, hopefully, dune runs
sequentially. This time, --rounds=2 passed (after removing the existing
store item of course).

Where do you this “echo 0 > /sys/devices/system/cpu/cpu1/online“ to
disable all except cpu0? Because, I have tried as root on my 4 cpu
machine and then “./pre-inst-env guix build ocaml-migrate-parsetree
–no-grafts –check“ still returns an error.


Cheers,
simon

--
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.