GNU bug report logs - #32227
[PATCH] gnu: rust: make rust 1.25.0 build reproducible

Previous Next

Package: guix-patches;

Reported by: Nikolai Merinov <nikolai.merinov <at> member.fsf.org>

Date: Fri, 20 Jul 2018 20:10:01 UTC

Severity: normal

Tags: patch, wontfix

Done: Jakub Kądziołka <kuba <at> kadziolka.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 32227 in the body.
You can then email your comments to 32227 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#32227; Package guix-patches. (Fri, 20 Jul 2018 20:10:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Nikolai Merinov <nikolai.merinov <at> member.fsf.org>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Fri, 20 Jul 2018 20:10:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Nikolai Merinov <nikolai.merinov <at> member.fsf.org>
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: rust: make rust 1.25.0 build reproducible
Date: Sat, 14 Jul 2018 01:15:11 +0500
* gnu/packages/rust.scm (rust-1.25): switch back to llvm <at> 3.9 still builds with
llvm <at> 6.0 is not reproducible. Remove all llvm <at> 6.0 related twicks.
(rust-1.26): switch to llvm <at> 6.0 still rust-1.26 can build reproducible
binaries with new llvm release. Enable llvm <at> 5.0 related twicks.
---
 gnu/packages/rust.scm | 39 ++++++++++++++++++---------------------
 1 file changed, 18 insertions(+), 21 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 28bffb44b..1095070eb 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -545,10 +545,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                                     "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf")))
     (package
       (inherit base-rust)
-      (inputs
-       ;; Use LLVM 6.0
-       (alist-replace "llvm" (list llvm)
-                      (package-inputs base-rust)))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -559,23 +555,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                    ;; This test wants to update the crate index.
                    (("fn no_index_update") "#[ignore]\nfn no_index_update"))
                  #t))
