gnu: Add cl-ana.statistical-learning.
[jackhill/guix/guix.git] / gnu / packages / rust.scm
index b3c6d53..cec565b 100644 (file)
@@ -4,8 +4,8 @@
 ;;; Copyright © 2016 ng0 <ng0@n0.is>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org>
-;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
 ;;;
@@ -196,7 +196,7 @@ safety and thread safety guarantees.")
     (properties '((timeout . 72000)               ;20 hours
                   (max-silent-time . 18000)))     ;5 hours (for armel)
     (arguments
-     `(#:imported-modules ,%cargo-utils-modules ;for `generate-checksums'
+     `(#:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums'
        #:modules ((guix build utils) (ice-9 match) (guix build gnu-build-system))
        #:phases
        (modify-phases %standard-phases
@@ -270,19 +270,11 @@ test = { path = \"../libtest\" }
              #t))
          (add-after 'patch-source-shebangs 'patch-cargo-checksums
            (lambda* _
+             (use-modules (guix build cargo-utils))
              (substitute* "src/Cargo.lock"
                (("(\"checksum .* = )\".*\"" all name)
                 (string-append name "\"" ,%cargo-reference-hash "\"")))
-             (for-each
-              (lambda (filename)
-                (use-modules (guix build cargo-utils))
-                (delete-file filename)
-                (let* ((dir (dirname filename)))
-                  (display (string-append
-                            "patch-cargo-checksums: generate-checksums for "
-                            dir "\n"))
-                  (generate-checksums dir)))
-              (find-files "src/vendor" ".cargo-checksum.json"))
+             (generate-all-checksums "src/vendor")
              #t))
          ;; This phase is overridden by newer versions.
          (replace 'configure
@@ -787,6 +779,11 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                                        "rust-bootstrap-stage0-test.patch"
                                        "rust-1.25-accept-more-detailed-gdb-lines.patch"
                                        "rust-reproducible-builds.patch")))))
+      (native-inputs
+       ;; FIXME: Rust 1.27 and some later versions require GDB 8.2 specifically.
+       ;; See <https://bugs.gnu.org/37810>.
+       (alist-replace "gdb" (list gdb-8.2)
+                      (package-native-inputs base-rust)))
       (arguments
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
@@ -972,19 +969,11 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
              ;; root of the rust tarball
              (replace 'patch-cargo-checksums
                (lambda* _
+                 (use-modules (guix build cargo-utils))
                  (substitute* "Cargo.lock"
                    (("(\"checksum .* = )\".*\"" all name)
                     (string-append name "\"" ,%cargo-reference-hash "\"")))
-                 (for-each
-                  (lambda (filename)
-                    (use-modules (guix build cargo-utils))
-                    (delete-file filename)
-                    (let* ((dir (dirname filename)))
-                      (display (string-append
-                                "patch-cargo-checksums: generate-checksums for "
-                                dir "\n"))
-                      (generate-checksums dir)))
-                  (find-files "vendor" ".cargo-checksum.json"))
+                 (generate-all-checksums "vendor")
                  #t))
              (add-after 'enable-codegen-tests 'override-jemalloc
                (lambda* (#:key inputs #:allow-other-keys)
@@ -1047,7 +1036,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                       (delete-file-recursively "vendor/jemalloc-sys/jemalloc")
                       #t)))))))
 
-(define-public rust
+(define-public rust-1.35
   (let ((base-rust
          (rust-bootstrapped-package rust-1.34 "1.35.0"
            "0bbizy6b7002v1rdhrxrf5gijclbyizdhkglhp81ib3bf5x66kas")))
@@ -1069,3 +1058,32 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                  (substitute* "src/tools/tidy/src/main.rs"
                    (("bins::check") "//bins::check"))
                  #t)))))))))
+
+(define-public rust-1.36
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.35 "1.36.0"
+           "06xv2p6zq03lidr0yaf029ii8wnjjqa894nkmrm6s0rx47by9i04")))
+    (package
+      (inherit base-rust)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'patch-process-docs-rev-cmd))))))))
+
+(define-public rust
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.36 "1.37.0"
+           "1hrqprybhkhs6d9b5pjskfnc5z9v2l2gync7nb39qjb5s0h703hj")))
+    (package
+      (inherit base-rust)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (add-before 'configure 'configure-cargo-home
+               (lambda _
+                 (let ((cargo-home (string-append (getcwd) "/.cargo")))
+                   (mkdir-p cargo-home)
+                   (setenv "CARGO_HOME" cargo-home)
+                   #t))))))))))