* [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
[parent not found: <handler.32227.B.153211738124061.ack@debbugs.gnu.org>]
* [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).