[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Non deterministic package

From: Julien Lepiller
Subject: Re: Non deterministic package
Date: Wed, 04 Aug 2021 15:50:00 -0400
User-agent: K-9 Mail for Android

Le 4 août 2021 15:14:16 GMT-04:00, phodina via <> a écrit :
>I came across a package in the Guix repository which fails to build. The 
>package in question here is rust-brotli-sys-0.3. So the obvious question comes 
>up. How does this happen?
>I just ran =guix build rust-brotli-sys= with the following output:
>phase `reset-gzip-timestamps' succeeded after 0.0 seconds
>starting phase `compress-documentation'
>phase `compress-documentation' succeeded after 0.0 seconds
>guix build: error: derivation 
>`/gnu/store/kf8kwl7yn8jqpwc9p97bw8vs5g5bvas4-rust-brotli-sys-0.3.2.drv' may 
>not be deterministic: output 
>`/gnu/store/yrrdr6rrc1s4b9lf7wz40c2gnv5kvxff-rust-brotli-sys-0.3.2' differs
>Also this is my guix channel:
>repository URL:
>branch: master
>commit: b95fb85f593d377864fc1bfb3c118e54d03783be
>I tried to run the build with the flag --check and multiple rounds, but got 
>the same result.
>So could it be caused by not running =./pre-inst-env guix build --rounds=2 
><PKG>= when submitting the patch?

You need to use. /pre-inst-env to test your patches, otherwise you'll only run 
your current guix. For an added package, it will be missing, for an updated 
package it will not build the newer version, etc.

>Or when somebody updates some pkg that this pkg depends on and does not run 
>=./pre-inst-env guix --refresh --list-dependent= and then check the dependent 

It can also happen when only the current day is recorded in the output: if you 
use —rounds=2, it is likely run on the same day, so the output will be the same 
(don't bother though, last time I found such an issue it was in january because 
only the year was recorded ^^")

You should now use -K to keep the different version and run diffoscope to 
analyze the differences. Then we should be able to fix the non determinism.

>Could also sombody please share what kind of CI pipeline is there implemented 
>on applying the patch on the mainter's side?

The maentainer is responsible for testing the patch (at a minimum that it 
builds), and sometimes we forget to check it's reproducible. The only automated 
thing is to check the patch is signed.

>PS: Yes, I do have more questions regading how Guix works lately. I tried to 
>search the mailing list but haven't found answers to them

reply via email to

[Prev in Thread] Current Thread [Next in Thread]