mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
gnu: rust: Work around rust 1.25...1.27 reproducibility issues.
* gnu/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch: New file. * gnu/local.mk (dist_patch_DATA): Add new patch file. * gnu/packages/rust.scm (rust-1.19): Use system libssh2 library. during cargo build. Note: libgit2 still bundled, because cargo tests assume specific libgit2 minor release. (rust-1.23): Inherit native-inputs from previous package. (rust-1.25): Switch back to llvm 3.9.1 as workaround for https://github.com/rust-lang/rust/issues/50556 issue. (rust-1.27): Apply changes from https://github.com/rust-lang-nursery/mdBook/pull/692 to make generation of "searchindex.js" files reproducible. Disable cargo test that required llvm 6.
This commit is contained in:
parent
1fdcee026b
commit
e027a494fd
3 changed files with 44 additions and 23 deletions
|
@ -1131,6 +1131,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \
|
||||
%D%/packages/patches/rust-bootstrap-stage0-test.patch \
|
||||
%D%/packages/patches/rust-coresimd-doctest.patch \
|
||||
%D%/packages/patches/rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch \
|
||||
%D%/packages/patches/rxvt-unicode-escape-sequences.patch \
|
||||
%D%/packages/patches/scheme48-tests.patch \
|
||||
%D%/packages/patches/scotch-test-threading.patch \
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
From b9ca108fcae2b738ca3f0c88c84ae5dc5a6f843f Mon Sep 17 00:00:00 2001
|
||||
From: Tim Ryan <id@timryan.org>
|
||||
Date: Mon, 14 May 2018 06:22:21 -0400
|
||||
Subject: [PATCH] Support reproducible builds by forcing window.search to use
|
||||
stable key ordering. (#692)
|
||||
See <https://github.com/rust-lang-nursery/mdBook/pull/692>
|
||||
---
|
||||
src/vendor/mdbook/src/renderer/html_handlebars/search.rs | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
|
||||
index d49772f8b..1ee66a511 100644
|
||||
--- a/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
|
||||
+++ b/src/vendor/mdbook/src/renderer/html_handlebars/search.rs
|
||||
@@ -205,6 +205,10 @@ fn write_to_js(index: Index, search_config: &Search) -> Result<String> {
|
||||
searchoptions,
|
||||
index,
|
||||
};
|
||||
+
|
||||
+ // By converting to serde_json::Value as an intermediary, we use a
|
||||
+ // BTreeMap internally and can force a stable ordering of map keys.
|
||||
+ let json_contents = serde_json::to_value(&json_contents)?;
|
||||
let json_contents = serde_json::to_string(&json_contents)?;
|
||||
|
||||
Ok(format!("window.search = {};", json_contents))
|
|
@ -480,7 +480,8 @@ (define rust-1.19
|
|||
`(("jemalloc" ,jemalloc-4.5.0)
|
||||
("llvm" ,llvm-3.9.1)
|
||||
("openssl" ,openssl)
|
||||
("libcurl" ,curl))) ; For "cargo"
|
||||
("libssh2" ,libssh2) ; For "cargo"
|
||||
("libcurl" ,curl))) ; For "cargo"
|
||||
|
||||
;; rustc invokes gcc, so we need to set its search paths accordingly.
|
||||
;; Note: duplicate its value here to cope with circular dependencies among
|
||||
|
@ -649,18 +650,11 @@ (define-public rust-1.23
|
|||
(name "rust")
|
||||
(version "1.23.0")
|
||||
(source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))
|
||||
;; Use rust-bootstrap@1.22 package to build rust 1.23
|
||||
(native-inputs
|
||||
`(("bison" ,bison) ; For the tests
|
||||
("cmake" ,cmake)
|
||||
("flex" ,flex) ; For the tests
|
||||
("gdb" ,gdb) ; For the tests
|
||||
("git" ,git)
|
||||
("procps" ,procps) ; For the tests
|
||||
("python-2" ,python-2)
|
||||
("rustc-bootstrap" ,rust-bootstrap)
|
||||
("cargo-bootstrap" ,rust-bootstrap "cargo")
|
||||
("pkg-config" ,pkg-config) ; For "cargo"
|
||||
("which" ,which)))
|
||||
(alist-replace "cargo-bootstrap" (list rust-bootstrap "cargo")
|
||||
(alist-replace "rustc-bootstrap" (list rust-bootstrap)
|
||||
(package-native-inputs rust-1.20))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments rust-1.20)
|
||||
((#:phases phases)
|
||||
|
@ -692,6 +686,9 @@ (define-public rust-1.24
|
|||
(("fn test_loading_cosine") "#[ignore]\nfn test_loading_cosine"))
|
||||
#t)))))))))
|
||||
|
||||
;;; Rust 1.25 release support work with llvm 6--but build with llvm 6 is
|
||||
;;; not determenistic due to <https://github.com/rust-lang/rust/issues/50556>.
|
||||
;;; Keep using llvm 3.9.1 until builds become determenistic
|
||||
(define-public rust-1.25
|
||||
(let ((base-rust
|
||||
(rust-bootstrapped-package rust-1.24 "1.25.0"
|
||||
|
@ -699,10 +696,6 @@ (define-public rust-1.25
|
|||
#:patches '("rust-1.25-accept-more-detailed-gdb-lines.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)
|
||||
|
@ -713,14 +706,9 @@ (define-public rust-1.25
|
|||
;; 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))
|
||||
;; FIXME: Re-enable this test if it's indeed supposed to work.
|
||||
;; See <https://github.com/rust-lang/rust/issues/54178>.
|
||||
(add-after 'enable-codegen-tests 'disable-nil-enum-test
|
||||
(add-after 'configure 'disable-nil-enum-test
|
||||
(lambda _
|
||||
(substitute* "src/test/debuginfo/nil-enum.rs"
|
||||
(("ignore-lldb") "ignore-gdb"))
|
||||
|
@ -795,7 +783,8 @@ (define-public rust
|
|||
#:patches
|
||||
'("rust-coresimd-doctest.patch"
|
||||
"rust-bootstrap-stage0-test.patch"
|
||||
"rust-1.25-accept-more-detailed-gdb-lines.patch"))))
|
||||
"rust-1.25-accept-more-detailed-gdb-lines.patch"
|
||||
"rust-mdbook-support-reproducible-builds-by-forcing-window.search.patch"))))
|
||||
(package
|
||||
(inherit base-rust)
|
||||
(arguments
|
||||
|
@ -808,4 +797,10 @@ (define-public rust
|
|||
;; `prefix' directory should exist before `install' call
|
||||
(mkdir-p (assoc-ref outputs "out"))
|
||||
(mkdir-p (assoc-ref outputs "cargo"))
|
||||
#t))
|
||||
(add-after 'patch-cargo-tests 'disable-thinlto-test
|
||||
(lambda* _
|
||||
;; thinlto required llvm 6.0 for work
|
||||
(substitute* "src/tools/cargo/tests/testsuite/path.rs"
|
||||
(("fn thin_lto_works") "#[ignore]\nfn thin_lto_works"))
|
||||
#t)))))))))
|
||||
|
|
Loading…
Reference in a new issue