summary refs log tree commit diff
path: root/gnu/packages/rust.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/rust.scm')
-rw-r--r--gnu/packages/rust.scm255
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