* [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
@ 2018-07-13 20:15 Nikolai Merinov
[not found] ` <handler.32227.B.153211738124061.ack@debbugs.gnu.org>
2020-02-23 14:27 ` bug#32227: closing Jakub Kądziołka
0 siblings, 2 replies; 7+ messages in thread
From: Nikolai Merinov @ 2018-07-13 20:15 UTC (permalink / raw)
To: 32227
* gnu/packages/rust.scm (rust-1.25): switch back to llvm@3.9 still builds with
llvm@6.0 is not reproducible. Remove all llvm@6.0 related twicks.
(rust-1.26): switch to llvm@6.0 still rust-1.26 can build reproducible
binaries with new llvm release. Enable llvm@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@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@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
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
[not found] ` <handler.32227.B.153211738124061.ack@debbugs.gnu.org>
@ 2018-07-20 20:21 ` Nikolai Merinov
2018-07-22 9:55 ` Nikolai Merinov
0 siblings, 1 reply; 7+ messages in thread
From: Nikolai Merinov @ 2018-07-20 20:21 UTC (permalink / raw)
To: 32227
Hi,
I tried to configure how rust use llvm, but I did not succeed in
it. Looks like llvm@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@3.9 and llvm@6.0 respectively. When I posted
this patch I restarted my builds with "--rounds=2".
Regards,
Nikolai
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
2018-07-20 20:21 ` Nikolai Merinov
@ 2018-07-22 9:55 ` Nikolai Merinov
2018-08-21 21:19 ` Ludovic Courtès
2018-08-21 21:19 ` Ludovic Courtès
0 siblings, 2 replies; 7+ messages in thread
From: Nikolai Merinov @ 2018-07-22 9:55 UTC (permalink / raw)
To: 32227
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@member.fsf.org> writes:
> Hi,
>
> I tried to configure how rust use llvm, but I did not succeed in
> it. Looks like llvm@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@3.9 and llvm@6.0 respectively. When I posted
> this patch I restarted my builds with "--rounds=2".
>
> Regards,
> Nikolai
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
2018-07-22 9:55 ` Nikolai Merinov
@ 2018-08-21 21:19 ` Ludovic Courtès
2018-08-21 21:19 ` Ludovic Courtès
1 sibling, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2018-08-21 21:19 UTC (permalink / raw)
To: Nikolai Merinov; +Cc: 32227
Hello Nikolai,
Nikolai Merinov <nikolai.merinov@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’.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
2018-07-22 9:55 ` Nikolai Merinov
2018-08-21 21:19 ` Ludovic Courtès
@ 2018-08-21 21:19 ` Ludovic Courtès
2018-09-23 21:38 ` Nikolai Merinov
1 sibling, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2018-08-21 21:19 UTC (permalink / raw)
To: Nikolai Merinov; +Cc: 32227
Hello Nikolai,
Nikolai Merinov <nikolai.merinov@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’.
^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible
2018-08-21 21:19 ` Ludovic Courtès
@ 2018-09-23 21:38 ` Nikolai Merinov
0 siblings, 0 replies; 7+ messages in thread
From: Nikolai Merinov @ 2018-09-23 21:38 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 32227
[-- Attachment #1: Type: text/plain, Size: 905 bytes --]
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.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: enable llvm-6.0 in rust 1.26 instead of 1.25 --]
[-- Type: text/x-patch, Size: 3968 bytes --]
From: Nikolai Merinov <nikolai.merinov@member.fsf.org>
To: guix-patches@gnu.org
Subject: [PATCH] gnu: rust: make rust 1.25.0 build reproducible
* gnu/packages/rust.scm (rust-1.25): switch back to llvm@3.9 still builds with
llvm@6.0 is not reproducible. Remove all llvm@6.0 related twicks.
(rust-1.26): switch to llvm@6.0 still rust-1.26 can build reproducible
binaries with new llvm release. Enable llvm@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@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@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
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: Update rust 1.27 to 1.27.2 --]
[-- Type: text/x-patch, Size: 755 bytes --]
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 0695f8c7d..4bc8d1d88 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -631,8 +631,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
(define-public rust
(let ((base-rust
- (rust-bootstrapped-package rust-1.26 "1.27.0"
- "089d7rhw55zpvnw71dj8vil6qrylvl4xjr4m8bywjj83d4zq1f9c"
+ (rust-bootstrapped-package rust-1.26 "1.27.2"
+ "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"
#:patches
'("rust-coresimd-doctest.patch"
"rust-bootstrap-stage0-test.patch"))))
[-- Attachment #4: Type: text/plain, Size: 449 bytes --]
Regards,
Nikolai
ludo@gnu.org (Ludovic Courtès) writes:
> Hello Nikolai,
>
> Nikolai Merinov <nikolai.merinov@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’.
^ permalink raw reply related [flat|nested] 7+ messages in thread
* bug#32227: closing
2018-07-13 20:15 [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible Nikolai Merinov
[not found] ` <handler.32227.B.153211738124061.ack@debbugs.gnu.org>
@ 2020-02-23 14:27 ` Jakub Kądziołka
1 sibling, 0 replies; 7+ messages in thread
From: Jakub Kądziołka @ 2020-02-23 14:27 UTC (permalink / raw)
To: 32227-done
[-- Attachment #1: Type: text/plain, Size: 108 bytes --]
These patches seem to have been made obsolete by commit
e027a494fd5e6025e645ce9f36cccca39a77d327 - closing.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-02-23 14:27 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-13 20:15 [bug#32227] [PATCH] gnu: rust: make rust 1.25.0 build reproducible Nikolai Merinov
[not found] ` <handler.32227.B.153211738124061.ack@debbugs.gnu.org>
2018-07-20 20:21 ` Nikolai Merinov
2018-07-22 9:55 ` Nikolai Merinov
2018-08-21 21:19 ` Ludovic Courtès
2018-08-21 21:19 ` Ludovic Courtès
2018-09-23 21:38 ` Nikolai Merinov
2020-02-23 14:27 ` bug#32227: closing Jakub Kądziołka
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).