From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:59786) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iSqJ4-0000rs-6w for guix-patches@gnu.org; Thu, 07 Nov 2019 17:31:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iSqIy-0000nS-PJ for guix-patches@gnu.org; Thu, 07 Nov 2019 17:31:08 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:35259) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iSqIy-0000mm-06 for guix-patches@gnu.org; Thu, 07 Nov 2019 17:31:04 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1iSqIx-00050F-TQ for guix-patches@gnu.org; Thu, 07 Nov 2019 17:31:03 -0500 Subject: [bug#38110] [PATCH 2/2] gnu: rust: Bootstrap rust@1.29.0 from mrustc. Resent-Message-ID: From: Danny Milosavljevic Date: Thu, 7 Nov 2019 23:30:00 +0100 Message-Id: <20191107223000.20242-2-dannym@scratchpost.org> In-Reply-To: <20191107223000.20242-1-dannym@scratchpost.org> References: <20191107222756.20064-1-dannym@scratchpost.org> <20191107223000.20242-1-dannym@scratchpost.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 38110@debbugs.gnu.org Cc: Danny Milosavljevic * gnu/packages/rust.scm (rust-1.19): Delete variable. (rust-1.20): Delete variable. (rust-1.21): Delete variable. (rust-1.22): Delete variable. (rust-1.23): Delete variable. (rust-1.24): Delete variable. (rust-1.25): Delete variable. (rust-1.26): Delete variable. (rust-1.27): Delete variable. (rust-1.28): Delete variable. (rust-1.29): Bootstrap from mrustc. (rust-1.30)[inputs]: Remove llvm 3. Add llvm 6. --- gnu/packages/rust.scm | 476 +++++++++--------------------------------- 1 file changed, 97 insertions(+), 379 deletions(-) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index a752f9ece4..0102a97a80 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -178,18 +178,19 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat))))) -(define rust-1.19 +(define rust-1.29 (package (name "rust") - (version "1.19.0") + (version "1.29.0") (source (origin (method url-fetch) - (uri (rust-uri "1.19.0")) - (sha256 (base32 "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")) + (uri (rust-uri "1.29.0")) + (sha256 (base32 "1sb15znckj8pc8q3g7cq03pijnida6cg64yqmgiayxkzskzk9sx4")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "src/llvm") #t)) - (patches (map search-patch '("rust-1.19-mrustc.patch"))))) + (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-reproducible-builds.patch"))))) (outputs '("out" "cargo")) (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) @@ -201,6 +202,7 @@ safety and thread safety guarantees.") (add-after 'unpack 'set-env (lambda* (#:key inputs #:allow-other-keys) ;; Disable test for cross compilation support. +;(write "X") (setenv "CFG_DISABLE_CROSS_TESTS" "1") (setenv "SHELL" (which "sh")) (setenv "CONFIG_SHELL" (which "sh")) @@ -208,24 +210,6 @@ safety and thread safety guarantees.") ;; guix llvm-3.9.1 package installs only shared libraries (setenv "LLVM_LINK_SHARED" "1") #t)) - (add-after 'unpack 'patch-cargo-tomls - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "src/librustc_errors/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -term = \"0.4.4\" -")) - (substitute* "src/librustc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -getopts = { path = \"../libgetopts\" } -")) - (substitute* "src/librustdoc/Cargo.toml" - (("[[]dependencies[]]") " -[dependencies] -test = { path = \"../libtest\" } -")) - #t)) (add-after 'unpack 'patch-tests (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) @@ -244,27 +228,29 @@ test = { path = \"../libtest\" } #[ignore] fn test_process_mask")) #t))) + (add-after 'patch-tests 'patch-cargo-index-update + (lambda* _ + (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-tests 'patch-aarch64-test (lambda* _ - (substitute* "src/librustc_back/dynamic_lib.rs" + (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")) - #t)) - (add-after 'patch-tests 'use-readelf-for-tests - (lambda* _ - ;; nm doesn't recognize the file format because of the - ;; nonstandard sections used by the Rust compiler, but readelf - ;; ignores them. - (substitute* "src/test/run-make/atomic-lock-free/Makefile" - (("\tnm ") - "\treadelf -c ")) + ;; 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 'patch-tests 'remove-unsupported-tests (lambda* _ ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. ;; - (delete-file-recursively "src/test/run-make/linker-output-non-utf8") + (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") #t)) (add-after 'patch-source-shebangs 'patch-cargo-checksums (lambda* _ @@ -289,14 +275,20 @@ test = { path = \"../libtest\" } (replace 'build (lambda* (#:key inputs outputs #:allow-other-keys) (let ((rustc-bootstrap (assoc-ref inputs "rustc-bootstrap"))) +;(invoke "ls" "src/vendor/getopts") +;(newline) (setenv "CFG_COMPILER_HOST_TRIPLE" ,(nix-system->gnu-triplet (%current-system))) (setenv "CFG_RELEASE" "") (setenv "CFG_RELEASE_CHANNEL" "stable") (setenv "CFG_LIBDIR_RELATIVE" "lib") - (setenv "CFG_VERSION" "1.19.0-stable-mrustc") + (setenv "CFG_VERSION" "1.29.0-stable-mrustc") ; bad: (setenv "CFG_PREFIX" "mrustc") ; FIXME output path. - (mkdir-p "output") + ;; Crate::load_extern_crate ignores the search path, so make + ;; the situation easier for it. + (copy-recursively (string-append rustc-bootstrap "/lib/mrust") + "output") + ;(mkdir-p "output") (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/rustc" "--vendor-dir" "src/vendor" "--output-dir" "output/rustc-build" @@ -311,7 +303,7 @@ test = { path = \"../libtest\" } (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") "src/tools/cargo" "--vendor-dir" "src/vendor" "--output-dir" "output/cargo-build" - "-L" "output/" + ;"-L" "output/" "-L" (string-append rustc-bootstrap "/lib/mrust") "-j" "1") ;; Now use the newly-built rustc to build the libraries. @@ -419,10 +411,10 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) -(define-public rust-1.20 +(define-public rust-1.30 (let ((base-rust - (rust-bootstrapped-package rust-1.19 "1.20.0" - "0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a"))) + (rust-bootstrapped-package rust-1.29 "1.30.1" + "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) (package (inherit base-rust) (source @@ -431,20 +423,45 @@ safety and thread safety guarantees.") (snippet '(begin (delete-file-recursively "src/jemalloc") (delete-file-recursively "src/llvm") + (delete-file-recursively "src/llvm-emscripten") + (delete-file-recursively "src/tools/clang") + (delete-file-recursively "src/tools/lldb") #t)) (patches '()))) (outputs '("out" "doc" "cargo")) - ;; Since rust-1.19 is local, it's quite probable that Hydra - ;; will build rust-1.19 only as a dependency of rust-1.20. + ;; Since rust-2.19 is local, it's quite probable that Hydra + ;; will build rust-1.29 only as a dependency of rust-1.20. ;; But then Hydra will use the wrong properties, the ones here, - ;; for rust-1.19. Therefore, we copied the properties of - ;; rust-1.19 here. + ;; for rust-1.29. Therefore, we copied the properties of + ;; rust-1.29 here. (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) + (inputs + ;; Use LLVM 6.0 + (alist-replace "llvm" (list llvm-6) + (package-inputs base-rust))) (arguments - (substitute-keyword-arguments (package-arguments rust-1.19) + (substitute-keyword-arguments (package-arguments rust-1.29) ((#:phases phases) `(modify-phases ,phases + (add-after 'unpack 'remove-flaky-test + (lambda _ + ;; See . + (when (file-exists? "src/test/run-make/issue-26092") + (delete-file-recursively "src/test/run-make/issue-26092")) + #t)) + (add-after 'configure 'enable-codegen-tests + ;; Codegen tests should pass with llvm 6, so enable them. + (lambda* _ + (substitute* "config.toml" + (("codegen-tests = false") "")) + #t)) + ;; The test has been moved elsewhere. + (add-after 'patch-tests 'disable-amd64-avx-test + (lambda _ + (substitute* "src/test/ui/issues/issue-44056.rs" + (("only-x86_64") "ignore-test")) + #t)) (add-after 'patch-tests 'patch-cargo-tests (lambda _ (substitute* "src/tools/cargo/tests/build.rs" @@ -466,12 +483,29 @@ safety and thread safety guarantees.") (("fn finds_author_git") "#[ignore]\nfn finds_author_git") (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) #t)) - (add-after 'patch-cargo-tests 'ignore-glibc-2.27-incompatible-test - ;; https://github.com/rust-lang/rust/issues/47863 - (lambda _ - (substitute* "src/test/run-pass/out-of-stack.rs" - (("// ignore-android") "// ignore-test\n// ignore-android")) - #t)) + (add-after 'patch-cargo-tests 'patch-cargo-env-shebang + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils"))) + (substitute* "src/tools/cargo/tests/testsuite/fix.rs" + ;; Cargo has a test which explicitly sets a + ;; RUSTC_WRAPPER environment variable which points + ;; to /usr/bin/env. Since it's not a shebang, it + ;; needs to be manually patched + (("\"/usr/bin/env\"") + (string-append "\"" coreutils "/bin/env\""))) + #t))) + (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests + (lambda* _ + (substitute* "src/tools/cargo/tests/testsuite/package.rs" + ;; These tests largely check that cargo outputs warning/error + ;; messages as expected. It seems that cargo outputs an + ;; absolute path to something in the store instead of the + ;; expected relative path (e.g. `[..]`) so we'll ignore + ;; these for now + (("fn include") "#[ignore]\nfn include") + (("fn exclude") "#[ignore]\nfn exclude")) + #t)) + (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -523,16 +557,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" "/tmp/cc") (setenv "PATH" (string-append "/tmp:" (getenv "PATH"))) #t)) - (add-after 'provide-cc 'configure-archiver - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "src/build_helper/lib.rs" - ;; Make sure "ar" is always used as the archiver. - (("\"musl\"") "\"\"") - ;; Then substitute "ar" by our name. - (("\"ar\"") (string-append "\"" - (assoc-ref inputs "binutils") - "/bin/ar\""))) - #t)) (delete 'patch-cargo-tomls) (add-before 'build 'reset-timestamps-after-changes (lambda* _ @@ -549,11 +573,14 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (invoke "./x.py" "build" "src/tools/cargo"))) (replace 'check (lambda* _ - ;; Disable parallel execution to prevent EAGAIN errors when - ;; running tests. - (invoke "./x.py" "-j1" "test" "-vv") - (invoke "./x.py" "-j1" "test" "src/tools/cargo") - #t)) + ;; Enable parallel execution. + (let ((parallel-job-spec + (string-append "-j" (number->string + (min 4 + (parallel-job-count)))))) + (invoke "./x.py" parallel-job-spec "test" "-vv") + (invoke "./x.py" parallel-job-spec "test" + "src/tools/cargo")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (invoke "./x.py" "install") @@ -591,315 +618,6 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib")))) #t)))))))))) -(define-public rust-1.21 - (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0" - "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'remove-ar - (lambda* (#:key inputs #:allow-other-keys) - ;; Remove because toml complains about "unknown field". - (substitute* "config.toml" - (("^ar =.*") "\n")) - #t))))))))) - -(define-public rust-1.22 - (let ((base-rust (rust-bootstrapped-package rust-1.21 "1.22.1" - "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'remove-flaky-test - (lambda _ - ;; See . - (when (file-exists? "src/test/run-make/issue-26092") - (delete-file-recursively "src/test/run-make/issue-26092")) - #t))))))))) - -(define-public rust-1.23 - (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0" - "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'configure-archiver) - (delete 'remove-ar) - (add-after 'unpack 'dont-build-native - (lambda _ - ;; XXX: Revisit this when we use gcc 6. - (substitute* "src/binaryen/CMakeLists.txt" - (("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") "")) - #t))))))))) - -(define-public rust-1.24 - (let ((base-rust - (rust-bootstrapped-package rust-1.23 "1.24.1" - "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) - (package - (inherit base-rust) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (delete 'use-readelf-for-tests) - (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")) - #t))))))))) - -;;; Rust 1.25 release support work with llvm 6--but build with llvm 6 is -;;; not determenistic due to . -;;; 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" - "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - #t)) - (patches (map search-patch - '("rust-1.25-accept-more-detailed-gdb-lines.patch"))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'patch-cargo-tests 'patch-cargo-index-update - (lambda _ - (substitute* "src/tools/cargo/tests/generate-lockfile.rs" - ;; This test wants to update the crate index. - (("fn no_index_update") "#[ignore]\nfn no_index_update")) - #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 - (let ((base-rust - (rust-bootstrapped-package rust-1.25 "1.26.2" - "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch - '("rust-coresimd-doctest.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch"))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - ;; binaryen was replaced with LLD project from LLVM - (delete 'dont-build-native) - (replace 'check - (lambda* _ - ;; Enable parallel execution. - (let ((parallel-job-spec - (string-append "-j" (number->string - (min 4 - (parallel-job-count)))))) - (invoke "./x.py" parallel-job-spec "test" "-vv") - (invoke "./x.py" parallel-job-spec "test" - "src/tools/cargo")))) - (replace 'remove-unsupported-tests - (lambda* _ - ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH. - ;; - (delete-file-recursively "src/test/run-make-fulldeps/linker-output-non-utf8") - #t)) - (replace 'patch-cargo-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/build.rs" - (("/usr/bin/env") (which "env")) - ;; Guix llvm is compiled without asmjs-unknown-emscripten. - (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs")) - (substitute* "src/tools/cargo/tests/testsuite/death.rs" - ;; This is stuck when built in container. - (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone")) - ;; Prints test output in the wrong order when built on - ;; i686-linux. - (substitute* "src/tools/cargo/tests/testsuite/test.rs" - (("fn cargo_test_env") "#[ignore]\nfn cargo_test_env")) - - ;; Avoid dependency on "git". - (substitute* "src/tools/cargo/tests/testsuite/new.rs" - (("fn author_prefers_cargo") "#[ignore]\nfn author_prefers_cargo") - (("fn finds_author_git") "#[ignore]\nfn finds_author_git") - (("fn finds_local_author_git") "#[ignore]\nfn finds_local_author_git")) - #t)) - (add-after 'patch-cargo-tests 'disable-cargo-test-for-nightly-channel - (lambda* _ - ;; This test failed to work on "nightly" channel builds - ;; https://github.com/rust-lang/cargo/issues/5648 - (substitute* "src/tools/cargo/tests/testsuite/resolve.rs" - (("fn test_resolving_minimum_version_with_transitive_deps") - "#[ignore]\nfn test_resolving_minimum_version_with_transitive_deps")) - #t)) - (replace 'patch-cargo-index-update - (lambda* _ - (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))))))))) - -(define-public rust-1.27 - (let ((base-rust - (rust-bootstrapped-package rust-1.26 "1.27.2" - "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'install 'mkdir-prefix-paths - (lambda* (#:key outputs #:allow-other-keys) - ;; As result of https://github.com/rust-lang/rust/issues/36989 - ;; `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))))))))) - -(define-public rust-1.28 - (let ((base-rust - (rust-bootstrapped-package rust-1.27 "1.28.0" - "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch"))))) - (inputs - ;; Use LLVM 6.0 - (alist-replace "llvm" (list llvm-6) - (package-inputs base-rust))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'configure 'enable-codegen-tests - ;; Codegen tests should pass with llvm 6, so enable them. - (lambda* _ - (substitute* "config.toml" - (("codegen-tests = false") "")) - #t)) - (add-after 'patch-tests 'disable-amd64-avx-test - ;; That test would fail on x86_64 machines without avx. - (lambda* _ - (substitute* "src/test/run-pass/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t)) - ;; The thinlto test should pass with llvm 6. - (delete 'disable-thinlto-test)))))))) - -(define-public rust-1.29 - (let ((base-rust - (rust-bootstrapped-package rust-1.28 "1.29.2" - "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))))))) - -(define-public rust-1.30 - (let ((base-rust - (rust-bootstrapped-package rust-1.29 "1.30.1" - "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn"))) - (package - (inherit base-rust) - (source - (origin - (inherit (package-source base-rust)) - (snippet '(begin - (delete-file-recursively "src/jemalloc") - (delete-file-recursively "src/llvm") - (delete-file-recursively "src/llvm-emscripten") - (delete-file-recursively "src/tools/clang") - (delete-file-recursively "src/tools/lldb") - #t)))) - (arguments - (substitute-keyword-arguments (package-arguments base-rust) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'patch-cargo-tests 'patch-cargo-env-shebang - (lambda* (#:key inputs #:allow-other-keys) - (let ((coreutils (assoc-ref inputs "coreutils"))) - (substitute* "src/tools/cargo/tests/testsuite/fix.rs" - ;; Cargo has a test which explicitly sets a - ;; RUSTC_WRAPPER environment variable which points - ;; to /usr/bin/env. Since it's not a shebang, it - ;; needs to be manually patched - (("\"/usr/bin/env\"") - (string-append "\"" coreutils "/bin/env\""))) - #t))) - (add-after 'patch-cargo-env-shebang 'ignore-cargo-package-tests - (lambda* _ - (substitute* "src/tools/cargo/tests/testsuite/package.rs" - ;; These tests largely check that cargo outputs warning/error - ;; messages as expected. It seems that cargo outputs an - ;; absolute path to something in the store instead of the - ;; expected relative path (e.g. `[..]`) so we'll ignore - ;; these for now - (("fn include") "#[ignore]\nfn include") - (("fn exclude") "#[ignore]\nfn exclude")) - #t)) - ;; The test has been moved elsewhere. - (replace 'disable-amd64-avx-test - (lambda _ - (substitute* "src/test/ui/run-pass/issues/issue-44056.rs" - (("only-x86_64") "ignore-test")) - #t))))))))) - (define-public rust-1.31 (let ((base-rust (rust-bootstrapped-package rust-1.30 "1.31.1"