-             (add-after 'configure 'enable-codegen-tests
-               (lambda _
-                 (substitute* "config.toml"
-                   (("codegen-tests = false") ""))
-                 #t))
-             (replace 'patch-aarch64-test
-               (lambda _
-                 (substitute* "src/librustc_metadata/dynamic_lib.rs"
-                   ;; This test is known to fail on aarch64 and powerpc64le:
-                   ;; https://github.com/rust-lang/rust/issues/45410
-                   (("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
-                 ;; This test fails on aarch64 with llvm <at> 6.0:
-                 ;; https://github.com/rust-lang/rust/issues/49807
-                 ;; other possible solution:
-                 ;; https://github.com/rust-lang/rust/pull/47688
-                 (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs")
-                 #t))
              (delete 'ignore-glibc-2.27-incompatible-test))))))))
 
 (define-public rust-1.26
@@ -585,6 +564,10 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                                     #:patches '("rust-coresimd-doctest.patch"))))
     (package
       (inherit base-rust)
+      (inputs
+       ;; Use LLVM 6.0
+       (alist-replace "llvm" (list llvm)
+                      (package-inputs base-rust)))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -624,6 +607,20 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  (substitute* "src/tools/cargo/tests/testsuite/generate_lockfile.rs"
                    ;; This test wants to update the crate index.
                    (("fn no_index_update") "#[ignore]\nfn no_index_update"))
+                 #t))
+             (add-after 'patch-aarch64-test 'patch-aarch64-llvm6-test
+               (lambda _
+                 ;; This test fails on aarch64 with llvm <at> 6.0:
+                 ;; https://github.com/rust-lang/rust/issues/49807
+                 ;; other possible solution:
+                 ;; https://github.com/rust-lang/rust/pull/47688
+                 (delete-file "src/test/debuginfo/by-value-self-argument-in-trait-impl.rs")
+                 #t))
+             (add-after 'configure 'enable-codegen-tests
+               (lambda* _
+                 (substitute* "config.toml"
+                   ;; codegen test should pass with LLVM 6
+                   (("codegen-tests = false") ""))
                  #t)))))))))
 
 (define-public rust
-- 
2.17.1





Information forwarded to guix-patches <at> gnu.org:
bug#32227; Package guix-patches. (Fri, 20 Jul 2018 20:22:02 GMT) Full text and rfc822 format available.

Message #8 received at 32227 <at> debbugs.gnu.org (full text, mbox):

From: Nikolai Merinov <nikolai.merinov <at> member.fsf.org>
To: 32227 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: rust: make rust 1.25.0 build reproducible
Date: Sat, 21 Jul 2018 01:21:39 +0500
Hi,

I tried to configure how rust use llvm, but I did not succeed in
it. Looks like llvm <at> 6.0 usage was fixed fully only in rust 1.26.

I already checked once that 1.25 and 1.26 rust releases is reproducible
in my environment with llvm <at> 3.9 and llvm <at> 6.0 respectively. When I posted
this patch I restarted my builds with "--rounds=2".

Regards,
Nikolai




Information forwarded to guix-patches <at> gnu.org:
bug#32227; Package guix-patches. (Sun, 22 Jul 2018 09:56:02 GMT) Full text and rfc822 format available.

Message #11 received at 32227 <at> debbugs.gnu.org (full text, mbox):

From: Nikolai Merinov <nikolai.merinov <at> member.fsf.org>
To: 32227 <at> debbugs.gnu.org
Subject: Re: [PATCH] gnu: rust: make rust 1.25.0 build reproducible
Date: Sun, 22 Jul 2018 14:55:44 +0500
Hi, 

Please, do not merge. Change rejected. With this change 1.27.0 build
still not reproducible. I should try to figure out which llvm
compilation options make builds non-reproducible.

Regards,
Nikolai

Nikolai Merinov <nikolai.merinov <at> member.fsf.org> writes:

> Hi,
>
> I tried to configure how rust use llvm, but I did not succeed in
> it. Looks like llvm <at> 6.0 usage was fixed fully only in rust 1.26.
>
> I already checked once that 1.25 and 1.26 rust releases is reproducible
> in my environment with llvm <at> 3.9 and llvm <at> 6.0 respectively. When I posted
> this patch I restarted my builds with "--rounds=2".
>
> Regards,
> Nikolai




Information forwarded to guix-patches <at> gnu.org:
bug#32227; Package guix-patches. (Tue, 21 Aug 2018 21:20:02 GMT) Full text and rfc822 format available.

Message #14 received at 32227 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Nikolai Merinov <nikolai.merinov <at> member.fsf.org>
Cc: 32227 <at> debbugs.gnu.org
Subject: Re: [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
Date: Tue, 21 Aug 2018 23:19:34 +0200
Hello Nikolai,

Nikolai Merinov <nikolai.merinov <at> member.fsf.org> skribis:

> Please, do not merge. Change rejected. With this change 1.27.0 build
> still not reproducible. I should try to figure out which llvm
> compilation options make builds non-reproducible.

Does the problem still applies to 1.27.0 as currently available in
master?

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#32227; Package guix-patches. (Tue, 21 Aug 2018 21:20:03 GMT) Full text and rfc822 format available.

Message #17 received at 32227 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Nikolai Merinov <nikolai.merinov <at> member.fsf.org>
Cc: 32227 <at> debbugs.gnu.org
Subject: Re: [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
Date: Tue, 21 Aug 2018 23:19:42 +0200
Hello Nikolai,

Nikolai Merinov <nikolai.merinov <at> member.fsf.org> skribis:

> Please, do not merge. Change rejected. With this change 1.27.0 build
> still not reproducible. I should try to figure out which llvm
> compilation options make builds non-reproducible.

Does the problem still apply to 1.27.0 as currently available in master?

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#32227; Package guix-patches. (Sun, 23 Sep 2018 21:39:02 GMT) Full text and rfc822 format available.

Message #20 received at 32227 <at> debbugs.gnu.org (full text, mbox):

From: Nikolai Merinov <nikolai.merinov <at> member.fsf.org>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 32227 <at> debbugs.gnu.org
Subject: Re: [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
Date: Mon, 24 Sep 2018 02:38:22 +0500
[Message part 1 (text/plain, inline)]
Hello Ludo,

Sorry for long answer. I have no chance to continue ivestigation last
month, but I'll want to provide my old finding:

1. Rust 1.25 build cargo binary (but not rustc itself) in
non-reproducible manner when compiled with llvm-6.0 and llvm-6.1. In
both cases we got non-reproducible code for next functions:
"<env_logger::Logger as log::Log>::log", "git2::panic::check",
"curl::easy::handler::ssl_ctx_cb".
2. Rust 1.26 with llvm-6.0 build is reproducible regardless of which
rustc 1.25 (with llvm-6.0 or llvm-3.9) was used to bootstrap it.
3. Rust 1.27.0 and Rust 1.27.2 again build rustc itself in reproducible
manner, while "cargo" binary differ build to build. I observed
non-reproducible code in "git2::panic::check" function and in
".gcc_except_table" section of resulting binary.

In attachements you can find patch to move rust-1.25 to llvm-3.9, and
patch to update Rust 1.27 to 1.27.2. 
[0001-gnu-rust-make-rust-1.25.0-build-reproducible.patch (text/x-patch, attachment)]
[0002-Update-rust-1.27-to-1.27.2.patch (text/x-patch, attachment)]
[Message part 4 (text/plain, inline)]
Regards,
Nikolai

ludo <at> gnu.org (Ludovic Courtès) writes:

> Hello Nikolai,
>
> Nikolai Merinov <nikolai.merinov <at> member.fsf.org> skribis:
>
>> Please, do not merge. Change rejected. With this change 1.27.0 build
>> still not reproducible. I should try to figure out which llvm
>> compilation options make builds non-reproducible.
>
> Does the problem still apply to 1.27.0 as currently available in master?
>
> Thanks,
> Ludo’.

Reply sent to Jakub Kądziołka <kuba <at> kadziolka.net>:
You have taken responsibility. (Sun, 23 Feb 2020 14:27:01 GMT) Full text and rfc822 format available.

Notification sent to Nikolai Merinov <nikolai.merinov <at> member.fsf.org>:
bug acknowledged by developer. (Sun, 23 Feb 2020 14:27:01 GMT) Full text and rfc822 format available.

Message #25 received at 32227-done <at> debbugs.gnu.org (full text, mbox):

From: Jakub Kądziołka <kuba <at> kadziolka.net>
To: 32227-done <at> debbugs.gnu.org
Subject: closing
Date: Sun, 23 Feb 2020 15:27:17 +0100
[Message part 1 (text/plain, inline)]
These patches seem to have been made obsolete by commit
e027a494fd5e6025e645ce9f36cccca39a77d327 - closing.
[signature.asc (application/pgp-signature, inline)]

Added tag(s) wontfix. Request was from Jakub Kądziołka <kuba <at> kadziolka.net> to control <at> debbugs.gnu.org. (Sun, 23 Feb 2020 14:29:01 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 23 Mar 2020 11:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 4 years and 34 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.