[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 <help-guix@gnu.org> a écrit :
>Hi,
>
>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:
>
>guix:
>repository URL: https://git.savannah.gnu.org/git/guix.git
>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
>pkgs?
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.
>
>Thanks
>Petr
>
>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