diff options
Diffstat (limited to 'gnu/packages/rust.scm')
-rw-r--r-- | gnu/packages/rust.scm | 255 |
1 files changed, 142 insertions, 113 deletions
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 5f1f2be5a0..50d7a70ab3 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -55,7 +55,6 @@ #:use-module (ice-9 match) #:use-module (srfi srfi-26)) -(define %cargo-reference-project-file "/dev/null") (define %cargo-reference-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") @@ -69,63 +68,20 @@ ("mips64el-linux" "mips64el-unknown-linux-gnuabi64") (_ (nix-system->gnu-triplet system)))) - -(define* (rust-source-pre-1.32 version hash - #:key - (patches '()) - (patch-flags '("-p1"))) - (origin - (method url-fetch) - (uri (string-append "https://static.rust-lang.org/dist/" - "rustc-" version "-src.tar.gz")) - (sha256 (base32 hash)) - (modules '((guix build utils))) - (snippet '(begin (delete-file-recursively "src/llvm") #t)) - (patches (map search-patch patches)) - (patch-flags patch-flags))) +(define* (rust-uri version #:key (dist "static")) + (string-append "https://" dist ".rust-lang.org/dist/" + "rustc-" version "-src.tar.gz")) -(define* (rust-bootstrapped-package-pre-1.32 base-rust version checksum - #:key - (patches '()) - (patch-flags '("-p1"))) - "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST. -Specific to rust versions before 1.32." +(define* (rust-bootstrapped-package base-rust version checksum) + "Bootstrap rust VERSION with source checksum CHECKSUM using BASE-RUST." (package (inherit base-rust) (version version) (source - (rust-source-pre-1.32 version checksum #:patches patches #:patch-flags patch-flags)) - (native-inputs - (alist-replace "cargo-bootstrap" (list base-rust "cargo") - (alist-replace "rustc-bootstrap" (list base-rust) - (package-native-inputs base-rust)))))) - -(define* (rust-source version hash - #:key - (patches '()) - (patch-flags '("-p1"))) - (origin - (method url-fetch) - (uri (string-append "https://static.rust-lang.org/dist/" - "rustc-" version "-src.tar.gz")) - (sha256 (base32 hash)) - (modules '((guix build utils))) - (snippet '(begin (delete-file-recursively "src/llvm") - (delete-file-recursively "vendor/jemalloc-sys/jemalloc") - #t)) - (patches (map search-patch patches)) - (patch-flags patch-flags))) - -(define* (rust-bootstrapped-package base-rust version checksum - #:key - (patches '()) - (patch-flags '("-p1"))) - "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST." - (package - (inherit base-rust) - (version version) - (source - (rust-source version checksum #:patches patches #:patch-flags patch-flags)) + (origin + (inherit (package-source base-rust)) + (uri (rust-uri version)) + (sha256 (base32 checksum)))) (native-inputs (alist-replace "cargo-bootstrap" (list base-rust "cargo") (alist-replace "rustc-bootstrap" (list base-rust) @@ -155,8 +111,7 @@ Specific to rust versions before 1.32." `(("bison" ,bison) ("flex" ,flex) ;; Required for the libstd sources. - ("rustc" - ,(rust-source-pre-1.32 "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")))) + ("rustc" ,(package-source rust-1.19)))) (arguments `(#:test-target "local_tests" #:make-flags (list (string-append "LLVM_CONFIG=" @@ -229,8 +184,14 @@ safety and thread safety guarantees.") (package (name "rust") (version "1.19.0") - (source (rust-source-pre-1.32 version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm" - #:patches '("rust-1.19-mrustc.patch"))) + (source + (origin + (method url-fetch) + (uri (rust-uri "1.19.0")) + (sha256 (base32 "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")) + (modules '((guix build utils))) + (snippet '(begin (delete-file-recursively "src/llvm") #t)) + (patches (map search-patch '("rust-1.19-mrustc.patch"))))) (outputs '("out" "cargo")) (properties '((timeout . 72000) ;20 hours (max-silent-time . 18000))) ;5 hours (for armel) @@ -320,7 +281,7 @@ test = { path = \"../libtest\" } (display (string-append "patch-cargo-checksums: generate-checksums for " dir "\n")) - (generate-checksums dir ,%cargo-reference-project-file))) + (generate-checksums dir))) (find-files "src/vendor" ".cargo-checksum.json")) #t)) ;; This phase is overridden by newer versions. @@ -462,10 +423,18 @@ safety and thread safety guarantees.") (define-public rust-1.20 (let ((base-rust - (rust-bootstrapped-package-pre-1.32 rust-1.19 "1.20.0" + (rust-bootstrapped-package rust-1.19 "1.20.0" "0542y4rnzlsrricai130mqyxl8r6rd991frb4qsnwb27yigqg91a"))) (package (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (snippet '(begin + (delete-file-recursively "src/jemalloc") + (delete-file-recursively "src/llvm") + #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. @@ -595,6 +564,24 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (("prefix = \"[^\"]*\"") (string-append "prefix = \"" (assoc-ref outputs "cargo") "\""))) (invoke "./x.py" "install" "cargo"))) + (add-after 'install 'delete-install-logs + (lambda* (#:key outputs #:allow-other-keys) + (define (delete-manifest-file out-path file) + (delete-file (string-append out-path "/lib/rustlib/" file))) + + (let ((out (assoc-ref outputs "out")) + (cargo-out (assoc-ref outputs "cargo"))) + (for-each + (lambda (file) (delete-manifest-file out file)) + '("install.log" + "manifest-rust-docs" + "manifest-rust-std-x86_64-unknown-linux-gnu" + "manifest-rustc")) + (for-each + (lambda (file) (delete-manifest-file cargo-out file)) + '("install.log" + "manifest-cargo")) + #t))) (add-after 'install 'wrap-rustc (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) @@ -607,7 +594,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" #t)))))))))) (define-public rust-1.21 - (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.20 "1.21.0" + (let ((base-rust (rust-bootstrapped-package rust-1.20 "1.21.0" "1yj8lnxybjrybp00fqhxw8fpr641dh8wcn9mk44xjnsb4i1c21qp"))) (package (inherit base-rust) @@ -623,7 +610,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" #t))))))))) (define-public rust-1.22 - (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.21 "1.22.1" + (let ((base-rust (rust-bootstrapped-package rust-1.21 "1.22.1" "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))) (package (inherit base-rust) @@ -639,7 +626,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" #t))))))))) (define-public rust-1.23 - (let ((base-rust (rust-bootstrapped-package-pre-1.32 rust-1.22 "1.23.0" + (let ((base-rust (rust-bootstrapped-package rust-1.22 "1.23.0" "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l"))) (package (inherit base-rust) @@ -658,7 +645,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust-1.24 (let ((base-rust - (rust-bootstrapped-package-pre-1.32 rust-1.23 "1.24.1" + (rust-bootstrapped-package rust-1.23 "1.24.1" "1vv10x2h9kq7fxh2v01damdq8pvlp5acyh1kzcda9sfjx12kv99y"))) (package (inherit base-rust) @@ -680,11 +667,20 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" ;;; Keep using llvm 3.9.1 until builds become determenistic (define-public rust-1.25 (let ((base-rust - (rust-bootstrapped-package-pre-1.32 rust-1.24 "1.25.0" - "0baxjr99311lvwdq0s38bipbnj72pn6fgbk6lcq7j555xq53mxpf" - #:patches '("rust-1.25-accept-more-detailed-gdb-lines.patch")))) + (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) @@ -711,12 +707,16 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust-1.26 (let ((base-rust - (rust-bootstrapped-package-pre-1.32 rust-1.25 "1.26.2" - "0047ais0fvmqvngqkdsxgrzhb0kljg8wy85b01kbbjc88hqcz7pv" - #:patches '("rust-coresimd-doctest.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch")))) + (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) @@ -776,15 +776,17 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust-1.27 (let ((base-rust - (rust-bootstrapped-package-pre-1.32 rust-1.26 "1.27.2" - "0pg1s37bhx9zqbynxyydq5j6q7kij9vxkcv8maz0m25prm88r0cs" - #:patches - '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))) + (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) @@ -805,15 +807,17 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust-1.28 (let ((base-rust - (rust-bootstrapped-package-pre-1.32 rust-1.27 "1.28.0" - "11k4rn77bca2rikykkk9fmprrgjswd4x4kaq7fia08vgkir82nhx" - #:patches - '("rust-coresimd-doctest.patch" - "rust-bootstrap-stage0-test.patch" - "rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))) + (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) @@ -839,24 +843,35 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust-1.29 (let ((base-rust - (rust-bootstrapped-package-pre-1.32 rust-1.28 "1.29.2" - "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h" - #:patches - '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-reproducible-builds.patch")))) + (rust-bootstrapped-package rust-1.28 "1.29.2" + "1jb787080z754caa2w3w1amsygs4qlzj9rs1vy64firfmabfg22h"))) (package - (inherit base-rust)))) + (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-pre-1.32 rust-1.29 "1.30.1" - "0aavdc1lqv0cjzbqwl5n59yd0bqdlhn0zas61ljf38yrvc18k8rn" - #:patches - '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-1.30-gdb-llvm.patch" - "rust-reproducible-builds.patch")))) + (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)) + (patches (map search-patch '("rust-1.25-accept-more-detailed-gdb-lines.patch" + "rust-1.30-gdb-llvm.patch" + "rust-reproducible-builds.patch"))))) (inputs ;; Use LLVM 7.0 (alist-replace "llvm" (list llvm) @@ -896,14 +911,16 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust-1.31 (let ((base-rust - (rust-bootstrapped-package-pre-1.32 rust-1.30 "1.31.1" - "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli" - #:patches - '("rust-1.25-accept-more-detailed-gdb-lines.patch" - "rust-1.30-gdb-llvm.patch" - "rust-reproducible-builds.patch")))) + (rust-bootstrapped-package rust-1.30 "1.31.1" + "0sk84ff0cklybcp0jbbxcw7lk7mrm6kb6km5nzd6m64dy0igrlli"))) (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-1.30-gdb-llvm.patch" + "rust-reproducible-builds.patch"))))) (arguments (substitute-keyword-arguments (package-arguments base-rust) ((#:phases phases) @@ -940,13 +957,22 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust-1.32 (let ((base-rust (rust-bootstrapped-package rust-1.31 "1.32.0" - "0ji2l9xv53y27xy72qagggvq47gayr5lcv2jwvmfirx029vlqnac" - #:patches '("rust-reproducible-builds.patch") - ;; the vendor directory has moved to the root of - ;; the tarball, so we have to strip an extra prefix - #:patch-flags '("-p2")))) + "0ji2l9xv53y27xy72qagggvq47gayr5lcv2jwvmfirx029vlqnac"))) (package (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (snippet '(begin (delete-file-recursively "src/llvm") + (delete-file-recursively "src/llvm-emscripten") + (delete-file-recursively "src/tools/clang") + (delete-file-recursively "src/tools/lldb") + (delete-file-recursively "vendor/jemalloc-sys/jemalloc") + #t)) + (patches (map search-patch '("rust-reproducible-builds.patch"))) + ;; the vendor directory has moved to the root of + ;; the tarball, so we have to strip an extra prefix + (patch-flags '("-p2")))) (inputs ;; Downgrade to LLVM 6, all LTO tests appear to fail with LLVM 7.0.1 (alist-replace "llvm" (list llvm-6) @@ -970,7 +996,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (display (string-append "patch-cargo-checksums: generate-checksums for " dir "\n")) - (generate-checksums dir ,%cargo-reference-project-file))) + (generate-checksums dir))) (find-files "vendor" ".cargo-checksum.json")) #t)) (add-after 'enable-codegen-tests 'override-jemalloc @@ -993,10 +1019,14 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust-1.33 (let ((base-rust (rust-bootstrapped-package rust-1.32 "1.33.0" - "152x91mg7bz4ygligwjb05fgm1blwy2i70s2j03zc9jiwvbsh0as" - #:patches '()))) + "152x91mg7bz4ygligwjb05fgm1blwy2i70s2j03zc9jiwvbsh0as"))) (package (inherit base-rust) + (source + (origin + (inherit (package-source base-rust)) + (patches '()) + (patch-flags '("-p1")))) (inputs ;; Upgrade to jemalloc@5.1.0 (alist-replace "jemalloc" (list jemalloc) @@ -1017,9 +1047,8 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\" (define-public rust (let ((base-rust - (rust-bootstrapped-package rust-1.33 "1.34.0" - "0n8z1wngkxab1rvixqg6w8b727hzpnm9wp9h8iy3mpbrzp7mmj3s" - #:patches '()))) + (rust-bootstrapped-package rust-1.33 "1.34.1" + "19s09k7y5j6g3y4d2rk6kg9pvq6ml94c49w6b72dmq8p9lk8bixh"))) (package (inherit base-rust) (source |