unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#29555] [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
@ 2017-12-03 19:01 Nikolai Merinov
  2017-12-04  7:02 ` ng0
  2017-12-04 14:33 ` Jelle Licht
  0 siblings, 2 replies; 8+ messages in thread
From: Nikolai Merinov @ 2017-12-03 19:01 UTC (permalink / raw)
  To: 29555

[-- Attachment #1: Type: text/plain, Size: 75 bytes --]

Update for a rustc and cargo packages. This update will also fix a
build.


[-- Attachment #2: [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0 --]
[-- Type: text/x-patch, Size: 69567 bytes --]

From 936ebcccac4cff0cc598c4ec9adeb28ce5d5c149 Mon Sep 17 00:00:00 2001
From: Nikolay Merinov <nikolay.merinov@member.fsf.org>
Date: Sun, 3 Dec 2017 19:55:24 +0500
Subject: [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
To: guix-patches@gnu.org

* gnu/packages/rust.scm (%rust-bootstrap-binaries-version): update version
(%rust-bootstrap-binaries): use x86_64 rust bootstrap package for x86_64 build
(%cargo-reference-project-file): Use specific file as "project" file when
patching rust vendored sources
(%cargo-reference-hash): sha256 sum for %cargo-reference-project-file
(rustc-bootstrap): use bootstrap package with host architecture
(cargo-bootstrap): use bootstrap package with host architecture
(rustc): Add new test dependency, fix build issues, use "./x.py" script for
build instead of "./configure"
(cargo): Update dependencies, patch shebangs for vendored sources
---
 gnu/packages/rust.scm | 1184 +++++++++++++++++++++++++++++++++----------------
 1 file changed, 804 insertions(+), 380 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 583ea37c8..591648bec 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
 ;;; Copyright © 2016 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017 Nikolai Merinov <nikolai.merinov@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gdb)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -37,17 +39,19 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages)
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
+  #:use-module (guix base16)      ;for generated "cargo" native-inputs
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-26))
 
 ;; Should be one less than the current released version.
-(define %rust-bootstrap-binaries-version "1.15.0")
+(define %rust-bootstrap-binaries-version "1.21.0")
 
 (define %rust-bootstrap-binaries
   (origin
@@ -55,10 +59,18 @@
     (uri (string-append
           "https://static.rust-lang.org/dist/"
           "rust-" %rust-bootstrap-binaries-version
-          "-i686-unknown-linux-gnu.tar.gz"))
+          "-" %host-type ".tar.gz"))
     (sha256
      (base32
-      "0wmkfx8pxmkkw021mrq9s3xhra8f0daqdl6j56pxyn4w39i0rzrw"))))
+      (match %host-type
+	("i686-unknown-linux-gnu"
+         "1vnvqwz30hvyjcfr1f602lg43v2vlqjr3yhb5vr8xnrcc07yvjmp")
+	("x86_64-unknown-linux-gnu"
+         "1s0866qcy0645bqhsbs3pvk2hi52ps8jzs7x096w0as033h707ml"))))))
+
+(define %cargo-reference-project-file "/dev/null")
+(define %cargo-reference-hash
+  "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
 
 (define (increment-rust-version rust-version major patch)
   (match (string-split rust-version #\.)
@@ -92,7 +104,6 @@
     (arguments
      `(#:tests? #f
        #:strip-binaries? #f
-       #:system "i686-linux"
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -103,8 +114,7 @@
                     (gcc:lib (assoc-ref inputs "gcc:lib"))
                     (libc (assoc-ref inputs "libc"))
                     (zlib (assoc-ref inputs "zlib"))
-                    (ld-so (string-append libc
-                                          ,(glibc-dynamic-linker "i686-linux")))
+                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
                     (rpath (string-append out "/lib:" zlib "/lib:"
                                           libc "/lib:" gcc:lib "/lib"))
                     (rustc (string-append out "/bin/rustc"))
@@ -112,7 +122,7 @@
                (system* "bash" "install.sh"
                         (string-append "--prefix=" out)
                         (string-append "--components=rustc,"
-                                       "rust-std-i686-unknown-linux-gnu"))
+                                       "rust-std-" %host-type))
                (for-each (lambda (file)
                            (system* "patchelf" "--set-rpath" rpath file))
                          (cons* rustc rustdoc (find-files out "\\.so$")))
@@ -129,7 +139,7 @@ which can in turn be used to build the final Rust compiler.")
 (define cargo-bootstrap
   (package
     (name "cargo-bootstrap")
-    (version (cargo-version %rust-bootstrap-binaries-version))
+    (version (cargo-version %rust-bootstrap-binaries-version 1))
     (source %rust-bootstrap-binaries)
     (build-system gnu-build-system)
     (native-inputs
@@ -139,7 +149,6 @@ which can in turn be used to build the final Rust compiler.")
     (arguments
      `(#:tests? #f
        #:strip-binaries? #f
-       #:system "i686-linux"
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -149,8 +158,7 @@ which can in turn be used to build the final Rust compiler.")
              (let* ((out (assoc-ref outputs "out"))
                     (gcc:lib (assoc-ref inputs "gcc:lib"))
                     (libc (assoc-ref inputs "libc"))
-                    (ld-so (string-append libc
-                                          ,(glibc-dynamic-linker "i686-linux")))
+                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
                     (rpath (string-append out "/lib:" libc "/lib:"
                                           gcc:lib "/lib"))
                     (cargo (string-append out "/bin/cargo")))
@@ -196,11 +204,11 @@ manager, which is required to build itself.")
     (description "Meta package for a rust environment. Provides pre-compiled
 rustc-bootstrap and cargo-bootstrap packages.")
     (license license:asl2.0)))
-
+\f
 (define-public rustc
   (package
     (name "rustc")
-    (version (rustc-version %rust-bootstrap-binaries-version))
+    (version (rustc-version %rust-bootstrap-binaries-version 1))
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -208,17 +216,18 @@ rustc-bootstrap and cargo-bootstrap packages.")
                     "rustc-" version "-src.tar.gz"))
               (sha256
                (base32
-                "1d78jq7mc34n265by68amr9r4nzbiqrilfbwh7gx56ydn4gb6rpr"))
-            (modules '((guix build utils)))
-            (snippet
-             `(begin
-                (delete-file-recursively "src/llvm")
-                #t))))
+                "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))
+              (modules '((guix build utils)))
+              (snippet
+               `(begin
+                  (delete-file-recursively "src/llvm")
+                  #t))))
     (build-system gnu-build-system)
     (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)
@@ -228,89 +237,125 @@ rustc-bootstrap and cargo-bootstrap packages.")
      `(("jemalloc" ,jemalloc)
        ("llvm" ,llvm-3.9.1)))
     (arguments
-     `(#:phases
+     `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
+       #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-configure
-           (lambda _
-             (substitute* "configure"
-               (("/usr/bin/env") (which "env")) ; Detect target CPU correctly.
-               (("probe_need CFG_CURL curl") "") ; Avoid curl build dependency.
-               ;; Newer LLVM has a NVPTX (NVIDIA) backend which the Rust
-               ;; Makefiles don't know about, causing a linker failure
-               ;; if we don't intervene.
-               ;; Therefore, we add NVPTX here.
-               ;; See <https://github.com/rust-lang/rust/issues/40698>.
-               ;; For the next release, we will have to use rustbuild.
-               ;; Right now, rustbuild doesn't work yet.
-               (("-DLLVM_TARGETS_TO_BUILD='")
-                "-DLLVM_TARGETS_TO_BUILD='NVPTX;")) ; Make LLVM >= 3.8.1 work.
-             (substitute* "src/tools/compiletest/src/util.rs"
-               (("(\"amd64\", \"x86_64\"),") "(\"amd64\", \"x86_64\"),
-(\"nvptx\", \"nvptx\"),")) ; Make LLVM >= 3.8.1 work.
-             (substitute* "mk/main.mk"
-               (("LLVM_OPTIONAL_COMPONENTS=")
-                "LLVM_OPTIONAL_COMPONENTS=nvptx ")) ; Make LLVM >= 3.8.1 work.
-             #t))
          (add-after 'unpack 'set-env
            (lambda _
              (setenv "SHELL" (which "sh"))
              (setenv "CONFIG_SHELL" (which "sh"))
+             ;; guix llvm-3.9.1 package install only shared libraries
+             (setenv "LLVM_LINK_SHARED" "1")
              #t))
          (add-after 'unpack 'patch-tests
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((bash (assoc-ref inputs "bash")))
-               (substitute* "src/tools/tidy/src/main.rs"
-                 (("^.*cargo.*::check.*$") ""))
+               (substitute* "src/build_helper/lib.rs"
+                 ;; In same folder as gcc there is only "gcc-ar" utility
+                 (("file\\.push_str\\(\"ar\"\\);") "file.push_str(\"gcc-ar\");"))
                (substitute* "src/libstd/process.rs"
                  ;; The newline is intentional.
                  ;; There's a line length "tidy" check in Rust which would
                  ;; fail otherwise.
-                 (("\"/bin/sh\"") (string-append "
-\"" bash "/bin/sh\"")))
-               ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>.
+                 (("\"/bin/sh\"") (string-append "\n\"" bash "/bin/sh\"")))
+               (substitute* "src/libstd/net/tcp.rs"
+                 ;; There is no network in build environment
+                 (("fn connect_timeout_unroutable")
+                  "#[ignore]\nfn connect_timeout_unroutable"))
+               ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>
                (substitute* "src/libstd/sys/unix/process/process_common.rs"
-                 (("fn test_process_mask") "#[cfg_attr(target_os = \"linux\", ignore)]
-fn test_process_mask"))
+                 (("fn test_process_mask") "#[ignore]\nfn test_process_mask"))
                ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
-               ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>.
+               ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
                (delete-file-recursively "src/test/run-make/linker-output-non-utf8")
+               (substitute* "src/libstd/build.rs"
+                 ;; After update to jemalloc 5.0 library "libjemalloc_pic.a"
+                 ;; required to link against libstdc++
+                 ;; First broken Rust build: https://hydra.gnu.org/build/2248057
+                 (("println!\\(\"cargo:rustc-link-lib=pthread\"\\);")
+                  (string-append "println!(\"cargo:rustc-link-lib=pthread\");\n"
+                                 "println!(\"cargo:rustc-link-lib=stdc++\");")))
+               (substitute* "src/build_helper/lib.rs"
+                 ;; Bug in Rust code.
+                 ;; Current implementation assume that if dst not exist then it's mtime
+                 ;; is 0, but in same time "src" have 0 mtime in guix build!
+                 (("let threshold = mtime\\(dst\\);")
+                  "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
                #t)))
+         (add-after 'patch-source-shebangs 'patch-cargo-checksums
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/Cargo.lock"
+               (("(\"checksum .* = )\".*\"" all name)
+                (string-append name "\"" ,%cargo-reference-hash "\"")))
+             (for-each
+              (lambda (filename)
+                (use-modules (guix build cargo-build-system))
+                (delete-file filename)
+                (let* ((dir (dirname filename)))
+                  (display (string-append
+                            "patch-cargo-checksums: generate-checksums for "
+                            dir "\n"))
+                  (generate-checksums dir ,%cargo-reference-project-file)))
+              (find-files "src/vendor" ".cargo-checksum.json"))))
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (gcc (assoc-ref inputs "gcc"))
+                    (gdb (assoc-ref inputs "gdb"))
                     (binutils (assoc-ref inputs "binutils"))
                     (python (assoc-ref inputs "python-2"))
                     (rustc (assoc-ref inputs "rustc-bootstrap"))
+                    (cargo (assoc-ref inputs "cargo-bootstrap"))
                     (llvm (assoc-ref inputs "llvm"))
-                    (jemalloc (assoc-ref inputs "jemalloc"))
-                    (flags (list
-                            (string-append "--prefix=" out)
-                            (string-append "--datadir=" out "/share")
-                            (string-append "--infodir=" out "/share/info")
-                            (string-append "--default-linker=" gcc "/bin/gcc")
-                            (string-append "--default-ar=" binutils "/bin/ar")
-                            (string-append "--python=" python "/bin/python2")
-                            (string-append "--local-rust-root=" rustc)
-                            (string-append "--llvm-root=" llvm)
-                            (string-append "--jemalloc-root=" jemalloc "/lib")
-                            "--release-channel=stable"
-                            "--enable-rpath"
-                            "--enable-local-rust"
-                            "--disable-rustbuild" ; rustbuild doesn't work yet.
-                            "--disable-manage-submodules")))
-               ;; Rust uses a custom configure script (no autoconf).
-               (zero? (apply system* "./configure" flags)))))
-         (add-after 'install 'wrap-rustc
+                    (jemalloc (assoc-ref inputs "jemalloc")))
+               (call-with-output-file "config.toml"
+                 (lambda (port)
+                   (display (string-append "
+[llvm]
+[build]
+cargo = \"" cargo "/bin/cargo" "\"
+rustc = \"" rustc "/bin/rustc" "\"
+python = \"" python "/bin/python2" "\"
+gdb = \"" gdb "/bin/gdb" "\"
+vendor = true
+submodules = false
+[install]
+prefix = \"" out "\"
+[rust]
+default-linker = \"" gcc "/bin/gcc" "\"
+default-ar = \"" binutils "/bin/ar" "\"
+channel = \"stable\"
+rpath = true
+# There is 2 failed codegen tests:
+# codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
+# This tests required patched LLVM
+codegen-tests = false
+[target." %host-type "]
+llvm-config = \"" llvm "/bin/llvm-config" "\"
+cc = \"" gcc "/bin/gcc" "\"
+cxx = \"" gcc "/bin/g++" "\"
+jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
+[dist]
+") port))))))
+         (replace 'build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (zero? (system* "./x.py" "build"))))
+         (replace 'check
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (libc (assoc-ref inputs "libc"))
-                   (ld-wrapper (assoc-ref inputs "ld-wrapper")))
+             (zero? (system* "./x.py" "test"))))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (zero? (system* "./x.py" "install"))))
+           (add-after 'install 'wrap-rustc
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out"))
+                     (libc (assoc-ref inputs "libc"))
+                     (ld-wrapper (assoc-ref inputs "ld-wrapper")))
                ;; Let gcc find ld and libc startup files.
-               (wrap-program (string-append out "/bin/rustc")
-                 `("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
-                 `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))
-               #t))))))
+                 (wrap-program (string-append out "/bin/rustc")
+                   `("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
+                   `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))
+                 #t))))))
     ;; rustc invokes gcc, so we need to set its search paths accordingly.
     (native-search-paths (package-native-search-paths gcc))
     (synopsis "Compiler for the Rust progamming language")
@@ -325,7 +370,7 @@ safety and thread safety guarantees.")
 (define-public cargo
   (package
     (name "cargo")
-    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version)))
+    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version) 0))
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rust-lang/cargo/archive/"
@@ -333,7 +378,7 @@ safety and thread safety guarantees.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1y0zy8gk1ly0wh57y78fisk7cdd92qk0x7z664f6l7lzl2krqs7w"))))
+                "0kr7rml7v2bm7zl8jcb3056h63zpyy9m08s212i8vfwxf6lf5fzl"))))
     (build-system cargo-build-system)
     (propagated-inputs
      `(("cmake" ,cmake)
@@ -346,506 +391,870 @@ safety and thread safety guarantees.")
        ("python-2" ,python-2)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("rust-openssl"
+     `(("git" ,git) ; required for tests
+       ;; Next dependencies generated with next command:
+       ;; cat Cargo.lock | awk '
+       ;;   /^"checksum/
+       ;;   { oname=name=$2; vers=$3; hash=$6;
+       ;;     if (ns[name] != 1) { ns[name]=1; } else { name = name "-" vers; }
+       ;;     print "       (\"rust-" name "\"";
+       ;;     print "        ,(origin";
+       ;;     print "           (method url-fetch)";
+       ;;     print "           (uri (crate-uri \"" oname "\" \"" vers "\"))";
+       ;;     print "           (sha256";
+       ;;     print "            (base16-string->bytevector";
+       ;;     print "             " hash "))))"
+       ;;   }'
+       ("rust-advapi32-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl" "0.9.6"))
+           (uri (crate-uri "advapi32-sys" "0.2.0"))
            (sha256
-            (base32
-             "0g28g692gby6izp9qmnwnyxyhf9b0870yhd500p18j9l69lxl00c"))))
-       ("rust-strsim"
+            (base16-string->bytevector
+             "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"))))
+       ("rust-aho-corasick"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "strsim" "0.5.1"))
+           (uri (crate-uri "aho-corasick" "0.5.3"))
            (sha256
-            (base32
-             "0bj4fsm1l2yqbfpspyvjf9m3m50pskapcddzm0ji9c74jbgnkh2h"))))
-       ("rust-libc"
+            (base16-string->bytevector
+             "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"))))
+       ("rust-aho-corasick-0.6.3"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libc" "0.2.18"))
+           (uri (crate-uri "aho-corasick" "0.6.3"))
            (sha256
-            (base32
-             "0w5cghr0wx3hi2sclk8r9iyzlbxsakil87ada40q2ykyhky24655"))))
+            (base16-string->bytevector
+             "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699"))))
+       ("rust-atty"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "atty" "0.2.3"))
+           (sha256
+            (base16-string->bytevector
+             "21e50800ec991574876040fff8ee46b136a53e985286fbe6a3bdfe6421b78860"))))
+       ("rust-backtrace"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "backtrace" "0.3.3"))
+           (sha256
+            (base16-string->bytevector
+             "99f2ce94e22b8e664d95c57fff45b98a966c2252b60691d0b7aeeccd88d70983"))))
+       ("rust-backtrace-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "backtrace-sys" "0.1.14"))
+           (sha256
+            (base16-string->bytevector
+             "c63ea141ef8fdb10409d0f5daf30ac51f84ef43bff66f16627773d2a292cd189"))))
        ("rust-bitflags"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "bitflags" "0.7.0"))
            (sha256
-            (base32
-             "0v8hh6wdkpk9my8z8442g4hqrqf05h0qj53dsay6mv18lqvqklda"))))
-       ("rust-unicode-normalization"
+            (base16-string->bytevector
+             "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"))))
+       ("rust-bitflags-0.9.1"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "unicode-normalization" "0.1.2"))
+           (uri (crate-uri "bitflags" "0.9.1"))
            (sha256
-            (base32
-             "0whi4xxqcjfsz6ywyrfd5lhgk1a44c86qwgvfqcmzidshcpklr16"))))
-       ("rust-rand"
+            (base16-string->bytevector
+             "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"))))
+       ("rust-bufstream"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "rand" "0.3.14"))
+           (uri (crate-uri "bufstream" "0.1.3"))
            (sha256
-            (base32
-             "1984zvj8572ig28fz6idc4r96fx39h4lzmr07yf7kb7gdn6di497"))))
-       ("rust-gcc"
+            (base16-string->bytevector
+             "f2f382711e76b9de6c744cc00d0497baba02fb00a787f088c879f01d09468e32"))))
+       ("rust-cc"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "gcc" "0.3.39"))
+           (uri (crate-uri "cc" "1.0.0"))
            (sha256
-            (base32
-             "1q0idjvmhp6shkb9hqabh51rgfr8dqpi1xfmyzq7q8vgzybll7kp"))))
-       ("rust-tempdir"
+            (base16-string->bytevector
+             "7db2f146208d7e0fbee761b09cd65a7f51ccc38705d4e7262dad4d73b12a76b1"))))
+       ("rust-cfg-if"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "tempdir" "0.3.5"))
+           (uri (crate-uri "cfg-if" "0.1.2"))
            (sha256
-            (base32
-             "1mij45kgzflkja0h8q9avrik76h5a0b60m9hfd6k9yqxbiplm5w7"))))
-       ("rust-memchr"
+            (base16-string->bytevector
+             "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"))))
+       ("rust-cmake"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "memchr" "0.1.11"))
+           (uri (crate-uri "cmake" "0.1.26"))
            (sha256
-            (base32
-             "084d85hjfa3xf5kwdms2mhbkh78m1gl2254cp5swcxj3a7xjkdnq"))))
-       ("rust-rustc-serialize"
+            (base16-string->bytevector
+             "357c07e7a1fc95732793c1edb5901e1a1f305cfcf63a90eb12dbd22bdb6b789d"))))
+       ("rust-commoncrypto"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "rustc-serialize" "0.3.21"))
+           (uri (crate-uri "commoncrypto" "0.2.0"))
            (sha256
-            (base32
-             "064qmyr2508qf78dwcpiv25rfjp9h9vd0wrj4mmwgppjg4fgrydz"))))
-       ("rust-cmake"
+            (base16-string->bytevector
+             "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007"))))
+       ("rust-commoncrypto-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "cmake" "0.1.19"))
+           (uri (crate-uri "commoncrypto-sys" "0.2.0"))
            (sha256
-            (base32
-             "0am8c8ns1h6b1a5x9z2r1m3rszvya5nccl2pzszzjv5aiiaydgcf"))))
-       ("rust-matches"
+            (base16-string->bytevector
+             "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2"))))
+       ("rust-conv"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "matches" "0.1.4"))
+           (uri (crate-uri "conv" "0.3.3"))
            (sha256
-            (base32
-             "1c8190j84hbicy8jwscw5icfam12j6lcxi02lvmadq9260p65mzg"))))
-       ("rust-winapi"
+            (base16-string->bytevector
+             "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"))))
+       ("rust-core-foundation"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "winapi" "0.2.8"))
+           (uri (crate-uri "core-foundation" "0.4.4"))
            (sha256
-            (base32
-             "0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n"))))
-       ("rust-pkg-config"
+            (base16-string->bytevector
+             "5909502e547762013619f4c4e01cc7393c20fe2d52d7fa471c1210adb2320dc7"))))
+       ("rust-core-foundation-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "pkg-config" "0.3.8"))
+           (uri (crate-uri "core-foundation-sys" "0.4.4"))
            (sha256
-            (base32
-             "1ypj4nj2z9z27qg06v3g40jyhw685i3l2wi098d21bvyri781vlc"))))
-       ("rust-libssh2-sys"
+            (base16-string->bytevector
+             "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387"))))
+       ("rust-crossbeam"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libssh2-sys" "0.2.5"))
+           (uri (crate-uri "crossbeam" "0.2.10"))
            (sha256
-            (base32
-             "0d2r36hrh9vc1821r0v4kywv30svpf37d31calwql69fbij3bqci"))))
-       ("rust-libz-sys"
+            (base16-string->bytevector
+             "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"))))
+       ("rust-crossbeam-0.3.0"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "crossbeam" "0.3.0"))
+           (sha256
+            (base16-string->bytevector
+             "8837ab96533202c5b610ed44bc7f4183e7957c1c8f56e8cc78bb098593c8ba0a"))))
+       ("rust-crypto-hash"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "crypto-hash" "0.3.0"))
+           (sha256
+            (base16-string->bytevector
+             "34903878eec1694faf53cae8473a088df333181de421d4d3d48061d6559fe602"))))
+       ("rust-curl"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libz-sys" "1.0.13"))
+           (uri (crate-uri "curl" "0.4.8"))
            (sha256
-            (base32
-             "034pgvxzgsv37iafgs0lmvd1ifm0bg0zm1xcsn9x71nn8lm93vp5"))))
+            (base16-string->bytevector
+             "7034c534a1d7d22f7971d6088aa9d281d219ef724026c3428092500f41ae9c2c"))))
        ("rust-curl-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "curl-sys" "0.3.6"))
+           (uri (crate-uri "curl-sys" "0.3.15"))
            (sha256
-            (base32
-             "0fi8kjz3f8m8vfazycs3ddm0h6j3x78hw78gwbvybx71129192i1"))))
-       ("rust-error-chain"
+            (base16-string->bytevector
+             "4bee31aa3a079d5f3ff9579ea4dcfb1b1a17a40886f5f467436d383e78134b55"))))
+       ("rust-custom_derive"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "error-chain" "0.7.2"))
+           (uri (crate-uri "custom_derive" "0.1.7"))
            (sha256
-            (base32
-             "03qjh6l2a9fkiyg0428p7q3dcpi47cbmrqf9zmlymkg43v3v731i"))))
-       ("rust-metadeps"
+            (base16-string->bytevector
+             "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"))))
+       ("rust-dbghelp-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "metadeps" "1.1.1"))
+           (uri (crate-uri "dbghelp-sys" "0.2.0"))
            (sha256
-            (base32
-             "0l818461bslb7nrs7r1amkqv45n53fcp5sabyqipwx0xxbkzz7w2"))))
-       ("rust-openssl-sys"
+            (base16-string->bytevector
+             "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"))))
+       ("rust-docopt"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl-sys" "0.9.6"))
+           (uri (crate-uri "docopt" "0.8.1"))
            (sha256
-            (base32
-             "1hzpyf9z8xg1yn5r9g17bl5j20nifd6s2zp10xh90v7m0sd2yj5i"))))
-       ("rust-fs2"
+            (base16-string->bytevector
+             "3b5b93718f8b3e5544fcc914c43de828ca6c6ace23e0332c6080a2977b49787a"))))
+       ("rust-dtoa"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "fs2" "0.3.0"))
+           (uri (crate-uri "dtoa" "0.4.2"))
            (sha256
-            (base32
-             "0lg57mgcm1r0m8jm4nqpcrl6lmxg8lj854k2h0r7qp46pphh2034"))))
-       ("rust-log"
+            (base16-string->bytevector
+             "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"))))
+       ("rust-env_logger"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "log" "0.3.6"))
+           (uri (crate-uri "env_logger" "0.4.3"))
            (sha256
-            (base32
-             "0m40hgs3cg57dd5kk1mabfk6gk8z6l1cihar8akx4kmzz1xlk0xb"))))
+            (base16-string->bytevector
+             "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b"))))
+       ("rust-error-chain"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "error-chain" "0.11.0"))
+           (sha256
+            (base16-string->bytevector
+             "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"))))
        ("rust-filetime"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "filetime" "0.1.10"))
+           (uri (crate-uri "filetime" "0.1.12"))
            (sha256
-            (base32
-             "08p9scgv30i1141cnp5xi4pqlnkfci455nrpca55df1r867anqsk"))))
-       ("rust-tar"
+            (base16-string->bytevector
+             "6ab199bf38537c6f38792669e081e0bb278b9b7405bba2642e4e5d15bf732c0e"))))
+       ("rust-flate2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "flate2" "0.2.20"))
+           (sha256
+            (base16-string->bytevector
+             "e6234dd4468ae5d1e2dbb06fe2b058696fdc50a339c68a393aefbf00bc81e423"))))
+       ("rust-fnv"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "fnv" "1.0.5"))
+           (sha256
+            (base16-string->bytevector
+             "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344"))))
+       ("rust-foreign-types"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "foreign-types" "0.2.0"))
+           (sha256
+            (base16-string->bytevector
+             "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"))))
+       ("rust-fs2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "fs2" "0.4.2"))
+           (sha256
+            (base16-string->bytevector
+             "9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866"))))
+       ("rust-git2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "git2" "0.6.8"))
+           (sha256
+            (base16-string->bytevector
+             "0c1c0203d653f4140241da0c1375a404f0a397249ec818cd2076c6280c50f6fa"))))
+       ("rust-git2-curl"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "tar" "0.4.9"))
+           (uri (crate-uri "git2-curl" "0.7.0"))
            (sha256
-            (base32
-             "1vi3nl8s3jjf5l20ni47gmh1p4bdjfh7q50fbg7izzqrf7i4i40c"))))
+            (base16-string->bytevector
+             "68676bc784bf0bef83278898929bf64a251e87c0340723d0b93fa096c9c5bf8e"))))
        ("rust-glob"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "glob" "0.2.11"))
            (sha256
-            (base32
-             "1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb"))))
-       ("rust-cfg-if"
+            (base16-string->bytevector
+             "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"))))
+       ("rust-globset"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "cfg-if" "0.1.0"))
+           (uri (crate-uri "globset" "0.2.0"))
            (sha256
-            (base32
-             "137qikjcal4h75frzcn6mknygqk8vy5bva7w851aydb5gc6pc7ny"))))
-       ("rust-winapi-build"
+            (base16-string->bytevector
+             "feeb1b6840809ef5efcf7a4a990bc4e1b7ee3df8cf9e2379a75aeb2ba42ac9c3"))))
+       ("rust-hamcrest"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "winapi-build" "0.1.1"))
+           (uri (crate-uri "hamcrest" "0.1.1"))
            (sha256
-            (base32
-             "1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d"))))
-       ("rust-advapi32-sys"
+            (base16-string->bytevector
+             "bf088f042a467089e9baa4972f57f9247e42a0cc549ba264c7a04fbb8ecb89d4"))))
+       ("rust-hex"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "advapi32-sys" "0.2.0"))
+           (uri (crate-uri "hex" "0.2.0"))
            (sha256
-            (base32
-             "16largvlrd1800vvdchml0ngnszjlnpqm01rcz5hm7di1h48hrg0"))))
-       ("rust-gdi32-sys"
+            (base16-string->bytevector
+             "d6a22814455d41612f41161581c2883c0c6a1c41852729b17d5ed88f01e153aa"))))
+       ("rust-home"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "gdi32-sys" "0.2.0"))
+           (uri (crate-uri "home" "0.3.0"))
            (sha256
-            (base32
-             "0605d4ngjsspghwjv4jicajich1gnl0aik9f880ajjzjixd524h9"))))
-       ("rust-ws2_32-sys"
+            (base16-string->bytevector
+             "9f25ae61099d8f3fee8b483df0bd4ecccf4b2731897aad40d50eca1b641fe6db"))))
+       ("rust-idna"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "ws2_32-sys" "0.2.1"))
+           (uri (crate-uri "idna" "0.1.4"))
            (sha256
-            (base32
-             "0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m"))))
-       ("rust-user32-sys"
+            (base16-string->bytevector
+             "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d"))))
+       ("rust-ignore"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "user32-sys" "0.2.0"))
+           (uri (crate-uri "ignore" "0.2.2"))
            (sha256
-            (base32
-             "0ivxc7hmsxax9crdhxdd1nqwik4s9lhb2x59lc8b88bv20fp3x2f"))))
-       ("rust-unicode-bidi"
+            (base16-string->bytevector
+             "b3fcaf2365eb14b28ec7603c98c06cc531f19de9eb283d89a3dff8417c8c99f5"))))
+       ("rust-itoa"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "itoa" "0.3.4"))
+           (sha256
+            (base16-string->bytevector
+             "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"))))
+       ("rust-jobserver"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "jobserver" "0.1.6"))
+           (sha256
+            (base16-string->bytevector
+             "443ae8bc0af6c106e6e8b77e04684faecc1a5ce94e058f4c2b0a037b0ea1b133"))))
+       ("rust-kernel32-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "kernel32-sys" "0.2.2"))
+           (sha256
+            (base16-string->bytevector
+             "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"))))
+       ("rust-lazy_static"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "lazy_static" "0.2.9"))
+           (sha256
+            (base16-string->bytevector
+             "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5"))))
+       ("rust-libc"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libc" "0.2.31"))
+           (sha256
+            (base16-string->bytevector
+             "d1419b2939a0bc44b77feb34661583c7546b532b192feab36249ab584b86856c"))))
+       ("rust-libgit2-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libgit2-sys" "0.6.16"))
+           (sha256
+            (base16-string->bytevector
+             "6f74b4959cef96898f5123148724fc7dee043b9a6b99f219d948851bfbe53cb2"))))
+       ("rust-libssh2-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libssh2-sys" "0.2.6"))
+           (sha256
+            (base16-string->bytevector
+             "0db4ec23611747ef772db1c4d650f8bd762f07b461727ec998f953c614024b75"))))
+       ("rust-libz-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libz-sys" "1.0.17"))
+           (sha256
+            (base16-string->bytevector
+             "44ebbc760fd2d2f4d93de09a0e13d97e057612052e871da9985cedcb451e6bd5"))))
+       ("rust-log"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "log" "0.3.8"))
+           (sha256
+            (base16-string->bytevector
+             "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"))))
+       ("rust-magenta"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "unicode-bidi" "0.2.3"))
+           (uri (crate-uri "magenta" "0.1.1"))
            (sha256
-            (base32
-             "0gqbyf6slkgzr14nf6v8dw8a19l5snh6bpms8bpfvzpxdawwxxy1"))))
+            (base16-string->bytevector
+             "4bf0336886480e671965f794bc9b6fce88503563013d1bfb7a502c81fe3ac527"))))
+       ("rust-magenta-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "magenta-sys" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "40d014c7011ac470ae28e2f76a02bfea4a8480f73e701353b49ad7a8d75f4699"))))
+       ("rust-matches"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "matches" "0.1.6"))
+           (sha256
+            (base16-string->bytevector
+             "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"))))
+       ("rust-memchr"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "memchr" "0.1.11"))
+           (sha256
+            (base16-string->bytevector
+             "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"))))
+       ("rust-memchr-1.0.1"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "memchr" "1.0.1"))
+           (sha256
+            (base16-string->bytevector
+             "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"))))
+       ("rust-miniz-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "miniz-sys" "0.1.10"))
+           (sha256
+            (base16-string->bytevector
+             "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4"))))
+       ("rust-miow"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "miow" "0.2.1"))
+           (sha256
+            (base16-string->bytevector
+             "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"))))
        ("rust-net2"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "net2" "0.2.26"))
+           (uri (crate-uri "net2" "0.2.31"))
            (sha256
-            (base32
-             "1qp3q6xynb481rsp3ig1nmqb6qlxfba3shfrmqij88cppsv9rpsy"))))
-       ("rust-utf8-ranges"
+            (base16-string->bytevector
+             "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09"))))
+       ("rust-num"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "utf8-ranges" "0.1.3"))
+           (uri (crate-uri "num" "0.1.40"))
            (sha256
-            (base32
-             "03xf604b2v51ag3jgzw92l97xnb10kw9zv948bhc7ja1ik017jm1"))))
-       ("rust-crossbeam"
+            (base16-string->bytevector
+             "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525"))))
+       ("rust-num-bigint"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "crossbeam" "0.2.10"))
+           (uri (crate-uri "num-bigint" "0.1.40"))
            (sha256
-            (base32
-             "15wga0kvk3iqf3l077957j931brf1pl3p74xibd698jccqas4phc"))))
-       ("rust-toml"
+            (base16-string->bytevector
+             "8fd0f8dbb4c0960998958a796281d88c16fbe68d87b1baa6f31e2979e81fd0bd"))))
+       ("rust-num-complex"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "toml" "0.2.1"))
+           (uri (crate-uri "num-complex" "0.1.40"))
            (sha256
-            (base32
-             "1d1cz43bxrx4fd6j2p6myckf81f72bp47akg36y3flxjkhj60svk"))))
-       ("rust-aho-corasick"
+            (base16-string->bytevector
+             "503e668405c5492d67cf662a81e05be40efe2e6bcf10f7794a07bd9865e704e6"))))
+       ("rust-num-integer"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "aho-corasick" "0.5.3"))
+           (uri (crate-uri "num-integer" "0.1.35"))
+           (sha256
+            (base16-string->bytevector
+             "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba"))))
+       ("rust-num-iter"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-iter" "0.1.34"))
+           (sha256
+            (base16-string->bytevector
+             "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01"))))
+       ("rust-num-rational"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-rational" "0.1.39"))
+           (sha256
+            (base16-string->bytevector
+             "288629c76fac4b33556f4b7ab57ba21ae202da65ba8b77466e6d598e31990790"))))
+       ("rust-num-traits"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-traits" "0.1.40"))
+           (sha256
+            (base16-string->bytevector
+             "99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0"))))
+       ("rust-num_cpus"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num_cpus" "1.7.0"))
+           (sha256
+            (base16-string->bytevector
+             "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d"))))
+       ("rust-openssl"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl" "0.9.19"))
+           (sha256
+            (base16-string->bytevector
+             "816914b22eb15671d62c73442a51978f311e911d6a6f6cbdafa6abce1b5038fc"))))
+       ("rust-openssl-probe"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl-probe" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "d98df0270d404ccd3c050a41d579c52d1db15375168bb3471e04ec0f5f378daf"))))
+       ("rust-openssl-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl-sys" "0.9.19"))
+           (sha256
+            (base16-string->bytevector
+             "1e4c63a7d559c1e5afa6d6a9e6fa34bbc5f800ffc9ae08b72c605420b0c4f5e8"))))
+       ("rust-percent-encoding"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "percent-encoding" "1.0.0"))
+           (sha256
+            (base16-string->bytevector
+             "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"))))
+       ("rust-pkg-config"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "pkg-config" "0.3.9"))
            (sha256
-            (base32
-             "0rnvdmlajikq0i4zdy1p3pv699q6apvsxfc7av7byhppllp2r5ya"))))
+            (base16-string->bytevector
+             "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"))))
        ("rust-psapi-sys"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "psapi-sys" "0.1.0"))
            (sha256
-            (base32
-             "0y14g8qshsfnmb7nk2gs1rpbrs1wrggajmzp4yby4q6k0wd5vkdb"))))
-       ("rust-idna"
+            (base16-string->bytevector
+             "abcd5d1a07d360e29727f757a9decb3ce8bc6e0efa8969cfaad669a8317a2478"))))
+       ("rust-quote"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "idna" "0.1.0"))
+           (uri (crate-uri "quote" "0.3.15"))
            (sha256
-            (base32
-             "049c2rmlydrrrgrxdaq2v21adx9vkfh6k9x4xj56ckyf01p26lqh"))))
-       ("rust-url"
+            (base16-string->bytevector
+             "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"))))
+       ("rust-rand"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "rand" "0.3.16"))
+           (sha256
+            (base16-string->bytevector
+             "eb250fd207a4729c976794d03db689c9be1d634ab5a1c9da9492a13d8fecbcdf"))))
+       ("rust-redox_syscall"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "redox_syscall" "0.1.31"))
+           (sha256
+            (base16-string->bytevector
+             "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509"))))
+       ("rust-redox_termios"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "redox_termios" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"))))
+       ("rust-regex"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "regex" "0.1.80"))
+           (sha256
+            (base16-string->bytevector
+             "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"))))
+       ("rust-regex-0.2.2"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "url" "1.2.3"))
+           (uri (crate-uri "regex" "0.2.2"))
            (sha256
-            (base32
-             "1myr1i8djbl2bhvvrm6n3h7bj7sl6kh5dmaaz2f7c6x8hyyzgk28"))))
+            (base16-string->bytevector
+             "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"))))
        ("rust-regex-syntax"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "regex-syntax" "0.3.9"))
            (sha256
-            (base32
-             "0ms9hgdhhsxw9w920i7gipydvagf100bb56jbs192rz86ln01v7r"))))
-       ("rust-kernel32-sys"
+            (base16-string->bytevector
+             "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"))))
+       ("rust-regex-syntax-0.4.1"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "kernel32-sys" "0.2.2"))
+           (uri (crate-uri "regex-syntax" "0.4.1"))
            (sha256
-            (base32
-             "1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm"))))
-       ("rust-term"
+            (base16-string->bytevector
+             "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"))))
+       ("rust-rustc-demangle"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "term" "0.4.4"))
+           (uri (crate-uri "rustc-demangle" "0.1.5"))
            (sha256
-            (base32
-             "0jpr7jb1xidadh0arklwr99r8w1k1dfc4an3ginpsq5nnfigivrx"))))
-       ("rust-thread-id"
+            (base16-string->bytevector
+             "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e"))))
+       ("rust-rustc-serialize"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "thread-id" "2.0.0"))
+           (uri (crate-uri "rustc-serialize" "0.3.24"))
            (sha256
-            (base32
-             "00zzs2bx1xw8aqm5plqqgr7bc2zz6zkqrdxq8vpiqb8hc2srslx9"))))
-       ("rust-thread_local"
+            (base16-string->bytevector
+             "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"))))
+       ("rust-same-file"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "thread_local" "0.2.7"))
+           (uri (crate-uri "same-file" "0.1.3"))
            (sha256
-            (base32
-             "1mgxikqvhpsic6xk7pan95lvgsky1sdxzw2w5m2l35pgrazxnxl5"))))
-       ("rust-miow"
+            (base16-string->bytevector
+             "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7"))))
+       ("rust-scoped-tls"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "miow" "0.1.3"))
+           (uri (crate-uri "scoped-tls" "0.1.0"))
            (sha256
-            (base32
-             "16jvfjsp6fr4mbd2sw5hcdmi4dsa0m0aa45gjz78mb1h4mwcdgym"))))
-       ("rust-regex"
+            (base16-string->bytevector
+             "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"))))
+       ("rust-scopeguard"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "regex" "0.1.80"))
+           (uri (crate-uri "scopeguard" "0.1.2"))
            (sha256
-            (base32
-             "0bs036h3vzc6pj5jj4vc909s9rppq7b808ic99qn0y6gm3karm2g"))))
-       ("rust-num_cpus"
+            (base16-string->bytevector
+             "59a076157c1e2dc561d8de585151ee6965d910dd4dcb5dabb7ae3e83981a6c57"))))
+       ("rust-semver"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num_cpus" "1.1.0"))
+           (uri (crate-uri "semver" "0.8.0"))
            (sha256
-            (base32
-             "1bfwcn3yhwa31rinjw9yr7b6gvn6c06hnwnjz06pvm938w4fd448"))))
-       ("rust-libgit2-sys"
+            (base16-string->bytevector
+             "bee2bc909ab2d8d60dab26e8cad85b25d795b14603a0dcb627b78b9d30b6454b"))))
+       ("rust-semver-parser"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libgit2-sys" "0.6.6"))
+           (uri (crate-uri "semver-parser" "0.7.0"))
            (sha256
-            (base32
-             "074h9q4p60xh6canb0sj4vrc801wqv6p53l9lp0q724bkwzf7967"))))
-       ("rust-env_logger"
+            (base16-string->bytevector
+             "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"))))
+       ("rust-serde"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "env_logger" "0.3.5"))
+           (uri (crate-uri "serde" "1.0.15"))
            (sha256
-            (base32
-             "0bvcjgkw4s3k1rd7glpflgc8s9a393zjd6jfdgvs8gjvwj0dgaqm"))))
-       ("rust-openssl-probe"
+            (base16-string->bytevector
+             "6a7046c9d4c6c522d10b2d098f9bebe2bef227e0e74044d8c1bfcf6b476af799"))))
+       ("rust-serde_derive"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl-probe" "0.1.0"))
+           (uri (crate-uri "serde_derive" "1.0.15"))
            (sha256
-            (base32
-             "0689h6rhzy6dypqr90lsxnf108nsnh952wsx7ggs70s48b44jvbm"))))
-       ("rust-lazy_static"
+            (base16-string->bytevector
+             "1afcaae083fd1c46952a315062326bc9957f182358eb7da03b57ef1c688f7aa9"))))
+       ("rust-serde_derive_internals"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "lazy_static" "0.2.2"))
+           (uri (crate-uri "serde_derive_internals" "0.16.0"))
            (sha256
-            (base32
-             "16z1h7w702sxnscak38jykxlhxq0b5ip4mndlb46pkaqwzi0xgka"))))
-       ("rust-semver-parser"
+            (base16-string->bytevector
+             "bd381f6d01a6616cdba8530492d453b7761b456ba974e98768a18cad2cd76f58"))))
+       ("rust-serde_ignored"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "semver-parser" "0.6.1"))
+           (uri (crate-uri "serde_ignored" "0.0.4"))
            (sha256
-            (base32
-             "1s8s7a7yg8xhgci17y0xhyyncg229byivhpr0wbs3ljdlyjl73p8"))))
-       ("rust-semver"
+            (base16-string->bytevector
+             "190e9765dcedb56be63b6e0993a006c7e3b071a016a304736e4a315dc01fb142"))))
+       ("rust-serde_json"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "semver" "0.5.1"))
+           (uri (crate-uri "serde_json" "1.0.3"))
            (sha256
-            (base32
-             "1xbiv8l72rmngb3lgbmk3vd4lalcbzxcnrn085c2b75irl7gcbxf"))))
-       ("rust-docopt"
+            (base16-string->bytevector
+             "d243424e06f9f9c39e3cd36147470fd340db785825e367625f79298a6ac6b7ac"))))
+       ("rust-shell-escape"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "shell-escape" "0.1.3"))
+           (sha256
+            (base16-string->bytevector
+             "dd5cc96481d54583947bfe88bf30c23d53f883c6cd0145368b69989d97b84ef8"))))
+       ("rust-socket2"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "docopt" "0.6.86"))
+           (uri (crate-uri "socket2" "0.2.3"))
            (sha256
-            (base32
-             "1nf4f4zf5yk0d0l4kl7hkii4na22fhn0l2hgfb46yzv08l2g6zja"))))
-       ("rust-miniz-sys"
+            (base16-string->bytevector
+             "9e76b159741052c7deaa9fd0b5ca6b5f79cecf525ed665abfe5002086c6b2791"))))
+       ("rust-strsim"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "miniz-sys" "0.1.7"))
+           (uri (crate-uri "strsim" "0.6.0"))
            (sha256
-            (base32
-             "0m7dlggsxash0k5jkx576p556g9r8vnhyl9244gjxhq1g8rls7wx"))))
-       ("rust-curl"
+            (base16-string->bytevector
+             "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694"))))
+       ("rust-syn"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "curl" "0.4.1"))
+           (uri (crate-uri "syn" "0.11.11"))
            (sha256
-            (base32
-             "1b0y27b6vpqffgzm2kxc1s2i6bgdzxk3wn65g2asbcdxrvys3mcg"))))
-       ("rust-flate2"
+            (base16-string->bytevector
+             "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"))))
+       ("rust-synom"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "flate2" "0.2.14"))
+           (uri (crate-uri "synom" "0.11.3"))
            (sha256
-            (base32
-             "1fx3zsls5bb1zfx87s5sxkgk853z4nhjsbvq5s6if13kjlg4isry"))))
-       ("rust-git2"
+            (base16-string->bytevector
+             "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"))))
+       ("rust-tar"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "git2" "0.6.3"))
+           (uri (crate-uri "tar" "0.4.13"))
            (sha256
-            (base32
-             "06b1bw3pwszs8617xn8js6h0j983qjgfwsychw33lshccj3cld05"))))
-       ("rust-crates-io"
+            (base16-string->bytevector
+             "281285b717926caa919ad905ef89c63d75805c7d89437fb873100925a53f2b1b"))))
+       ("rust-tempdir"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "crates-io" "0.4.0"))
+           (uri (crate-uri "tempdir" "0.3.5"))
            (sha256
-            (base32
-             "0kk6abp1qbpv44hkq1yjp7xgpzjzafs83i1l26ycr0aph1gbwig9"))))
-       ("rust-git2-curl"
+            (base16-string->bytevector
+             "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"))))
+       ("rust-termcolor"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "git2-curl" "0.7.0"))
+           (uri (crate-uri "termcolor" "0.3.3"))
            (sha256
-            (base32
-             "13mzqp4rd81zp78261rlq23iw9aaysdr56484y1yy2xzhk3nnrv8"))))
-       ("rust-bufstream"
+            (base16-string->bytevector
+             "9065bced9c3e43453aa3d56f1e98590b8455b341d2fa191a1090c0dd0b242c75"))))
+       ("rust-termion"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "bufstream" "0.1.2"))
+           (uri (crate-uri "termion" "1.5.1"))
            (sha256
-            (base32
-             "0x6h27md1fwabbhbycfldj0wklrpjr520z9p0cpzm60fzzidnj3v"))))
-       ("rust-hamcrest"
+            (base16-string->bytevector
+             "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"))))
+       ("rust-thread-id"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "hamcrest" "0.1.1"))
+           (uri (crate-uri "thread-id" "2.0.0"))
            (sha256
-            (base32
-             "1m49rf7bnkx0qxja56slrjh44zi4z5bjz5x4pblqjw265828y25z"))))
-       ("rust-num"
+            (base16-string->bytevector
+             "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"))))
+       ("rust-thread_local"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num" "0.1.36"))
+           (uri (crate-uri "thread_local" "0.2.7"))
            (sha256
-            (base32
-             "081i1r3mdz6jasqd7qwraqqfqa3sdpvdvxl1xq0s7ip714xw1rxx"))))
-       ("rust-num-traits"
+            (base16-string->bytevector
+             "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"))))
+       ("rust-thread_local-0.3.4"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-traits" "0.1.36"))
+           (uri (crate-uri "thread_local" "0.3.4"))
            (sha256
-            (base32
-             "07688sp4z40p14lh5ywvrpm4zq8kcxzhjks8sg33jsr5da2l4sm1"))))
-       ("rust-num-integer"
+            (base16-string->bytevector
+             "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14"))))
+       ("rust-toml"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-integer" "0.1.32"))
+           (uri (crate-uri "toml" "0.4.5"))
            (sha256
-            (base32
-             "14pvaaawl0pgdcgh4dfdd67lz58yxlfl95bry86h28pjnfzxj97v"))))
-       ("rust-num-bigint"
+            (base16-string->bytevector
+             "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"))))
+       ("rust-unicode-bidi"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-bigint" "0.1.35"))
+           (uri (crate-uri "unicode-bidi" "0.3.4"))
            (sha256
-            (base32
-             "0jayfkdm33p4zvcahlv46zdfhlzg053mpw32abf2lz0z8xw47cc8"))))
-       ("rust-num-rational"
+            (base16-string->bytevector
+             "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"))))
+       ("rust-unicode-normalization"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-rational" "0.1.35"))
+           (uri (crate-uri "unicode-normalization" "0.1.5"))
            (sha256
-            (base32
-             "1bwaygv64qg7i78yqg0v4d0amfhamj598rpy4yxjz9rlhcxn1zsl"))))
-       ("rust-num-iter"
+            (base16-string->bytevector
+             "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"))))
+       ("rust-unicode-xid"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-iter" "0.1.32"))
+           (uri (crate-uri "unicode-xid" "0.0.4"))
            (sha256
-            (base32
-             "0p74nj5c1mc33h9lx4wpmlmggmn5lnkhxv1225g0aix8d6ciqyi8"))))
-       ("rust-num-complex"
+            (base16-string->bytevector
+             "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"))))
+       ("rust-unreachable"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-complex" "0.1.35"))
+           (uri (crate-uri "unreachable" "1.0.0"))
            (sha256
-            (base32
-             "0bzrjfppnnzf9vmkpklhp2dw9sb1lqzydb8r6k83z76i9l2qxizh"))))
-       ("rust-shell-escape"
+            (base16-string->bytevector
+             "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"))))
+       ("rust-url"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "shell-escape" "0.1.3"))
+           (uri (crate-uri "url" "1.5.1"))
+           (sha256
+            (base16-string->bytevector
+             "eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"))))
+       ("rust-userenv-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "userenv-sys" "0.2.0"))
+           (sha256
+            (base16-string->bytevector
+             "71d28ea36bbd9192d75bd9fa9b39f96ddb986eaee824adae5d53b6e51919b2f3"))))
+       ("rust-utf8-ranges"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "utf8-ranges" "0.1.3"))
+           (sha256
+            (base16-string->bytevector
+             "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"))))
+       ("rust-utf8-ranges-1.0.0"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "utf8-ranges" "1.0.0"))
+           (sha256
+            (base16-string->bytevector
+             "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"))))
+       ("rust-vcpkg"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "vcpkg" "0.2.2"))
+           (sha256
+            (base16-string->bytevector
+             "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"))))
+       ("rust-void"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "void" "1.0.2"))
+           (sha256
+            (base16-string->bytevector
+             "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"))))
+       ("rust-walkdir"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "walkdir" "1.0.7"))
+           (sha256
+            (base16-string->bytevector
+             "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"))))
+       ("rust-winapi"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "winapi" "0.2.8"))
            (sha256
-            (base32
-             "1y2fp2brv639icv4a0fdqs1zhlrxq8qbz27ygfa86ifmh5jcjp6x"))))))
+            (base16-string->bytevector
+             "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"))))
+       ("rust-winapi-build"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "winapi-build" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"))))
+       ("rust-wincolor"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "wincolor" "0.1.4"))
+           (sha256
+            (base16-string->bytevector
+             "a39ee4464208f6430992ff20154216ab2357772ac871d994c51628d60e58b8b0"))))
+       ("rust-ws2_32-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "ws2_32-sys" "0.2.1"))
+           (sha256
+            (base16-string->bytevector
+             "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"))))))
     (arguments
      `(#:cargo ,cargo-bootstrap
-       #:tests? #f ; FIXME
+       #:rustc ,rustc ; Force to use rustc from current file
        #:modules
        ((ice-9 match)
         (srfi srfi-1) ; 'every
@@ -853,12 +1262,8 @@ safety and thread safety guarantees.")
         (guix build cargo-build-system))
        #:phases
        (modify-phases %standard-phases
-         ;; Avoid cargo complaining about missmatched checksums.
-         (delete 'patch-source-shebangs)
-         (delete 'patch-generated-file-shebangs)
-         (delete 'patch-usr-bin-file)
-         (add-after 'unpack 'unpack-submodule-sources
-           (lambda* (#:key inputs #:allow-other-keys)
+         (add-after 'unpack 'unpack-dependencies
+           (lambda* (#:key inputs outputs #:allow-other-keys)
              (define (unpack source target)
                (mkdir-p target)
                (with-directory-excursion target
@@ -871,37 +1276,56 @@ safety and thread safety guarantees.")
                (match entry
                  ((name . src)
                   (if (string-prefix? "rust-" name)
-                    (let* ((rust-length (string-length "rust-"))
-                           (rust-name (string-drop name
-                                                   rust-length))
-                           (rsrc (string-append "vendor/"
-                                                rust-name))
-                           (unpack-status (unpack src rsrc)))
-                      (touch (string-append rsrc "/.cargo-ok"))
-                      (generate-checksums rsrc src)
-                      unpack-status)))
+                      (let* ((rust-length (string-length "rust-"))
+                             (rust-name (string-drop name rust-length))
+                             (rsrc (string-append "vendor/" rust-name))
+                             (unpack-status (unpack src rsrc)))
+                        (touch (string-append rsrc "/.cargo-ok"))
+                        (generate-checksums rsrc src)
+                        unpack-status)))
                  (_ #t)))
-               (mkdir "vendor")
-               (every install-rust-library inputs)))
-         (add-after 'unpack 'set-environment-up
+             (mkdir "vendor")
+             (every install-rust-library inputs)))
+         (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((gcc (assoc-ref inputs "gcc"))
-                    (cc (string-append gcc "/bin/gcc")))
-               (mkdir ".cargo")
-               (call-with-output-file ".cargo/config"
-                 (lambda (p)
-                   (format p "
+             (substitute* "Cargo.lock"
+               (("(\"checksum .* = )\".*\"" all name)
+                (string-append name "\"" ,%cargo-reference-hash "\"")))
+             (for-each
+              (lambda (filename)
+                (use-modules (guix build cargo-build-system))
+                (delete-file filename)
+                (let* ((dir (dirname filename)))
+                  (display (string-append
+                            "patch-cargo-checksums: generate-checksums for "
+                            dir "\n"))
+                  (generate-checksums dir ,%cargo-reference-project-file)))
+              (find-files "vendor" ".cargo-checksum.json"))))
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "tests/build.rs"
+               (("/usr/bin/env") (which "env"))
+               ;; Guix llvm compiled without asmjs-unknown-emscripten at all
+               (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
+             (substitute* "tests/death.rs"
+               ;; Stuck when built in container
+               (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
+             (mkdir ".cargo")
+             (call-with-output-file ".cargo/config"
+               (lambda (port)
+                 (display "
 [source.crates-io]
 registry = 'https://github.com/rust-lang/crates.io-index'
 replace-with = 'vendored-sources'
 
 [source.vendored-sources]
 directory = 'vendor'
-")))
-               (setenv "CMAKE_C_COMPILER" cc)
-               (setenv "CC" cc))
-             #t))
-         (delete 'configure))))
+" port)))
+             ;; Disable test for cross compilation support
+             (setenv "CFG_DISABLE_CROSS_TESTS" "1")
+             (setenv "SHELL" (which "sh"))
+             (setenv "CONFIG_SHELL" (which "sh"))
+             (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")))))))
     (home-page "https://github.com/rust-lang/cargo")
     (synopsis "Build tool and package manager for Rust")
     (description "Cargo is a tool that allows Rust projects to declare their
-- 
2.15.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#29555] [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
  2017-12-03 19:01 [bug#29555] [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0 Nikolai Merinov
@ 2017-12-04  7:02 ` ng0
  2017-12-04 14:33 ` Jelle Licht
  1 sibling, 0 replies; 8+ messages in thread
From: ng0 @ 2017-12-04  7:02 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: 29555

[-- Attachment #1: Type: text/plain, Size: 73164 bytes --]

Nikolai Merinov transcribed 67K bytes:
> Update for a rustc and cargo packages. This update will also fix a
> build.
> 

Hi,

thanks! In theory this looks good, I have to build it tonight when
I have a power outlet in reach.

> From 936ebcccac4cff0cc598c4ec9adeb28ce5d5c149 Mon Sep 17 00:00:00 2001
> From: Nikolay Merinov <nikolay.merinov@member.fsf.org>
> Date: Sun, 3 Dec 2017 19:55:24 +0500
> Subject: [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
> To: guix-patches@gnu.org
> 
> * gnu/packages/rust.scm (%rust-bootstrap-binaries-version): update version
> (%rust-bootstrap-binaries): use x86_64 rust bootstrap package for x86_64 build
> (%cargo-reference-project-file): Use specific file as "project" file when
> patching rust vendored sources
> (%cargo-reference-hash): sha256 sum for %cargo-reference-project-file
> (rustc-bootstrap): use bootstrap package with host architecture
> (cargo-bootstrap): use bootstrap package with host architecture
> (rustc): Add new test dependency, fix build issues, use "./x.py" script for
> build instead of "./configure"
> (cargo): Update dependencies, patch shebangs for vendored sources
> ---
>  gnu/packages/rust.scm | 1184 +++++++++++++++++++++++++++++++++----------------
>  1 file changed, 804 insertions(+), 380 deletions(-)
> 
> diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
> index 583ea37c8..591648bec 100644
> --- a/gnu/packages/rust.scm
> +++ b/gnu/packages/rust.scm
> @@ -3,6 +3,7 @@
>  ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
>  ;;; Copyright © 2016 ng0 <ng0@infotropique.org>
>  ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
> +;;; Copyright © 2017 Nikolai Merinov <nikolai.merinov@member.fsf.org>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -29,6 +30,7 @@
>    #:use-module (gnu packages elf)
>    #:use-module (gnu packages flex)
>    #:use-module (gnu packages gcc)
> +  #:use-module (gnu packages gdb)
>    #:use-module (gnu packages jemalloc)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages llvm)
> @@ -37,17 +39,19 @@
>    #:use-module (gnu packages ssh)
>    #:use-module (gnu packages tls)
>    #:use-module (gnu packages version-control)
> +  #:use-module (gnu packages)
>    #:use-module (guix build-system cargo)
>    #:use-module (guix build-system gnu)
>    #:use-module (guix build-system trivial)
>    #:use-module (guix download)
> +  #:use-module (guix base16)      ;for generated "cargo" native-inputs
>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix packages)
>    #:use-module (ice-9 match)
>    #:use-module (srfi srfi-26))
>  
>  ;; Should be one less than the current released version.
> -(define %rust-bootstrap-binaries-version "1.15.0")
> +(define %rust-bootstrap-binaries-version "1.21.0")
>  
>  (define %rust-bootstrap-binaries
>    (origin
> @@ -55,10 +59,18 @@
>      (uri (string-append
>            "https://static.rust-lang.org/dist/"
>            "rust-" %rust-bootstrap-binaries-version
> -          "-i686-unknown-linux-gnu.tar.gz"))
> +          "-" %host-type ".tar.gz"))
>      (sha256
>       (base32
> -      "0wmkfx8pxmkkw021mrq9s3xhra8f0daqdl6j56pxyn4w39i0rzrw"))))
> +      (match %host-type
> +	("i686-unknown-linux-gnu"
> +         "1vnvqwz30hvyjcfr1f602lg43v2vlqjr3yhb5vr8xnrcc07yvjmp")
> +	("x86_64-unknown-linux-gnu"
> +         "1s0866qcy0645bqhsbs3pvk2hi52ps8jzs7x096w0as033h707ml"))))))
> +
> +(define %cargo-reference-project-file "/dev/null")
> +(define %cargo-reference-hash
> +  "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
>  
>  (define (increment-rust-version rust-version major patch)
>    (match (string-split rust-version #\.)
> @@ -92,7 +104,6 @@
>      (arguments
>       `(#:tests? #f
>         #:strip-binaries? #f
> -       #:system "i686-linux"
>         #:phases
>         (modify-phases %standard-phases
>           (delete 'configure)
> @@ -103,8 +114,7 @@
>                      (gcc:lib (assoc-ref inputs "gcc:lib"))
>                      (libc (assoc-ref inputs "libc"))
>                      (zlib (assoc-ref inputs "zlib"))
> -                    (ld-so (string-append libc
> -                                          ,(glibc-dynamic-linker "i686-linux")))
> +                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
>                      (rpath (string-append out "/lib:" zlib "/lib:"
>                                            libc "/lib:" gcc:lib "/lib"))
>                      (rustc (string-append out "/bin/rustc"))
> @@ -112,7 +122,7 @@
>                 (system* "bash" "install.sh"
>                          (string-append "--prefix=" out)
>                          (string-append "--components=rustc,"
> -                                       "rust-std-i686-unknown-linux-gnu"))
> +                                       "rust-std-" %host-type))
>                 (for-each (lambda (file)
>                             (system* "patchelf" "--set-rpath" rpath file))
>                           (cons* rustc rustdoc (find-files out "\\.so$")))
> @@ -129,7 +139,7 @@ which can in turn be used to build the final Rust compiler.")
>  (define cargo-bootstrap
>    (package
>      (name "cargo-bootstrap")
> -    (version (cargo-version %rust-bootstrap-binaries-version))
> +    (version (cargo-version %rust-bootstrap-binaries-version 1))
>      (source %rust-bootstrap-binaries)
>      (build-system gnu-build-system)
>      (native-inputs
> @@ -139,7 +149,6 @@ which can in turn be used to build the final Rust compiler.")
>      (arguments
>       `(#:tests? #f
>         #:strip-binaries? #f
> -       #:system "i686-linux"
>         #:phases
>         (modify-phases %standard-phases
>           (delete 'configure)
> @@ -149,8 +158,7 @@ which can in turn be used to build the final Rust compiler.")
>               (let* ((out (assoc-ref outputs "out"))
>                      (gcc:lib (assoc-ref inputs "gcc:lib"))
>                      (libc (assoc-ref inputs "libc"))
> -                    (ld-so (string-append libc
> -                                          ,(glibc-dynamic-linker "i686-linux")))
> +                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
>                      (rpath (string-append out "/lib:" libc "/lib:"
>                                            gcc:lib "/lib"))
>                      (cargo (string-append out "/bin/cargo")))
> @@ -196,11 +204,11 @@ manager, which is required to build itself.")
>      (description "Meta package for a rust environment. Provides pre-compiled
>  rustc-bootstrap and cargo-bootstrap packages.")
>      (license license:asl2.0)))
> -
> +
>  (define-public rustc
>    (package
>      (name "rustc")
> -    (version (rustc-version %rust-bootstrap-binaries-version))
> +    (version (rustc-version %rust-bootstrap-binaries-version 1))
>      (source (origin
>                (method url-fetch)
>                (uri (string-append
> @@ -208,17 +216,18 @@ rustc-bootstrap and cargo-bootstrap packages.")
>                      "rustc-" version "-src.tar.gz"))
>                (sha256
>                 (base32
> -                "1d78jq7mc34n265by68amr9r4nzbiqrilfbwh7gx56ydn4gb6rpr"))
> -            (modules '((guix build utils)))
> -            (snippet
> -             `(begin
> -                (delete-file-recursively "src/llvm")
> -                #t))))
> +                "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))
> +              (modules '((guix build utils)))
> +              (snippet
> +               `(begin
> +                  (delete-file-recursively "src/llvm")
> +                  #t))))
>      (build-system gnu-build-system)
>      (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)
> @@ -228,89 +237,125 @@ rustc-bootstrap and cargo-bootstrap packages.")
>       `(("jemalloc" ,jemalloc)
>         ("llvm" ,llvm-3.9.1)))
>      (arguments
> -     `(#:phases
> +     `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
> +       #:phases
>         (modify-phases %standard-phases
> -         (add-after 'unpack 'patch-configure
> -           (lambda _
> -             (substitute* "configure"
> -               (("/usr/bin/env") (which "env")) ; Detect target CPU correctly.
> -               (("probe_need CFG_CURL curl") "") ; Avoid curl build dependency.
> -               ;; Newer LLVM has a NVPTX (NVIDIA) backend which the Rust
> -               ;; Makefiles don't know about, causing a linker failure
> -               ;; if we don't intervene.
> -               ;; Therefore, we add NVPTX here.
> -               ;; See <https://github.com/rust-lang/rust/issues/40698>.
> -               ;; For the next release, we will have to use rustbuild.
> -               ;; Right now, rustbuild doesn't work yet.
> -               (("-DLLVM_TARGETS_TO_BUILD='")
> -                "-DLLVM_TARGETS_TO_BUILD='NVPTX;")) ; Make LLVM >= 3.8.1 work.
> -             (substitute* "src/tools/compiletest/src/util.rs"
> -               (("(\"amd64\", \"x86_64\"),") "(\"amd64\", \"x86_64\"),
> -(\"nvptx\", \"nvptx\"),")) ; Make LLVM >= 3.8.1 work.
> -             (substitute* "mk/main.mk"
> -               (("LLVM_OPTIONAL_COMPONENTS=")
> -                "LLVM_OPTIONAL_COMPONENTS=nvptx ")) ; Make LLVM >= 3.8.1 work.
> -             #t))
>           (add-after 'unpack 'set-env
>             (lambda _
>               (setenv "SHELL" (which "sh"))
>               (setenv "CONFIG_SHELL" (which "sh"))
> +             ;; guix llvm-3.9.1 package install only shared libraries
> +             (setenv "LLVM_LINK_SHARED" "1")
>               #t))
>           (add-after 'unpack 'patch-tests
>             (lambda* (#:key inputs #:allow-other-keys)
>               (let ((bash (assoc-ref inputs "bash")))
> -               (substitute* "src/tools/tidy/src/main.rs"
> -                 (("^.*cargo.*::check.*$") ""))
> +               (substitute* "src/build_helper/lib.rs"
> +                 ;; In same folder as gcc there is only "gcc-ar" utility
> +                 (("file\\.push_str\\(\"ar\"\\);") "file.push_str(\"gcc-ar\");"))
>                 (substitute* "src/libstd/process.rs"
>                   ;; The newline is intentional.
>                   ;; There's a line length "tidy" check in Rust which would
>                   ;; fail otherwise.
> -                 (("\"/bin/sh\"") (string-append "
> -\"" bash "/bin/sh\"")))
> -               ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>.
> +                 (("\"/bin/sh\"") (string-append "\n\"" bash "/bin/sh\"")))
> +               (substitute* "src/libstd/net/tcp.rs"
> +                 ;; There is no network in build environment
> +                 (("fn connect_timeout_unroutable")
> +                  "#[ignore]\nfn connect_timeout_unroutable"))
> +               ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>
>                 (substitute* "src/libstd/sys/unix/process/process_common.rs"
> -                 (("fn test_process_mask") "#[cfg_attr(target_os = \"linux\", ignore)]
> -fn test_process_mask"))
> +                 (("fn test_process_mask") "#[ignore]\nfn test_process_mask"))
>                 ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
> -               ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>.
> +               ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
>                 (delete-file-recursively "src/test/run-make/linker-output-non-utf8")
> +               (substitute* "src/libstd/build.rs"
> +                 ;; After update to jemalloc 5.0 library "libjemalloc_pic.a"
> +                 ;; required to link against libstdc++
> +                 ;; First broken Rust build: https://hydra.gnu.org/build/2248057
> +                 (("println!\\(\"cargo:rustc-link-lib=pthread\"\\);")
> +                  (string-append "println!(\"cargo:rustc-link-lib=pthread\");\n"
> +                                 "println!(\"cargo:rustc-link-lib=stdc++\");")))
> +               (substitute* "src/build_helper/lib.rs"
> +                 ;; Bug in Rust code.
> +                 ;; Current implementation assume that if dst not exist then it's mtime
> +                 ;; is 0, but in same time "src" have 0 mtime in guix build!
> +                 (("let threshold = mtime\\(dst\\);")
> +                  "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
>                 #t)))
> +         (add-after 'patch-source-shebangs 'patch-cargo-checksums
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (substitute* "src/Cargo.lock"
> +               (("(\"checksum .* = )\".*\"" all name)
> +                (string-append name "\"" ,%cargo-reference-hash "\"")))
> +             (for-each
> +              (lambda (filename)
> +                (use-modules (guix build cargo-build-system))
> +                (delete-file filename)
> +                (let* ((dir (dirname filename)))
> +                  (display (string-append
> +                            "patch-cargo-checksums: generate-checksums for "
> +                            dir "\n"))
> +                  (generate-checksums dir ,%cargo-reference-project-file)))
> +              (find-files "src/vendor" ".cargo-checksum.json"))))
>           (replace 'configure
>             (lambda* (#:key inputs outputs #:allow-other-keys)
>               (let* ((out (assoc-ref outputs "out"))
>                      (gcc (assoc-ref inputs "gcc"))
> +                    (gdb (assoc-ref inputs "gdb"))
>                      (binutils (assoc-ref inputs "binutils"))
>                      (python (assoc-ref inputs "python-2"))
>                      (rustc (assoc-ref inputs "rustc-bootstrap"))
> +                    (cargo (assoc-ref inputs "cargo-bootstrap"))
>                      (llvm (assoc-ref inputs "llvm"))
> -                    (jemalloc (assoc-ref inputs "jemalloc"))
> -                    (flags (list
> -                            (string-append "--prefix=" out)
> -                            (string-append "--datadir=" out "/share")
> -                            (string-append "--infodir=" out "/share/info")
> -                            (string-append "--default-linker=" gcc "/bin/gcc")
> -                            (string-append "--default-ar=" binutils "/bin/ar")
> -                            (string-append "--python=" python "/bin/python2")
> -                            (string-append "--local-rust-root=" rustc)
> -                            (string-append "--llvm-root=" llvm)
> -                            (string-append "--jemalloc-root=" jemalloc "/lib")
> -                            "--release-channel=stable"
> -                            "--enable-rpath"
> -                            "--enable-local-rust"
> -                            "--disable-rustbuild" ; rustbuild doesn't work yet.
> -                            "--disable-manage-submodules")))
> -               ;; Rust uses a custom configure script (no autoconf).
> -               (zero? (apply system* "./configure" flags)))))
> -         (add-after 'install 'wrap-rustc
> +                    (jemalloc (assoc-ref inputs "jemalloc")))
> +               (call-with-output-file "config.toml"
> +                 (lambda (port)
> +                   (display (string-append "
> +[llvm]
> +[build]
> +cargo = \"" cargo "/bin/cargo" "\"
> +rustc = \"" rustc "/bin/rustc" "\"
> +python = \"" python "/bin/python2" "\"
> +gdb = \"" gdb "/bin/gdb" "\"
> +vendor = true
> +submodules = false
> +[install]
> +prefix = \"" out "\"
> +[rust]
> +default-linker = \"" gcc "/bin/gcc" "\"
> +default-ar = \"" binutils "/bin/ar" "\"
> +channel = \"stable\"
> +rpath = true
> +# There is 2 failed codegen tests:
> +# codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
> +# This tests required patched LLVM
> +codegen-tests = false
> +[target." %host-type "]
> +llvm-config = \"" llvm "/bin/llvm-config" "\"
> +cc = \"" gcc "/bin/gcc" "\"
> +cxx = \"" gcc "/bin/g++" "\"
> +jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
> +[dist]
> +") port))))))
> +         (replace 'build
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (zero? (system* "./x.py" "build"))))
> +         (replace 'check
>             (lambda* (#:key inputs outputs #:allow-other-keys)
> -             (let ((out (assoc-ref outputs "out"))
> -                   (libc (assoc-ref inputs "libc"))
> -                   (ld-wrapper (assoc-ref inputs "ld-wrapper")))
> +             (zero? (system* "./x.py" "test"))))
> +         (replace 'install
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (zero? (system* "./x.py" "install"))))
> +           (add-after 'install 'wrap-rustc
> +             (lambda* (#:key inputs outputs #:allow-other-keys)
> +               (let ((out (assoc-ref outputs "out"))
> +                     (libc (assoc-ref inputs "libc"))
> +                     (ld-wrapper (assoc-ref inputs "ld-wrapper")))
>                 ;; Let gcc find ld and libc startup files.
> -               (wrap-program (string-append out "/bin/rustc")
> -                 `("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
> -                 `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))
> -               #t))))))
> +                 (wrap-program (string-append out "/bin/rustc")
> +                   `("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
> +                   `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))
> +                 #t))))))
>      ;; rustc invokes gcc, so we need to set its search paths accordingly.
>      (native-search-paths (package-native-search-paths gcc))
>      (synopsis "Compiler for the Rust progamming language")
> @@ -325,7 +370,7 @@ safety and thread safety guarantees.")
>  (define-public cargo
>    (package
>      (name "cargo")
> -    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version)))
> +    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version) 0))
>      (source (origin
>                (method url-fetch)
>                (uri (string-append "https://github.com/rust-lang/cargo/archive/"
> @@ -333,7 +378,7 @@ safety and thread safety guarantees.")
>                (file-name (string-append name "-" version ".tar.gz"))
>                (sha256
>                 (base32
> -                "1y0zy8gk1ly0wh57y78fisk7cdd92qk0x7z664f6l7lzl2krqs7w"))))
> +                "0kr7rml7v2bm7zl8jcb3056h63zpyy9m08s212i8vfwxf6lf5fzl"))))
>      (build-system cargo-build-system)
>      (propagated-inputs
>       `(("cmake" ,cmake)
> @@ -346,506 +391,870 @@ safety and thread safety guarantees.")
>         ("python-2" ,python-2)
>         ("zlib" ,zlib)))
>      (native-inputs
> -     `(("rust-openssl"
> +     `(("git" ,git) ; required for tests
> +       ;; Next dependencies generated with next command:
> +       ;; cat Cargo.lock | awk '
> +       ;;   /^"checksum/
> +       ;;   { oname=name=$2; vers=$3; hash=$6;
> +       ;;     if (ns[name] != 1) { ns[name]=1; } else { name = name "-" vers; }
> +       ;;     print "       (\"rust-" name "\"";
> +       ;;     print "        ,(origin";
> +       ;;     print "           (method url-fetch)";
> +       ;;     print "           (uri (crate-uri \"" oname "\" \"" vers "\"))";
> +       ;;     print "           (sha256";
> +       ;;     print "            (base16-string->bytevector";
> +       ;;     print "             " hash "))))"
> +       ;;   }'
> +       ("rust-advapi32-sys"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "openssl" "0.9.6"))
> +           (uri (crate-uri "advapi32-sys" "0.2.0"))
>             (sha256
> -            (base32
> -             "0g28g692gby6izp9qmnwnyxyhf9b0870yhd500p18j9l69lxl00c"))))
> -       ("rust-strsim"
> +            (base16-string->bytevector
> +             "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"))))
> +       ("rust-aho-corasick"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "strsim" "0.5.1"))
> +           (uri (crate-uri "aho-corasick" "0.5.3"))
>             (sha256
> -            (base32
> -             "0bj4fsm1l2yqbfpspyvjf9m3m50pskapcddzm0ji9c74jbgnkh2h"))))
> -       ("rust-libc"
> +            (base16-string->bytevector
> +             "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"))))
> +       ("rust-aho-corasick-0.6.3"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "libc" "0.2.18"))
> +           (uri (crate-uri "aho-corasick" "0.6.3"))
>             (sha256
> -            (base32
> -             "0w5cghr0wx3hi2sclk8r9iyzlbxsakil87ada40q2ykyhky24655"))))
> +            (base16-string->bytevector
> +             "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699"))))
> +       ("rust-atty"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "atty" "0.2.3"))
> +           (sha256
> +            (base16-string->bytevector
> +             "21e50800ec991574876040fff8ee46b136a53e985286fbe6a3bdfe6421b78860"))))
> +       ("rust-backtrace"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "backtrace" "0.3.3"))
> +           (sha256
> +            (base16-string->bytevector
> +             "99f2ce94e22b8e664d95c57fff45b98a966c2252b60691d0b7aeeccd88d70983"))))
> +       ("rust-backtrace-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "backtrace-sys" "0.1.14"))
> +           (sha256
> +            (base16-string->bytevector
> +             "c63ea141ef8fdb10409d0f5daf30ac51f84ef43bff66f16627773d2a292cd189"))))
>         ("rust-bitflags"
>          ,(origin
>             (method url-fetch)
>             (uri (crate-uri "bitflags" "0.7.0"))
>             (sha256
> -            (base32
> -             "0v8hh6wdkpk9my8z8442g4hqrqf05h0qj53dsay6mv18lqvqklda"))))
> -       ("rust-unicode-normalization"
> +            (base16-string->bytevector
> +             "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"))))
> +       ("rust-bitflags-0.9.1"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "unicode-normalization" "0.1.2"))
> +           (uri (crate-uri "bitflags" "0.9.1"))
>             (sha256
> -            (base32
> -             "0whi4xxqcjfsz6ywyrfd5lhgk1a44c86qwgvfqcmzidshcpklr16"))))
> -       ("rust-rand"
> +            (base16-string->bytevector
> +             "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"))))
> +       ("rust-bufstream"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "rand" "0.3.14"))
> +           (uri (crate-uri "bufstream" "0.1.3"))
>             (sha256
> -            (base32
> -             "1984zvj8572ig28fz6idc4r96fx39h4lzmr07yf7kb7gdn6di497"))))
> -       ("rust-gcc"
> +            (base16-string->bytevector
> +             "f2f382711e76b9de6c744cc00d0497baba02fb00a787f088c879f01d09468e32"))))
> +       ("rust-cc"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "gcc" "0.3.39"))
> +           (uri (crate-uri "cc" "1.0.0"))
>             (sha256
> -            (base32
> -             "1q0idjvmhp6shkb9hqabh51rgfr8dqpi1xfmyzq7q8vgzybll7kp"))))
> -       ("rust-tempdir"
> +            (base16-string->bytevector
> +             "7db2f146208d7e0fbee761b09cd65a7f51ccc38705d4e7262dad4d73b12a76b1"))))
> +       ("rust-cfg-if"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "tempdir" "0.3.5"))
> +           (uri (crate-uri "cfg-if" "0.1.2"))
>             (sha256
> -            (base32
> -             "1mij45kgzflkja0h8q9avrik76h5a0b60m9hfd6k9yqxbiplm5w7"))))
> -       ("rust-memchr"
> +            (base16-string->bytevector
> +             "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"))))
> +       ("rust-cmake"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "memchr" "0.1.11"))
> +           (uri (crate-uri "cmake" "0.1.26"))
>             (sha256
> -            (base32
> -             "084d85hjfa3xf5kwdms2mhbkh78m1gl2254cp5swcxj3a7xjkdnq"))))
> -       ("rust-rustc-serialize"
> +            (base16-string->bytevector
> +             "357c07e7a1fc95732793c1edb5901e1a1f305cfcf63a90eb12dbd22bdb6b789d"))))
> +       ("rust-commoncrypto"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "rustc-serialize" "0.3.21"))
> +           (uri (crate-uri "commoncrypto" "0.2.0"))
>             (sha256
> -            (base32
> -             "064qmyr2508qf78dwcpiv25rfjp9h9vd0wrj4mmwgppjg4fgrydz"))))
> -       ("rust-cmake"
> +            (base16-string->bytevector
> +             "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007"))))
> +       ("rust-commoncrypto-sys"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "cmake" "0.1.19"))
> +           (uri (crate-uri "commoncrypto-sys" "0.2.0"))
>             (sha256
> -            (base32
> -             "0am8c8ns1h6b1a5x9z2r1m3rszvya5nccl2pzszzjv5aiiaydgcf"))))
> -       ("rust-matches"
> +            (base16-string->bytevector
> +             "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2"))))
> +       ("rust-conv"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "matches" "0.1.4"))
> +           (uri (crate-uri "conv" "0.3.3"))
>             (sha256
> -            (base32
> -             "1c8190j84hbicy8jwscw5icfam12j6lcxi02lvmadq9260p65mzg"))))
> -       ("rust-winapi"
> +            (base16-string->bytevector
> +             "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"))))
> +       ("rust-core-foundation"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "winapi" "0.2.8"))
> +           (uri (crate-uri "core-foundation" "0.4.4"))
>             (sha256
> -            (base32
> -             "0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n"))))
> -       ("rust-pkg-config"
> +            (base16-string->bytevector
> +             "5909502e547762013619f4c4e01cc7393c20fe2d52d7fa471c1210adb2320dc7"))))
> +       ("rust-core-foundation-sys"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "pkg-config" "0.3.8"))
> +           (uri (crate-uri "core-foundation-sys" "0.4.4"))
>             (sha256
> -            (base32
> -             "1ypj4nj2z9z27qg06v3g40jyhw685i3l2wi098d21bvyri781vlc"))))
> -       ("rust-libssh2-sys"
> +            (base16-string->bytevector
> +             "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387"))))
> +       ("rust-crossbeam"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "libssh2-sys" "0.2.5"))
> +           (uri (crate-uri "crossbeam" "0.2.10"))
>             (sha256
> -            (base32
> -             "0d2r36hrh9vc1821r0v4kywv30svpf37d31calwql69fbij3bqci"))))
> -       ("rust-libz-sys"
> +            (base16-string->bytevector
> +             "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"))))
> +       ("rust-crossbeam-0.3.0"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "crossbeam" "0.3.0"))
> +           (sha256
> +            (base16-string->bytevector
> +             "8837ab96533202c5b610ed44bc7f4183e7957c1c8f56e8cc78bb098593c8ba0a"))))
> +       ("rust-crypto-hash"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "crypto-hash" "0.3.0"))
> +           (sha256
> +            (base16-string->bytevector
> +             "34903878eec1694faf53cae8473a088df333181de421d4d3d48061d6559fe602"))))
> +       ("rust-curl"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "libz-sys" "1.0.13"))
> +           (uri (crate-uri "curl" "0.4.8"))
>             (sha256
> -            (base32
> -             "034pgvxzgsv37iafgs0lmvd1ifm0bg0zm1xcsn9x71nn8lm93vp5"))))
> +            (base16-string->bytevector
> +             "7034c534a1d7d22f7971d6088aa9d281d219ef724026c3428092500f41ae9c2c"))))
>         ("rust-curl-sys"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "curl-sys" "0.3.6"))
> +           (uri (crate-uri "curl-sys" "0.3.15"))
>             (sha256
> -            (base32
> -             "0fi8kjz3f8m8vfazycs3ddm0h6j3x78hw78gwbvybx71129192i1"))))
> -       ("rust-error-chain"
> +            (base16-string->bytevector
> +             "4bee31aa3a079d5f3ff9579ea4dcfb1b1a17a40886f5f467436d383e78134b55"))))
> +       ("rust-custom_derive"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "error-chain" "0.7.2"))
> +           (uri (crate-uri "custom_derive" "0.1.7"))
>             (sha256
> -            (base32
> -             "03qjh6l2a9fkiyg0428p7q3dcpi47cbmrqf9zmlymkg43v3v731i"))))
> -       ("rust-metadeps"
> +            (base16-string->bytevector
> +             "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"))))
> +       ("rust-dbghelp-sys"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "metadeps" "1.1.1"))
> +           (uri (crate-uri "dbghelp-sys" "0.2.0"))
>             (sha256
> -            (base32
> -             "0l818461bslb7nrs7r1amkqv45n53fcp5sabyqipwx0xxbkzz7w2"))))
> -       ("rust-openssl-sys"
> +            (base16-string->bytevector
> +             "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"))))
> +       ("rust-docopt"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "openssl-sys" "0.9.6"))
> +           (uri (crate-uri "docopt" "0.8.1"))
>             (sha256
> -            (base32
> -             "1hzpyf9z8xg1yn5r9g17bl5j20nifd6s2zp10xh90v7m0sd2yj5i"))))
> -       ("rust-fs2"
> +            (base16-string->bytevector
> +             "3b5b93718f8b3e5544fcc914c43de828ca6c6ace23e0332c6080a2977b49787a"))))
> +       ("rust-dtoa"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "fs2" "0.3.0"))
> +           (uri (crate-uri "dtoa" "0.4.2"))
>             (sha256
> -            (base32
> -             "0lg57mgcm1r0m8jm4nqpcrl6lmxg8lj854k2h0r7qp46pphh2034"))))
> -       ("rust-log"
> +            (base16-string->bytevector
> +             "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"))))
> +       ("rust-env_logger"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "log" "0.3.6"))
> +           (uri (crate-uri "env_logger" "0.4.3"))
>             (sha256
> -            (base32
> -             "0m40hgs3cg57dd5kk1mabfk6gk8z6l1cihar8akx4kmzz1xlk0xb"))))
> +            (base16-string->bytevector
> +             "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b"))))
> +       ("rust-error-chain"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "error-chain" "0.11.0"))
> +           (sha256
> +            (base16-string->bytevector
> +             "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"))))
>         ("rust-filetime"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "filetime" "0.1.10"))
> +           (uri (crate-uri "filetime" "0.1.12"))
>             (sha256
> -            (base32
> -             "08p9scgv30i1141cnp5xi4pqlnkfci455nrpca55df1r867anqsk"))))
> -       ("rust-tar"
> +            (base16-string->bytevector
> +             "6ab199bf38537c6f38792669e081e0bb278b9b7405bba2642e4e5d15bf732c0e"))))
> +       ("rust-flate2"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "flate2" "0.2.20"))
> +           (sha256
> +            (base16-string->bytevector
> +             "e6234dd4468ae5d1e2dbb06fe2b058696fdc50a339c68a393aefbf00bc81e423"))))
> +       ("rust-fnv"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "fnv" "1.0.5"))
> +           (sha256
> +            (base16-string->bytevector
> +             "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344"))))
> +       ("rust-foreign-types"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "foreign-types" "0.2.0"))
> +           (sha256
> +            (base16-string->bytevector
> +             "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"))))
> +       ("rust-fs2"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "fs2" "0.4.2"))
> +           (sha256
> +            (base16-string->bytevector
> +             "9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866"))))
> +       ("rust-git2"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "git2" "0.6.8"))
> +           (sha256
> +            (base16-string->bytevector
> +             "0c1c0203d653f4140241da0c1375a404f0a397249ec818cd2076c6280c50f6fa"))))
> +       ("rust-git2-curl"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "tar" "0.4.9"))
> +           (uri (crate-uri "git2-curl" "0.7.0"))
>             (sha256
> -            (base32
> -             "1vi3nl8s3jjf5l20ni47gmh1p4bdjfh7q50fbg7izzqrf7i4i40c"))))
> +            (base16-string->bytevector
> +             "68676bc784bf0bef83278898929bf64a251e87c0340723d0b93fa096c9c5bf8e"))))
>         ("rust-glob"
>          ,(origin
>             (method url-fetch)
>             (uri (crate-uri "glob" "0.2.11"))
>             (sha256
> -            (base32
> -             "1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb"))))
> -       ("rust-cfg-if"
> +            (base16-string->bytevector
> +             "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"))))
> +       ("rust-globset"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "cfg-if" "0.1.0"))
> +           (uri (crate-uri "globset" "0.2.0"))
>             (sha256
> -            (base32
> -             "137qikjcal4h75frzcn6mknygqk8vy5bva7w851aydb5gc6pc7ny"))))
> -       ("rust-winapi-build"
> +            (base16-string->bytevector
> +             "feeb1b6840809ef5efcf7a4a990bc4e1b7ee3df8cf9e2379a75aeb2ba42ac9c3"))))
> +       ("rust-hamcrest"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "winapi-build" "0.1.1"))
> +           (uri (crate-uri "hamcrest" "0.1.1"))
>             (sha256
> -            (base32
> -             "1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d"))))
> -       ("rust-advapi32-sys"
> +            (base16-string->bytevector
> +             "bf088f042a467089e9baa4972f57f9247e42a0cc549ba264c7a04fbb8ecb89d4"))))
> +       ("rust-hex"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "advapi32-sys" "0.2.0"))
> +           (uri (crate-uri "hex" "0.2.0"))
>             (sha256
> -            (base32
> -             "16largvlrd1800vvdchml0ngnszjlnpqm01rcz5hm7di1h48hrg0"))))
> -       ("rust-gdi32-sys"
> +            (base16-string->bytevector
> +             "d6a22814455d41612f41161581c2883c0c6a1c41852729b17d5ed88f01e153aa"))))
> +       ("rust-home"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "gdi32-sys" "0.2.0"))
> +           (uri (crate-uri "home" "0.3.0"))
>             (sha256
> -            (base32
> -             "0605d4ngjsspghwjv4jicajich1gnl0aik9f880ajjzjixd524h9"))))
> -       ("rust-ws2_32-sys"
> +            (base16-string->bytevector
> +             "9f25ae61099d8f3fee8b483df0bd4ecccf4b2731897aad40d50eca1b641fe6db"))))
> +       ("rust-idna"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "ws2_32-sys" "0.2.1"))
> +           (uri (crate-uri "idna" "0.1.4"))
>             (sha256
> -            (base32
> -             "0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m"))))
> -       ("rust-user32-sys"
> +            (base16-string->bytevector
> +             "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d"))))
> +       ("rust-ignore"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "user32-sys" "0.2.0"))
> +           (uri (crate-uri "ignore" "0.2.2"))
>             (sha256
> -            (base32
> -             "0ivxc7hmsxax9crdhxdd1nqwik4s9lhb2x59lc8b88bv20fp3x2f"))))
> -       ("rust-unicode-bidi"
> +            (base16-string->bytevector
> +             "b3fcaf2365eb14b28ec7603c98c06cc531f19de9eb283d89a3dff8417c8c99f5"))))
> +       ("rust-itoa"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "itoa" "0.3.4"))
> +           (sha256
> +            (base16-string->bytevector
> +             "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"))))
> +       ("rust-jobserver"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "jobserver" "0.1.6"))
> +           (sha256
> +            (base16-string->bytevector
> +             "443ae8bc0af6c106e6e8b77e04684faecc1a5ce94e058f4c2b0a037b0ea1b133"))))
> +       ("rust-kernel32-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "kernel32-sys" "0.2.2"))
> +           (sha256
> +            (base16-string->bytevector
> +             "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"))))
> +       ("rust-lazy_static"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "lazy_static" "0.2.9"))
> +           (sha256
> +            (base16-string->bytevector
> +             "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5"))))
> +       ("rust-libc"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "libc" "0.2.31"))
> +           (sha256
> +            (base16-string->bytevector
> +             "d1419b2939a0bc44b77feb34661583c7546b532b192feab36249ab584b86856c"))))
> +       ("rust-libgit2-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "libgit2-sys" "0.6.16"))
> +           (sha256
> +            (base16-string->bytevector
> +             "6f74b4959cef96898f5123148724fc7dee043b9a6b99f219d948851bfbe53cb2"))))
> +       ("rust-libssh2-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "libssh2-sys" "0.2.6"))
> +           (sha256
> +            (base16-string->bytevector
> +             "0db4ec23611747ef772db1c4d650f8bd762f07b461727ec998f953c614024b75"))))
> +       ("rust-libz-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "libz-sys" "1.0.17"))
> +           (sha256
> +            (base16-string->bytevector
> +             "44ebbc760fd2d2f4d93de09a0e13d97e057612052e871da9985cedcb451e6bd5"))))
> +       ("rust-log"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "log" "0.3.8"))
> +           (sha256
> +            (base16-string->bytevector
> +             "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"))))
> +       ("rust-magenta"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "unicode-bidi" "0.2.3"))
> +           (uri (crate-uri "magenta" "0.1.1"))
>             (sha256
> -            (base32
> -             "0gqbyf6slkgzr14nf6v8dw8a19l5snh6bpms8bpfvzpxdawwxxy1"))))
> +            (base16-string->bytevector
> +             "4bf0336886480e671965f794bc9b6fce88503563013d1bfb7a502c81fe3ac527"))))
> +       ("rust-magenta-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "magenta-sys" "0.1.1"))
> +           (sha256
> +            (base16-string->bytevector
> +             "40d014c7011ac470ae28e2f76a02bfea4a8480f73e701353b49ad7a8d75f4699"))))
> +       ("rust-matches"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "matches" "0.1.6"))
> +           (sha256
> +            (base16-string->bytevector
> +             "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"))))
> +       ("rust-memchr"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "memchr" "0.1.11"))
> +           (sha256
> +            (base16-string->bytevector
> +             "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"))))
> +       ("rust-memchr-1.0.1"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "memchr" "1.0.1"))
> +           (sha256
> +            (base16-string->bytevector
> +             "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"))))
> +       ("rust-miniz-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "miniz-sys" "0.1.10"))
> +           (sha256
> +            (base16-string->bytevector
> +             "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4"))))
> +       ("rust-miow"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "miow" "0.2.1"))
> +           (sha256
> +            (base16-string->bytevector
> +             "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"))))
>         ("rust-net2"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "net2" "0.2.26"))
> +           (uri (crate-uri "net2" "0.2.31"))
>             (sha256
> -            (base32
> -             "1qp3q6xynb481rsp3ig1nmqb6qlxfba3shfrmqij88cppsv9rpsy"))))
> -       ("rust-utf8-ranges"
> +            (base16-string->bytevector
> +             "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09"))))
> +       ("rust-num"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "utf8-ranges" "0.1.3"))
> +           (uri (crate-uri "num" "0.1.40"))
>             (sha256
> -            (base32
> -             "03xf604b2v51ag3jgzw92l97xnb10kw9zv948bhc7ja1ik017jm1"))))
> -       ("rust-crossbeam"
> +            (base16-string->bytevector
> +             "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525"))))
> +       ("rust-num-bigint"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "crossbeam" "0.2.10"))
> +           (uri (crate-uri "num-bigint" "0.1.40"))
>             (sha256
> -            (base32
> -             "15wga0kvk3iqf3l077957j931brf1pl3p74xibd698jccqas4phc"))))
> -       ("rust-toml"
> +            (base16-string->bytevector
> +             "8fd0f8dbb4c0960998958a796281d88c16fbe68d87b1baa6f31e2979e81fd0bd"))))
> +       ("rust-num-complex"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "toml" "0.2.1"))
> +           (uri (crate-uri "num-complex" "0.1.40"))
>             (sha256
> -            (base32
> -             "1d1cz43bxrx4fd6j2p6myckf81f72bp47akg36y3flxjkhj60svk"))))
> -       ("rust-aho-corasick"
> +            (base16-string->bytevector
> +             "503e668405c5492d67cf662a81e05be40efe2e6bcf10f7794a07bd9865e704e6"))))
> +       ("rust-num-integer"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "aho-corasick" "0.5.3"))
> +           (uri (crate-uri "num-integer" "0.1.35"))
> +           (sha256
> +            (base16-string->bytevector
> +             "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba"))))
> +       ("rust-num-iter"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "num-iter" "0.1.34"))
> +           (sha256
> +            (base16-string->bytevector
> +             "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01"))))
> +       ("rust-num-rational"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "num-rational" "0.1.39"))
> +           (sha256
> +            (base16-string->bytevector
> +             "288629c76fac4b33556f4b7ab57ba21ae202da65ba8b77466e6d598e31990790"))))
> +       ("rust-num-traits"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "num-traits" "0.1.40"))
> +           (sha256
> +            (base16-string->bytevector
> +             "99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0"))))
> +       ("rust-num_cpus"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "num_cpus" "1.7.0"))
> +           (sha256
> +            (base16-string->bytevector
> +             "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d"))))
> +       ("rust-openssl"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "openssl" "0.9.19"))
> +           (sha256
> +            (base16-string->bytevector
> +             "816914b22eb15671d62c73442a51978f311e911d6a6f6cbdafa6abce1b5038fc"))))
> +       ("rust-openssl-probe"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "openssl-probe" "0.1.1"))
> +           (sha256
> +            (base16-string->bytevector
> +             "d98df0270d404ccd3c050a41d579c52d1db15375168bb3471e04ec0f5f378daf"))))
> +       ("rust-openssl-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "openssl-sys" "0.9.19"))
> +           (sha256
> +            (base16-string->bytevector
> +             "1e4c63a7d559c1e5afa6d6a9e6fa34bbc5f800ffc9ae08b72c605420b0c4f5e8"))))
> +       ("rust-percent-encoding"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "percent-encoding" "1.0.0"))
> +           (sha256
> +            (base16-string->bytevector
> +             "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"))))
> +       ("rust-pkg-config"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "pkg-config" "0.3.9"))
>             (sha256
> -            (base32
> -             "0rnvdmlajikq0i4zdy1p3pv699q6apvsxfc7av7byhppllp2r5ya"))))
> +            (base16-string->bytevector
> +             "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"))))
>         ("rust-psapi-sys"
>          ,(origin
>             (method url-fetch)
>             (uri (crate-uri "psapi-sys" "0.1.0"))
>             (sha256
> -            (base32
> -             "0y14g8qshsfnmb7nk2gs1rpbrs1wrggajmzp4yby4q6k0wd5vkdb"))))
> -       ("rust-idna"
> +            (base16-string->bytevector
> +             "abcd5d1a07d360e29727f757a9decb3ce8bc6e0efa8969cfaad669a8317a2478"))))
> +       ("rust-quote"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "idna" "0.1.0"))
> +           (uri (crate-uri "quote" "0.3.15"))
>             (sha256
> -            (base32
> -             "049c2rmlydrrrgrxdaq2v21adx9vkfh6k9x4xj56ckyf01p26lqh"))))
> -       ("rust-url"
> +            (base16-string->bytevector
> +             "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"))))
> +       ("rust-rand"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "rand" "0.3.16"))
> +           (sha256
> +            (base16-string->bytevector
> +             "eb250fd207a4729c976794d03db689c9be1d634ab5a1c9da9492a13d8fecbcdf"))))
> +       ("rust-redox_syscall"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "redox_syscall" "0.1.31"))
> +           (sha256
> +            (base16-string->bytevector
> +             "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509"))))
> +       ("rust-redox_termios"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "redox_termios" "0.1.1"))
> +           (sha256
> +            (base16-string->bytevector
> +             "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"))))
> +       ("rust-regex"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "regex" "0.1.80"))
> +           (sha256
> +            (base16-string->bytevector
> +             "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"))))
> +       ("rust-regex-0.2.2"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "url" "1.2.3"))
> +           (uri (crate-uri "regex" "0.2.2"))
>             (sha256
> -            (base32
> -             "1myr1i8djbl2bhvvrm6n3h7bj7sl6kh5dmaaz2f7c6x8hyyzgk28"))))
> +            (base16-string->bytevector
> +             "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"))))
>         ("rust-regex-syntax"
>          ,(origin
>             (method url-fetch)
>             (uri (crate-uri "regex-syntax" "0.3.9"))
>             (sha256
> -            (base32
> -             "0ms9hgdhhsxw9w920i7gipydvagf100bb56jbs192rz86ln01v7r"))))
> -       ("rust-kernel32-sys"
> +            (base16-string->bytevector
> +             "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"))))
> +       ("rust-regex-syntax-0.4.1"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "kernel32-sys" "0.2.2"))
> +           (uri (crate-uri "regex-syntax" "0.4.1"))
>             (sha256
> -            (base32
> -             "1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm"))))
> -       ("rust-term"
> +            (base16-string->bytevector
> +             "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"))))
> +       ("rust-rustc-demangle"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "term" "0.4.4"))
> +           (uri (crate-uri "rustc-demangle" "0.1.5"))
>             (sha256
> -            (base32
> -             "0jpr7jb1xidadh0arklwr99r8w1k1dfc4an3ginpsq5nnfigivrx"))))
> -       ("rust-thread-id"
> +            (base16-string->bytevector
> +             "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e"))))
> +       ("rust-rustc-serialize"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "thread-id" "2.0.0"))
> +           (uri (crate-uri "rustc-serialize" "0.3.24"))
>             (sha256
> -            (base32
> -             "00zzs2bx1xw8aqm5plqqgr7bc2zz6zkqrdxq8vpiqb8hc2srslx9"))))
> -       ("rust-thread_local"
> +            (base16-string->bytevector
> +             "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"))))
> +       ("rust-same-file"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "thread_local" "0.2.7"))
> +           (uri (crate-uri "same-file" "0.1.3"))
>             (sha256
> -            (base32
> -             "1mgxikqvhpsic6xk7pan95lvgsky1sdxzw2w5m2l35pgrazxnxl5"))))
> -       ("rust-miow"
> +            (base16-string->bytevector
> +             "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7"))))
> +       ("rust-scoped-tls"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "miow" "0.1.3"))
> +           (uri (crate-uri "scoped-tls" "0.1.0"))
>             (sha256
> -            (base32
> -             "16jvfjsp6fr4mbd2sw5hcdmi4dsa0m0aa45gjz78mb1h4mwcdgym"))))
> -       ("rust-regex"
> +            (base16-string->bytevector
> +             "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"))))
> +       ("rust-scopeguard"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "regex" "0.1.80"))
> +           (uri (crate-uri "scopeguard" "0.1.2"))
>             (sha256
> -            (base32
> -             "0bs036h3vzc6pj5jj4vc909s9rppq7b808ic99qn0y6gm3karm2g"))))
> -       ("rust-num_cpus"
> +            (base16-string->bytevector
> +             "59a076157c1e2dc561d8de585151ee6965d910dd4dcb5dabb7ae3e83981a6c57"))))
> +       ("rust-semver"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "num_cpus" "1.1.0"))
> +           (uri (crate-uri "semver" "0.8.0"))
>             (sha256
> -            (base32
> -             "1bfwcn3yhwa31rinjw9yr7b6gvn6c06hnwnjz06pvm938w4fd448"))))
> -       ("rust-libgit2-sys"
> +            (base16-string->bytevector
> +             "bee2bc909ab2d8d60dab26e8cad85b25d795b14603a0dcb627b78b9d30b6454b"))))
> +       ("rust-semver-parser"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "libgit2-sys" "0.6.6"))
> +           (uri (crate-uri "semver-parser" "0.7.0"))
>             (sha256
> -            (base32
> -             "074h9q4p60xh6canb0sj4vrc801wqv6p53l9lp0q724bkwzf7967"))))
> -       ("rust-env_logger"
> +            (base16-string->bytevector
> +             "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"))))
> +       ("rust-serde"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "env_logger" "0.3.5"))
> +           (uri (crate-uri "serde" "1.0.15"))
>             (sha256
> -            (base32
> -             "0bvcjgkw4s3k1rd7glpflgc8s9a393zjd6jfdgvs8gjvwj0dgaqm"))))
> -       ("rust-openssl-probe"
> +            (base16-string->bytevector
> +             "6a7046c9d4c6c522d10b2d098f9bebe2bef227e0e74044d8c1bfcf6b476af799"))))
> +       ("rust-serde_derive"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "openssl-probe" "0.1.0"))
> +           (uri (crate-uri "serde_derive" "1.0.15"))
>             (sha256
> -            (base32
> -             "0689h6rhzy6dypqr90lsxnf108nsnh952wsx7ggs70s48b44jvbm"))))
> -       ("rust-lazy_static"
> +            (base16-string->bytevector
> +             "1afcaae083fd1c46952a315062326bc9957f182358eb7da03b57ef1c688f7aa9"))))
> +       ("rust-serde_derive_internals"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "lazy_static" "0.2.2"))
> +           (uri (crate-uri "serde_derive_internals" "0.16.0"))
>             (sha256
> -            (base32
> -             "16z1h7w702sxnscak38jykxlhxq0b5ip4mndlb46pkaqwzi0xgka"))))
> -       ("rust-semver-parser"
> +            (base16-string->bytevector
> +             "bd381f6d01a6616cdba8530492d453b7761b456ba974e98768a18cad2cd76f58"))))
> +       ("rust-serde_ignored"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "semver-parser" "0.6.1"))
> +           (uri (crate-uri "serde_ignored" "0.0.4"))
>             (sha256
> -            (base32
> -             "1s8s7a7yg8xhgci17y0xhyyncg229byivhpr0wbs3ljdlyjl73p8"))))
> -       ("rust-semver"
> +            (base16-string->bytevector
> +             "190e9765dcedb56be63b6e0993a006c7e3b071a016a304736e4a315dc01fb142"))))
> +       ("rust-serde_json"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "semver" "0.5.1"))
> +           (uri (crate-uri "serde_json" "1.0.3"))
>             (sha256
> -            (base32
> -             "1xbiv8l72rmngb3lgbmk3vd4lalcbzxcnrn085c2b75irl7gcbxf"))))
> -       ("rust-docopt"
> +            (base16-string->bytevector
> +             "d243424e06f9f9c39e3cd36147470fd340db785825e367625f79298a6ac6b7ac"))))
> +       ("rust-shell-escape"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "shell-escape" "0.1.3"))
> +           (sha256
> +            (base16-string->bytevector
> +             "dd5cc96481d54583947bfe88bf30c23d53f883c6cd0145368b69989d97b84ef8"))))
> +       ("rust-socket2"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "docopt" "0.6.86"))
> +           (uri (crate-uri "socket2" "0.2.3"))
>             (sha256
> -            (base32
> -             "1nf4f4zf5yk0d0l4kl7hkii4na22fhn0l2hgfb46yzv08l2g6zja"))))
> -       ("rust-miniz-sys"
> +            (base16-string->bytevector
> +             "9e76b159741052c7deaa9fd0b5ca6b5f79cecf525ed665abfe5002086c6b2791"))))
> +       ("rust-strsim"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "miniz-sys" "0.1.7"))
> +           (uri (crate-uri "strsim" "0.6.0"))
>             (sha256
> -            (base32
> -             "0m7dlggsxash0k5jkx576p556g9r8vnhyl9244gjxhq1g8rls7wx"))))
> -       ("rust-curl"
> +            (base16-string->bytevector
> +             "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694"))))
> +       ("rust-syn"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "curl" "0.4.1"))
> +           (uri (crate-uri "syn" "0.11.11"))
>             (sha256
> -            (base32
> -             "1b0y27b6vpqffgzm2kxc1s2i6bgdzxk3wn65g2asbcdxrvys3mcg"))))
> -       ("rust-flate2"
> +            (base16-string->bytevector
> +             "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"))))
> +       ("rust-synom"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "flate2" "0.2.14"))
> +           (uri (crate-uri "synom" "0.11.3"))
>             (sha256
> -            (base32
> -             "1fx3zsls5bb1zfx87s5sxkgk853z4nhjsbvq5s6if13kjlg4isry"))))
> -       ("rust-git2"
> +            (base16-string->bytevector
> +             "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"))))
> +       ("rust-tar"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "git2" "0.6.3"))
> +           (uri (crate-uri "tar" "0.4.13"))
>             (sha256
> -            (base32
> -             "06b1bw3pwszs8617xn8js6h0j983qjgfwsychw33lshccj3cld05"))))
> -       ("rust-crates-io"
> +            (base16-string->bytevector
> +             "281285b717926caa919ad905ef89c63d75805c7d89437fb873100925a53f2b1b"))))
> +       ("rust-tempdir"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "crates-io" "0.4.0"))
> +           (uri (crate-uri "tempdir" "0.3.5"))
>             (sha256
> -            (base32
> -             "0kk6abp1qbpv44hkq1yjp7xgpzjzafs83i1l26ycr0aph1gbwig9"))))
> -       ("rust-git2-curl"
> +            (base16-string->bytevector
> +             "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"))))
> +       ("rust-termcolor"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "git2-curl" "0.7.0"))
> +           (uri (crate-uri "termcolor" "0.3.3"))
>             (sha256
> -            (base32
> -             "13mzqp4rd81zp78261rlq23iw9aaysdr56484y1yy2xzhk3nnrv8"))))
> -       ("rust-bufstream"
> +            (base16-string->bytevector
> +             "9065bced9c3e43453aa3d56f1e98590b8455b341d2fa191a1090c0dd0b242c75"))))
> +       ("rust-termion"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "bufstream" "0.1.2"))
> +           (uri (crate-uri "termion" "1.5.1"))
>             (sha256
> -            (base32
> -             "0x6h27md1fwabbhbycfldj0wklrpjr520z9p0cpzm60fzzidnj3v"))))
> -       ("rust-hamcrest"
> +            (base16-string->bytevector
> +             "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"))))
> +       ("rust-thread-id"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "hamcrest" "0.1.1"))
> +           (uri (crate-uri "thread-id" "2.0.0"))
>             (sha256
> -            (base32
> -             "1m49rf7bnkx0qxja56slrjh44zi4z5bjz5x4pblqjw265828y25z"))))
> -       ("rust-num"
> +            (base16-string->bytevector
> +             "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"))))
> +       ("rust-thread_local"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "num" "0.1.36"))
> +           (uri (crate-uri "thread_local" "0.2.7"))
>             (sha256
> -            (base32
> -             "081i1r3mdz6jasqd7qwraqqfqa3sdpvdvxl1xq0s7ip714xw1rxx"))))
> -       ("rust-num-traits"
> +            (base16-string->bytevector
> +             "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"))))
> +       ("rust-thread_local-0.3.4"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "num-traits" "0.1.36"))
> +           (uri (crate-uri "thread_local" "0.3.4"))
>             (sha256
> -            (base32
> -             "07688sp4z40p14lh5ywvrpm4zq8kcxzhjks8sg33jsr5da2l4sm1"))))
> -       ("rust-num-integer"
> +            (base16-string->bytevector
> +             "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14"))))
> +       ("rust-toml"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "num-integer" "0.1.32"))
> +           (uri (crate-uri "toml" "0.4.5"))
>             (sha256
> -            (base32
> -             "14pvaaawl0pgdcgh4dfdd67lz58yxlfl95bry86h28pjnfzxj97v"))))
> -       ("rust-num-bigint"
> +            (base16-string->bytevector
> +             "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"))))
> +       ("rust-unicode-bidi"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "num-bigint" "0.1.35"))
> +           (uri (crate-uri "unicode-bidi" "0.3.4"))
>             (sha256
> -            (base32
> -             "0jayfkdm33p4zvcahlv46zdfhlzg053mpw32abf2lz0z8xw47cc8"))))
> -       ("rust-num-rational"
> +            (base16-string->bytevector
> +             "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"))))
> +       ("rust-unicode-normalization"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "num-rational" "0.1.35"))
> +           (uri (crate-uri "unicode-normalization" "0.1.5"))
>             (sha256
> -            (base32
> -             "1bwaygv64qg7i78yqg0v4d0amfhamj598rpy4yxjz9rlhcxn1zsl"))))
> -       ("rust-num-iter"
> +            (base16-string->bytevector
> +             "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"))))
> +       ("rust-unicode-xid"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "num-iter" "0.1.32"))
> +           (uri (crate-uri "unicode-xid" "0.0.4"))
>             (sha256
> -            (base32
> -             "0p74nj5c1mc33h9lx4wpmlmggmn5lnkhxv1225g0aix8d6ciqyi8"))))
> -       ("rust-num-complex"
> +            (base16-string->bytevector
> +             "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"))))
> +       ("rust-unreachable"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "num-complex" "0.1.35"))
> +           (uri (crate-uri "unreachable" "1.0.0"))
>             (sha256
> -            (base32
> -             "0bzrjfppnnzf9vmkpklhp2dw9sb1lqzydb8r6k83z76i9l2qxizh"))))
> -       ("rust-shell-escape"
> +            (base16-string->bytevector
> +             "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"))))
> +       ("rust-url"
>          ,(origin
>             (method url-fetch)
> -           (uri (crate-uri "shell-escape" "0.1.3"))
> +           (uri (crate-uri "url" "1.5.1"))
> +           (sha256
> +            (base16-string->bytevector
> +             "eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"))))
> +       ("rust-userenv-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "userenv-sys" "0.2.0"))
> +           (sha256
> +            (base16-string->bytevector
> +             "71d28ea36bbd9192d75bd9fa9b39f96ddb986eaee824adae5d53b6e51919b2f3"))))
> +       ("rust-utf8-ranges"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "utf8-ranges" "0.1.3"))
> +           (sha256
> +            (base16-string->bytevector
> +             "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"))))
> +       ("rust-utf8-ranges-1.0.0"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "utf8-ranges" "1.0.0"))
> +           (sha256
> +            (base16-string->bytevector
> +             "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"))))
> +       ("rust-vcpkg"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "vcpkg" "0.2.2"))
> +           (sha256
> +            (base16-string->bytevector
> +             "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"))))
> +       ("rust-void"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "void" "1.0.2"))
> +           (sha256
> +            (base16-string->bytevector
> +             "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"))))
> +       ("rust-walkdir"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "walkdir" "1.0.7"))
> +           (sha256
> +            (base16-string->bytevector
> +             "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"))))
> +       ("rust-winapi"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "winapi" "0.2.8"))
>             (sha256
> -            (base32
> -             "1y2fp2brv639icv4a0fdqs1zhlrxq8qbz27ygfa86ifmh5jcjp6x"))))))
> +            (base16-string->bytevector
> +             "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"))))
> +       ("rust-winapi-build"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "winapi-build" "0.1.1"))
> +           (sha256
> +            (base16-string->bytevector
> +             "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"))))
> +       ("rust-wincolor"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "wincolor" "0.1.4"))
> +           (sha256
> +            (base16-string->bytevector
> +             "a39ee4464208f6430992ff20154216ab2357772ac871d994c51628d60e58b8b0"))))
> +       ("rust-ws2_32-sys"
> +        ,(origin
> +           (method url-fetch)
> +           (uri (crate-uri "ws2_32-sys" "0.2.1"))
> +           (sha256
> +            (base16-string->bytevector
> +             "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"))))))
>      (arguments
>       `(#:cargo ,cargo-bootstrap
> -       #:tests? #f ; FIXME
> +       #:rustc ,rustc ; Force to use rustc from current file
>         #:modules
>         ((ice-9 match)
>          (srfi srfi-1) ; 'every
> @@ -853,12 +1262,8 @@ safety and thread safety guarantees.")
>          (guix build cargo-build-system))
>         #:phases
>         (modify-phases %standard-phases
> -         ;; Avoid cargo complaining about missmatched checksums.
> -         (delete 'patch-source-shebangs)
> -         (delete 'patch-generated-file-shebangs)
> -         (delete 'patch-usr-bin-file)
> -         (add-after 'unpack 'unpack-submodule-sources
> -           (lambda* (#:key inputs #:allow-other-keys)
> +         (add-after 'unpack 'unpack-dependencies
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
>               (define (unpack source target)
>                 (mkdir-p target)
>                 (with-directory-excursion target
> @@ -871,37 +1276,56 @@ safety and thread safety guarantees.")
>                 (match entry
>                   ((name . src)
>                    (if (string-prefix? "rust-" name)
> -                    (let* ((rust-length (string-length "rust-"))
> -                           (rust-name (string-drop name
> -                                                   rust-length))
> -                           (rsrc (string-append "vendor/"
> -                                                rust-name))
> -                           (unpack-status (unpack src rsrc)))
> -                      (touch (string-append rsrc "/.cargo-ok"))
> -                      (generate-checksums rsrc src)
> -                      unpack-status)))
> +                      (let* ((rust-length (string-length "rust-"))
> +                             (rust-name (string-drop name rust-length))
> +                             (rsrc (string-append "vendor/" rust-name))
> +                             (unpack-status (unpack src rsrc)))
> +                        (touch (string-append rsrc "/.cargo-ok"))
> +                        (generate-checksums rsrc src)
> +                        unpack-status)))
>                   (_ #t)))
> -               (mkdir "vendor")
> -               (every install-rust-library inputs)))
> -         (add-after 'unpack 'set-environment-up
> +             (mkdir "vendor")
> +             (every install-rust-library inputs)))
> +         (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
>             (lambda* (#:key inputs #:allow-other-keys)
> -             (let* ((gcc (assoc-ref inputs "gcc"))
> -                    (cc (string-append gcc "/bin/gcc")))
> -               (mkdir ".cargo")
> -               (call-with-output-file ".cargo/config"
> -                 (lambda (p)
> -                   (format p "
> +             (substitute* "Cargo.lock"
> +               (("(\"checksum .* = )\".*\"" all name)
> +                (string-append name "\"" ,%cargo-reference-hash "\"")))
> +             (for-each
> +              (lambda (filename)
> +                (use-modules (guix build cargo-build-system))
> +                (delete-file filename)
> +                (let* ((dir (dirname filename)))
> +                  (display (string-append
> +                            "patch-cargo-checksums: generate-checksums for "
> +                            dir "\n"))
> +                  (generate-checksums dir ,%cargo-reference-project-file)))
> +              (find-files "vendor" ".cargo-checksum.json"))))
> +         (replace 'configure
> +           (lambda* (#:key inputs outputs #:allow-other-keys)
> +             (substitute* "tests/build.rs"
> +               (("/usr/bin/env") (which "env"))
> +               ;; Guix llvm compiled without asmjs-unknown-emscripten at all
> +               (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
> +             (substitute* "tests/death.rs"
> +               ;; Stuck when built in container
> +               (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
> +             (mkdir ".cargo")
> +             (call-with-output-file ".cargo/config"
> +               (lambda (port)
> +                 (display "
>  [source.crates-io]
>  registry = 'https://github.com/rust-lang/crates.io-index'
>  replace-with = 'vendored-sources'
>  
>  [source.vendored-sources]
>  directory = 'vendor'
> -")))
> -               (setenv "CMAKE_C_COMPILER" cc)
> -               (setenv "CC" cc))
> -             #t))
> -         (delete 'configure))))
> +" port)))
> +             ;; Disable test for cross compilation support
> +             (setenv "CFG_DISABLE_CROSS_TESTS" "1")
> +             (setenv "SHELL" (which "sh"))
> +             (setenv "CONFIG_SHELL" (which "sh"))
> +             (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")))))))
>      (home-page "https://github.com/rust-lang/cargo")
>      (synopsis "Build tool and package manager for Rust")
>      (description "Cargo is a tool that allows Rust projects to declare their
> -- 
> 2.15.0
> 


-- 
GnuPG: A88C8ADD129828D7EAC02E52E22F9BBFEE348588
GnuPG: https://c.n0.is/ng0_pubkeys/tree/keys
  WWW: https://n0.is

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#29555] [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
  2017-12-03 19:01 [bug#29555] [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0 Nikolai Merinov
  2017-12-04  7:02 ` ng0
@ 2017-12-04 14:33 ` Jelle Licht
  2017-12-04 14:54   ` Nikolai Merinov
  1 sibling, 1 reply; 8+ messages in thread
From: Jelle Licht @ 2017-12-04 14:33 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: 29555

[-- Attachment #1: Type: text/plain, Size: 563 bytes --]

2017-12-03 20:01 GMT+01:00 Nikolai Merinov <nikolai.merinov@member.fsf.org>:

> Update for a rustc and cargo packages. This update will also fix a
> build.
>
>
I do not have enough know-how to properly review your patch, but at least I
can verify it seems to work.
I was able to build rustc and cargo succesfully with your patches, and was
able to build and run a trivial hello world program written in rust.
When this patch is merged,  I think we can also close
http://lists.gnu.org/archive/html/bug-guix/2017-12/msg00006.html, as it
will no longer be relevant.

[-- Attachment #2: Type: text/html, Size: 1030 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#29555] [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
  2017-12-04 14:33 ` Jelle Licht
@ 2017-12-04 14:54   ` Nikolai Merinov
  2017-12-04 16:05     ` Danny Milosavljevic
  0 siblings, 1 reply; 8+ messages in thread
From: Nikolai Merinov @ 2017-12-04 14:54 UTC (permalink / raw)
  To: Jelle Licht; +Cc: 29522, 29555

[-- Attachment #1: Type: text/plain, Size: 905 bytes --]

I added "-lstdc++" to rust standard lib to overcome issue. Which solution is better: 
1. change link flags for rust standard library, or
2. create rust-specific jemalloc as suggested in #29522?

4 декабря 2017 г. 19:33:31 GMT+05:00, Jelle Licht <jlicht@fsfe.org> пишет:
>2017-12-03 20:01 GMT+01:00 Nikolai Merinov
><nikolai.merinov@member.fsf.org>:
>
>> Update for a rustc and cargo packages. This update will also fix a
>> build.
>>
>>
>I do not have enough know-how to properly review your patch, but at
>least I
>can verify it seems to work.
>I was able to build rustc and cargo succesfully with your patches, and
>was
>able to build and run a trivial hello world program written in rust.
>When this patch is merged,  I think we can also close
>http://lists.gnu.org/archive/html/bug-guix/2017-12/msg00006.html, as it
>will no longer be relevant.

-- 
Nikolai Merinov

[-- Attachment #2: Type: text/html, Size: 1610 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#29555] [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
  2017-12-04 14:54   ` Nikolai Merinov
@ 2017-12-04 16:05     ` Danny Milosavljevic
       [not found]       ` <87o9ndn1rm.fsf@member.fsf.org>
  0 siblings, 1 reply; 8+ messages in thread
From: Danny Milosavljevic @ 2017-12-04 16:05 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: 29522, 29555

Hi,

On Mon, 04 Dec 2017 19:54:13 +0500
Nikolai Merinov <nikolai.merinov@member.fsf.org> wrote:

> I added "-lstdc++" to rust standard lib to overcome issue. Which solution is better: 
> 1. change link flags for rust standard library, or

Sounds hacky and I'm not sure why it helps or whether it will keep working.

> 2. create rust-specific jemalloc as suggested in #29522?

I vote for using a rust-specific jemalloc without the C++ parts (named "jemalloc-without-c++" or something, it just has to pass a flag to "configure").  It's smaller, too.  Any downsides?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#29555] [PATCHv3] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
       [not found]       ` <87o9ndn1rm.fsf@member.fsf.org>
@ 2017-12-09 23:16         ` Nikolai Merinov
  2017-12-10  9:27           ` Danny Milosavljevic
  0 siblings, 1 reply; 8+ messages in thread
From: Nikolai Merinov @ 2017-12-09 23:16 UTC (permalink / raw)
  To: 29555; +Cc: adam

[-- Attachment #1: Type: text/plain, Size: 2786 bytes --]

Hi,

Please find last update for patch that update rust and cargo in attachements.

Changes from last time:
1. Replaced jemalloc to 4.5.0 release according to
https://lists.gnu.org/archive/html/bug-guix/2017-12/msg00048.html
2. Added code that reset timestamps for rust build. When we change files
(through "substitute*" or with any other methods) their mtime changes,
but mtimes influent packages fingerprint and, as result,
"rust.metadata.bin" in "liblibc-<hash>.rlib" become not reproducible. 

Currently rustc build is reproducable.

Full list of changes from rustc 1.16:

1. Added GDB as test dependency
2. Added LLVM_LINK_SHARED environment variable to link with shared llvm
libraries (because there is no static libraries in guix llvm-3.9.1
package
3. rustc in 1.22.1 release try to find "ar" binary in same directory as
"gcc", but there is only "gcc-ar" in such place. *NOTE*: In next rust
release function "cc2ar" will be removed from and this "substitute*" will
be replaced with new option in config.toml
4. Ignored new test "connect_timeout_unroutable". This test failed in
container because there is no network.
5. Fixed bug in "up_to_date" function in "src/build_helper/lib.rs". This
fix already merged to rust repo in "master" branch.
6. Allow to fix shebangs in vendored sources. For this purpose was added
"patch-cargo-checksums" task that recreate ".cargo-checksum.json" for
all vendored sources and patch "src/Cargo.lock" to use patched vendored
sources.
7. Configuration performed through "config.toml" file instead of
obsolete "./configre" script.
8. Codegen tests was disabled, because 2 tests codegen/mainsubprogram.rs
and codegen/mainsubprogramstart.rs created for llvm with patch
backported from llvm 4.
9. After all this changes timestamps for sources resetted to achieve
reproducable build.
10. Build, test and installation preformed through new "./x.py" script
instead of obsolet makefiles generated by "./configure".

Full list of changes from cargo 1.17:
1. Tests was enabled!
2. New dependency for tests "git" utility.
3. Rust dependencies was updated from actual cargo's "Cargo.lock" file.
4. Return all "patch-*-shebngs" tasks. Without this patches some of
cargo dependencies fail to compile.
5. Recalculate ".cargo-checksum.json" files for all patched vendored
sources and update "Cargo.lock" to use this patched vendored sources.
6. Patch usage of "/usr/bin/env" in tests.
7. Disable next tests:
   * "wasm32_final_outputs" failed to call llvm for
   "asmjs-unknown-emscripten" architecture.
   * "ctrl_c_kills_everyone" fail in container because of network.
   * Added "CFG_DISABLE_CROSS_TESTS" to disable cross-compilation
   tests. Not fully understand issue with this tests, but according to
   cargo sources "This failure can be safely ignored".


[-- Attachment #2: 0001-gnu-rust-update-rust-to-1.22.1-and-cargo-to-1.23.0.patch --]
[-- Type: text/x-patch, Size: 70621 bytes --]

From 0ea0b787e6d2c69605f6c72404e8b37d4617e97b Mon Sep 17 00:00:00 2001
From: Nikolay Merinov <nikolay.merinov@member.fsf.org>
Date: Sun, 3 Dec 2017 19:55:24 +0500
Subject: [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
To: guix-patches@gnu.org

* gnu/packages/rust.scm (%rust-bootstrap-binaries-version): update version
(%rust-bootstrap-binaries): use x86_64 rust bootstrap package for x86_64 build
(%cargo-reference-project-file): Use specific file as "project" file when
patching rust vendored sources
(%cargo-reference-hash): sha256 sum for %cargo-reference-project-file
(rustc-bootstrap): use bootstrap package with host architecture
(cargo-bootstrap): use bootstrap package with host architecture
(rustc): Add new test dependency, fix build issues, use "./x.py" script for
build instead of "./configure"
(cargo): Update dependencies, patch shebangs for vendored sources
* gnu/packages/jemalloc.scm: add jemalloc-4.5.0 release
---
 gnu/packages/jemalloc.scm |   15 +
 gnu/packages/rust.scm     | 1186 ++++++++++++++++++++++++++++++---------------
 2 files changed, 820 insertions(+), 381 deletions(-)

diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm
index a3bd2c93a..5e3e32df8 100644
--- a/gnu/packages/jemalloc.scm
+++ b/gnu/packages/jemalloc.scm
@@ -23,6 +23,7 @@
   #:use-module ((guix licenses) #:select (bsd-2))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (gnu packages perl)
   #:use-module (guix build-system gnu))
 
@@ -62,3 +63,17 @@
      "This library providing a malloc(3) implementation that emphasizes
 fragmentation avoidance and scalable concurrency support.")
     (license bsd-2)))
+
+(define-public jemalloc-4.5.0
+  (package
+    (inherit jemalloc)
+    (version "4.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/jemalloc/jemalloc/releases/download/"
+                    version "/jemalloc-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "10373xhpc10pgmai9fkc1z0rs029qlcb3c0qfnvkbwdlcibdh2cl"))))
+    (inputs '())))
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 583ea37c8..0edd4114a 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
 ;;; Copyright © 2016 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017 Nikolai Merinov <nikolai.merinov@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gdb)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -37,17 +39,19 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages)
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
+  #:use-module (guix base16)      ;for generated "cargo" native-inputs
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-26))
 
 ;; Should be one less than the current released version.
-(define %rust-bootstrap-binaries-version "1.15.0")
+(define %rust-bootstrap-binaries-version "1.21.0")
 
 (define %rust-bootstrap-binaries
   (origin
@@ -55,10 +59,18 @@
     (uri (string-append
           "https://static.rust-lang.org/dist/"
           "rust-" %rust-bootstrap-binaries-version
-          "-i686-unknown-linux-gnu.tar.gz"))
+          "-" %host-type ".tar.gz"))
     (sha256
      (base32
-      "0wmkfx8pxmkkw021mrq9s3xhra8f0daqdl6j56pxyn4w39i0rzrw"))))
+      (match %host-type
+	("i686-unknown-linux-gnu"
+         "1vnvqwz30hvyjcfr1f602lg43v2vlqjr3yhb5vr8xnrcc07yvjmp")
+	("x86_64-unknown-linux-gnu"
+         "1s0866qcy0645bqhsbs3pvk2hi52ps8jzs7x096w0as033h707ml"))))))
+
+(define %cargo-reference-project-file "/dev/null")
+(define %cargo-reference-hash
+  "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
 
 (define (increment-rust-version rust-version major patch)
   (match (string-split rust-version #\.)
@@ -92,7 +104,6 @@
     (arguments
      `(#:tests? #f
        #:strip-binaries? #f
-       #:system "i686-linux"
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -103,8 +114,7 @@
                     (gcc:lib (assoc-ref inputs "gcc:lib"))
                     (libc (assoc-ref inputs "libc"))
                     (zlib (assoc-ref inputs "zlib"))
-                    (ld-so (string-append libc
-                                          ,(glibc-dynamic-linker "i686-linux")))
+                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
                     (rpath (string-append out "/lib:" zlib "/lib:"
                                           libc "/lib:" gcc:lib "/lib"))
                     (rustc (string-append out "/bin/rustc"))
@@ -112,7 +122,7 @@
                (system* "bash" "install.sh"
                         (string-append "--prefix=" out)
                         (string-append "--components=rustc,"
-                                       "rust-std-i686-unknown-linux-gnu"))
+                                       "rust-std-" %host-type))
                (for-each (lambda (file)
                            (system* "patchelf" "--set-rpath" rpath file))
                          (cons* rustc rustdoc (find-files out "\\.so$")))
@@ -129,7 +139,7 @@ which can in turn be used to build the final Rust compiler.")
 (define cargo-bootstrap
   (package
     (name "cargo-bootstrap")
-    (version (cargo-version %rust-bootstrap-binaries-version))
+    (version (cargo-version %rust-bootstrap-binaries-version 1))
     (source %rust-bootstrap-binaries)
     (build-system gnu-build-system)
     (native-inputs
@@ -139,7 +149,6 @@ which can in turn be used to build the final Rust compiler.")
     (arguments
      `(#:tests? #f
        #:strip-binaries? #f
-       #:system "i686-linux"
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -149,8 +158,7 @@ which can in turn be used to build the final Rust compiler.")
              (let* ((out (assoc-ref outputs "out"))
                     (gcc:lib (assoc-ref inputs "gcc:lib"))
                     (libc (assoc-ref inputs "libc"))
-                    (ld-so (string-append libc
-                                          ,(glibc-dynamic-linker "i686-linux")))
+                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
                     (rpath (string-append out "/lib:" libc "/lib:"
                                           gcc:lib "/lib"))
                     (cargo (string-append out "/bin/cargo")))
@@ -196,11 +204,11 @@ manager, which is required to build itself.")
     (description "Meta package for a rust environment. Provides pre-compiled
 rustc-bootstrap and cargo-bootstrap packages.")
     (license license:asl2.0)))
-
+\f
 (define-public rustc
   (package
     (name "rustc")
-    (version (rustc-version %rust-bootstrap-binaries-version))
+    (version (rustc-version %rust-bootstrap-binaries-version 1))
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -208,109 +216,146 @@ rustc-bootstrap and cargo-bootstrap packages.")
                     "rustc-" version "-src.tar.gz"))
               (sha256
                (base32
-                "1d78jq7mc34n265by68amr9r4nzbiqrilfbwh7gx56ydn4gb6rpr"))
-            (modules '((guix build utils)))
-            (snippet
-             `(begin
-                (delete-file-recursively "src/llvm")
-                #t))))
+                "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))
+              (modules '((guix build utils)))
+              (snippet
+               `(begin
+                  (delete-file-recursively "src/llvm")
+                  #t))))
     (build-system gnu-build-system)
     (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)
        ("rust-bootstrap" ,rust-bootstrap)
        ("which" ,which)))
     (inputs
-     `(("jemalloc" ,jemalloc)
+     `(("jemalloc" ,jemalloc-4.5.0)
        ("llvm" ,llvm-3.9.1)))
     (arguments
-     `(#:phases
+     `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
+       #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-configure
-           (lambda _
-             (substitute* "configure"
-               (("/usr/bin/env") (which "env")) ; Detect target CPU correctly.
-               (("probe_need CFG_CURL curl") "") ; Avoid curl build dependency.
-               ;; Newer LLVM has a NVPTX (NVIDIA) backend which the Rust
-               ;; Makefiles don't know about, causing a linker failure
-               ;; if we don't intervene.
-               ;; Therefore, we add NVPTX here.
-               ;; See <https://github.com/rust-lang/rust/issues/40698>.
-               ;; For the next release, we will have to use rustbuild.
-               ;; Right now, rustbuild doesn't work yet.
-               (("-DLLVM_TARGETS_TO_BUILD='")
-                "-DLLVM_TARGETS_TO_BUILD='NVPTX;")) ; Make LLVM >= 3.8.1 work.
-             (substitute* "src/tools/compiletest/src/util.rs"
-               (("(\"amd64\", \"x86_64\"),") "(\"amd64\", \"x86_64\"),
-(\"nvptx\", \"nvptx\"),")) ; Make LLVM >= 3.8.1 work.
-             (substitute* "mk/main.mk"
-               (("LLVM_OPTIONAL_COMPONENTS=")
-                "LLVM_OPTIONAL_COMPONENTS=nvptx ")) ; Make LLVM >= 3.8.1 work.
-             #t))
          (add-after 'unpack 'set-env
            (lambda _
              (setenv "SHELL" (which "sh"))
              (setenv "CONFIG_SHELL" (which "sh"))
+             ;; guix llvm-3.9.1 package install only shared libraries
+             (setenv "LLVM_LINK_SHARED" "1")
              #t))
          (add-after 'unpack 'patch-tests
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((bash (assoc-ref inputs "bash")))
-               (substitute* "src/tools/tidy/src/main.rs"
-                 (("^.*cargo.*::check.*$") ""))
+               (substitute* "src/build_helper/lib.rs"
+                 ;; In same folder as gcc there is only "gcc-ar" utility
+                 (("file\\.push_str\\(\"ar\"\\);") "file.push_str(\"gcc-ar\");"))
                (substitute* "src/libstd/process.rs"
                  ;; The newline is intentional.
                  ;; There's a line length "tidy" check in Rust which would
                  ;; fail otherwise.
-                 (("\"/bin/sh\"") (string-append "
-\"" bash "/bin/sh\"")))
-               ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>.
+                 (("\"/bin/sh\"") (string-append "\n\"" bash "/bin/sh\"")))
+               (substitute* "src/libstd/net/tcp.rs"
+                 ;; There is no network in build environment
+                 (("fn connect_timeout_unroutable")
+                  "#[ignore]\nfn connect_timeout_unroutable"))
+               ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>
                (substitute* "src/libstd/sys/unix/process/process_common.rs"
-                 (("fn test_process_mask") "#[cfg_attr(target_os = \"linux\", ignore)]
-fn test_process_mask"))
+                 (("fn test_process_mask") "#[ignore]\nfn test_process_mask"))
                ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
-               ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>.
+               ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
                (delete-file-recursively "src/test/run-make/linker-output-non-utf8")
+               (substitute* "src/build_helper/lib.rs"
+                 ;; Bug in Rust code.
+                 ;; Current implementation assume that if dst not exist then it's mtime
+                 ;; is 0, but in same time "src" have 0 mtime in guix build!
+                 (("let threshold = mtime\\(dst\\);")
+                  "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
                #t)))
+         (add-after 'patch-source-shebangs 'patch-cargo-checksums
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/Cargo.lock"
+               (("(\"checksum .* = )\".*\"" all name)
+                (string-append name "\"" ,%cargo-reference-hash "\"")))
+             (for-each
+              (lambda (filename)
+                (use-modules (guix build cargo-build-system))
+                (delete-file filename)
+                (let* ((dir (dirname filename)))
+                  (display (string-append
+                            "patch-cargo-checksums: generate-checksums for "
+                            dir "\n"))
+                  (generate-checksums dir ,%cargo-reference-project-file)))
+              (find-files "src/vendor" ".cargo-checksum.json"))))
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (gcc (assoc-ref inputs "gcc"))
+                    (gdb (assoc-ref inputs "gdb"))
                     (binutils (assoc-ref inputs "binutils"))
                     (python (assoc-ref inputs "python-2"))
                     (rustc (assoc-ref inputs "rustc-bootstrap"))
+                    (cargo (assoc-ref inputs "cargo-bootstrap"))
                     (llvm (assoc-ref inputs "llvm"))
-                    (jemalloc (assoc-ref inputs "jemalloc"))
-                    (flags (list
-                            (string-append "--prefix=" out)
-                            (string-append "--datadir=" out "/share")
-                            (string-append "--infodir=" out "/share/info")
-                            (string-append "--default-linker=" gcc "/bin/gcc")
-                            (string-append "--default-ar=" binutils "/bin/ar")
-                            (string-append "--python=" python "/bin/python2")
-                            (string-append "--local-rust-root=" rustc)
-                            (string-append "--llvm-root=" llvm)
-                            (string-append "--jemalloc-root=" jemalloc "/lib")
-                            "--release-channel=stable"
-                            "--enable-rpath"
-                            "--enable-local-rust"
-                            "--disable-rustbuild" ; rustbuild doesn't work yet.
-                            "--disable-manage-submodules")))
-               ;; Rust uses a custom configure script (no autoconf).
-               (zero? (apply system* "./configure" flags)))))
-         (add-after 'install 'wrap-rustc
+                    (jemalloc (assoc-ref inputs "jemalloc")))
+               (call-with-output-file "config.toml"
+                 (lambda (port)
+                   (display (string-append "
+[llvm]
+[build]
+cargo = \"" cargo "/bin/cargo" "\"
+rustc = \"" rustc "/bin/rustc" "\"
+python = \"" python "/bin/python2" "\"
+gdb = \"" gdb "/bin/gdb" "\"
+vendor = true
+submodules = false
+[install]
+prefix = \"" out "\"
+[rust]
+default-linker = \"" gcc "/bin/gcc" "\"
+default-ar = \"" binutils "/bin/ar" "\"
+channel = \"stable\"
+rpath = true
+# There is 2 failed codegen tests:
+# codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
+# This tests required patched LLVM
+codegen-tests = false
+[target." %host-type "]
+llvm-config = \"" llvm "/bin/llvm-config" "\"
+cc = \"" gcc "/bin/gcc" "\"
+cxx = \"" gcc "/bin/g++" "\"
+jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
+[dist]
+") port))))))
+         (add-before 'build 'reset-timestamps-after-changes
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (define ref (stat "README.md"))
+             (for-each
+              (lambda (filename)
+                (set-file-time filename ref))
+              (find-files "." #:directories? #t))))
+         (replace 'build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (zero? (system* "./x.py" "build"))))
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (zero? (system* "./x.py" "test"))))
+         (replace 'install
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let ((out (assoc-ref outputs "out"))
-                   (libc (assoc-ref inputs "libc"))
-                   (ld-wrapper (assoc-ref inputs "ld-wrapper")))
+             (zero? (system* "./x.py" "install"))))
+           (add-after 'install 'wrap-rustc
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out"))
+                     (libc (assoc-ref inputs "libc"))
+                     (ld-wrapper (assoc-ref inputs "ld-wrapper")))
                ;; Let gcc find ld and libc startup files.
-               (wrap-program (string-append out "/bin/rustc")
-                 `("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
-                 `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))
-               #t))))))
+                 (wrap-program (string-append out "/bin/rustc")
+                   `("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
+                   `("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))
+                 #t))))))
     ;; rustc invokes gcc, so we need to set its search paths accordingly.
     (native-search-paths (package-native-search-paths gcc))
     (synopsis "Compiler for the Rust progamming language")
@@ -325,7 +370,7 @@ safety and thread safety guarantees.")
 (define-public cargo
   (package
     (name "cargo")
-    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version)))
+    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version) 0))
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rust-lang/cargo/archive/"
@@ -333,7 +378,7 @@ safety and thread safety guarantees.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1y0zy8gk1ly0wh57y78fisk7cdd92qk0x7z664f6l7lzl2krqs7w"))))
+                "0kr7rml7v2bm7zl8jcb3056h63zpyy9m08s212i8vfwxf6lf5fzl"))))
     (build-system cargo-build-system)
     (propagated-inputs
      `(("cmake" ,cmake)
@@ -346,506 +391,870 @@ safety and thread safety guarantees.")
        ("python-2" ,python-2)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("rust-openssl"
+     `(("git" ,git) ; required for tests
+       ;; Next dependencies generated with next command:
+       ;; cat Cargo.lock | awk '
+       ;;   /^"checksum/
+       ;;   { oname=name=$2; vers=$3; hash=$6;
+       ;;     if (ns[name] != 1) { ns[name]=1; } else { name = name "-" vers; }
+       ;;     print "       (\"rust-" name "\"";
+       ;;     print "        ,(origin";
+       ;;     print "           (method url-fetch)";
+       ;;     print "           (uri (crate-uri \"" oname "\" \"" vers "\"))";
+       ;;     print "           (sha256";
+       ;;     print "            (base16-string->bytevector";
+       ;;     print "             " hash "))))"
+       ;;   }'
+       ("rust-advapi32-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl" "0.9.6"))
+           (uri (crate-uri "advapi32-sys" "0.2.0"))
            (sha256
-            (base32
-             "0g28g692gby6izp9qmnwnyxyhf9b0870yhd500p18j9l69lxl00c"))))
-       ("rust-strsim"
+            (base16-string->bytevector
+             "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"))))
+       ("rust-aho-corasick"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "aho-corasick" "0.5.3"))
+           (sha256
+            (base16-string->bytevector
+             "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"))))
+       ("rust-aho-corasick-0.6.3"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "strsim" "0.5.1"))
+           (uri (crate-uri "aho-corasick" "0.6.3"))
            (sha256
-            (base32
-             "0bj4fsm1l2yqbfpspyvjf9m3m50pskapcddzm0ji9c74jbgnkh2h"))))
-       ("rust-libc"
+            (base16-string->bytevector
+             "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699"))))
+       ("rust-atty"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "atty" "0.2.3"))
+           (sha256
+            (base16-string->bytevector
+             "21e50800ec991574876040fff8ee46b136a53e985286fbe6a3bdfe6421b78860"))))
+       ("rust-backtrace"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "backtrace" "0.3.3"))
+           (sha256
+            (base16-string->bytevector
+             "99f2ce94e22b8e664d95c57fff45b98a966c2252b60691d0b7aeeccd88d70983"))))
+       ("rust-backtrace-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libc" "0.2.18"))
+           (uri (crate-uri "backtrace-sys" "0.1.14"))
            (sha256
-            (base32
-             "0w5cghr0wx3hi2sclk8r9iyzlbxsakil87ada40q2ykyhky24655"))))
+            (base16-string->bytevector
+             "c63ea141ef8fdb10409d0f5daf30ac51f84ef43bff66f16627773d2a292cd189"))))
        ("rust-bitflags"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "bitflags" "0.7.0"))
            (sha256
-            (base32
-             "0v8hh6wdkpk9my8z8442g4hqrqf05h0qj53dsay6mv18lqvqklda"))))
-       ("rust-unicode-normalization"
+            (base16-string->bytevector
+             "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"))))
+       ("rust-bitflags-0.9.1"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "unicode-normalization" "0.1.2"))
+           (uri (crate-uri "bitflags" "0.9.1"))
            (sha256
-            (base32
-             "0whi4xxqcjfsz6ywyrfd5lhgk1a44c86qwgvfqcmzidshcpklr16"))))
-       ("rust-rand"
+            (base16-string->bytevector
+             "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"))))
+       ("rust-bufstream"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "rand" "0.3.14"))
+           (uri (crate-uri "bufstream" "0.1.3"))
            (sha256
-            (base32
-             "1984zvj8572ig28fz6idc4r96fx39h4lzmr07yf7kb7gdn6di497"))))
-       ("rust-gcc"
+            (base16-string->bytevector
+             "f2f382711e76b9de6c744cc00d0497baba02fb00a787f088c879f01d09468e32"))))
+       ("rust-cc"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "gcc" "0.3.39"))
+           (uri (crate-uri "cc" "1.0.0"))
            (sha256
-            (base32
-             "1q0idjvmhp6shkb9hqabh51rgfr8dqpi1xfmyzq7q8vgzybll7kp"))))
-       ("rust-tempdir"
+            (base16-string->bytevector
+             "7db2f146208d7e0fbee761b09cd65a7f51ccc38705d4e7262dad4d73b12a76b1"))))
+       ("rust-cfg-if"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "tempdir" "0.3.5"))
+           (uri (crate-uri "cfg-if" "0.1.2"))
            (sha256
-            (base32
-             "1mij45kgzflkja0h8q9avrik76h5a0b60m9hfd6k9yqxbiplm5w7"))))
-       ("rust-memchr"
+            (base16-string->bytevector
+             "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"))))
+       ("rust-cmake"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "memchr" "0.1.11"))
+           (uri (crate-uri "cmake" "0.1.26"))
            (sha256
-            (base32
-             "084d85hjfa3xf5kwdms2mhbkh78m1gl2254cp5swcxj3a7xjkdnq"))))
-       ("rust-rustc-serialize"
+            (base16-string->bytevector
+             "357c07e7a1fc95732793c1edb5901e1a1f305cfcf63a90eb12dbd22bdb6b789d"))))
+       ("rust-commoncrypto"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "rustc-serialize" "0.3.21"))
+           (uri (crate-uri "commoncrypto" "0.2.0"))
            (sha256
-            (base32
-             "064qmyr2508qf78dwcpiv25rfjp9h9vd0wrj4mmwgppjg4fgrydz"))))
-       ("rust-cmake"
+            (base16-string->bytevector
+             "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007"))))
+       ("rust-commoncrypto-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "cmake" "0.1.19"))
+           (uri (crate-uri "commoncrypto-sys" "0.2.0"))
            (sha256
-            (base32
-             "0am8c8ns1h6b1a5x9z2r1m3rszvya5nccl2pzszzjv5aiiaydgcf"))))
-       ("rust-matches"
+            (base16-string->bytevector
+             "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2"))))
+       ("rust-conv"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "matches" "0.1.4"))
+           (uri (crate-uri "conv" "0.3.3"))
            (sha256
-            (base32
-             "1c8190j84hbicy8jwscw5icfam12j6lcxi02lvmadq9260p65mzg"))))
-       ("rust-winapi"
+            (base16-string->bytevector
+             "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"))))
+       ("rust-core-foundation"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "winapi" "0.2.8"))
+           (uri (crate-uri "core-foundation" "0.4.4"))
            (sha256
-            (base32
-             "0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n"))))
-       ("rust-pkg-config"
+            (base16-string->bytevector
+             "5909502e547762013619f4c4e01cc7393c20fe2d52d7fa471c1210adb2320dc7"))))
+       ("rust-core-foundation-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "pkg-config" "0.3.8"))
+           (uri (crate-uri "core-foundation-sys" "0.4.4"))
            (sha256
-            (base32
-             "1ypj4nj2z9z27qg06v3g40jyhw685i3l2wi098d21bvyri781vlc"))))
-       ("rust-libssh2-sys"
+            (base16-string->bytevector
+             "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387"))))
+       ("rust-crossbeam"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libssh2-sys" "0.2.5"))
+           (uri (crate-uri "crossbeam" "0.2.10"))
            (sha256
-            (base32
-             "0d2r36hrh9vc1821r0v4kywv30svpf37d31calwql69fbij3bqci"))))
-       ("rust-libz-sys"
+            (base16-string->bytevector
+             "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"))))
+       ("rust-crossbeam-0.3.0"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "crossbeam" "0.3.0"))
+           (sha256
+            (base16-string->bytevector
+             "8837ab96533202c5b610ed44bc7f4183e7957c1c8f56e8cc78bb098593c8ba0a"))))
+       ("rust-crypto-hash"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "crypto-hash" "0.3.0"))
+           (sha256
+            (base16-string->bytevector
+             "34903878eec1694faf53cae8473a088df333181de421d4d3d48061d6559fe602"))))
+       ("rust-curl"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libz-sys" "1.0.13"))
+           (uri (crate-uri "curl" "0.4.8"))
            (sha256
-            (base32
-             "034pgvxzgsv37iafgs0lmvd1ifm0bg0zm1xcsn9x71nn8lm93vp5"))))
+            (base16-string->bytevector
+             "7034c534a1d7d22f7971d6088aa9d281d219ef724026c3428092500f41ae9c2c"))))
        ("rust-curl-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "curl-sys" "0.3.6"))
+           (uri (crate-uri "curl-sys" "0.3.15"))
            (sha256
-            (base32
-             "0fi8kjz3f8m8vfazycs3ddm0h6j3x78hw78gwbvybx71129192i1"))))
-       ("rust-error-chain"
+            (base16-string->bytevector
+             "4bee31aa3a079d5f3ff9579ea4dcfb1b1a17a40886f5f467436d383e78134b55"))))
+       ("rust-custom_derive"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "error-chain" "0.7.2"))
+           (uri (crate-uri "custom_derive" "0.1.7"))
            (sha256
-            (base32
-             "03qjh6l2a9fkiyg0428p7q3dcpi47cbmrqf9zmlymkg43v3v731i"))))
-       ("rust-metadeps"
+            (base16-string->bytevector
+             "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"))))
+       ("rust-dbghelp-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "metadeps" "1.1.1"))
+           (uri (crate-uri "dbghelp-sys" "0.2.0"))
            (sha256
-            (base32
-             "0l818461bslb7nrs7r1amkqv45n53fcp5sabyqipwx0xxbkzz7w2"))))
-       ("rust-openssl-sys"
+            (base16-string->bytevector
+             "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"))))
+       ("rust-docopt"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl-sys" "0.9.6"))
+           (uri (crate-uri "docopt" "0.8.1"))
            (sha256
-            (base32
-             "1hzpyf9z8xg1yn5r9g17bl5j20nifd6s2zp10xh90v7m0sd2yj5i"))))
-       ("rust-fs2"
+            (base16-string->bytevector
+             "3b5b93718f8b3e5544fcc914c43de828ca6c6ace23e0332c6080a2977b49787a"))))
+       ("rust-dtoa"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "fs2" "0.3.0"))
+           (uri (crate-uri "dtoa" "0.4.2"))
            (sha256
-            (base32
-             "0lg57mgcm1r0m8jm4nqpcrl6lmxg8lj854k2h0r7qp46pphh2034"))))
-       ("rust-log"
+            (base16-string->bytevector
+             "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"))))
+       ("rust-env_logger"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "log" "0.3.6"))
+           (uri (crate-uri "env_logger" "0.4.3"))
            (sha256
-            (base32
-             "0m40hgs3cg57dd5kk1mabfk6gk8z6l1cihar8akx4kmzz1xlk0xb"))))
+            (base16-string->bytevector
+             "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b"))))
+       ("rust-error-chain"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "error-chain" "0.11.0"))
+           (sha256
+            (base16-string->bytevector
+             "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"))))
        ("rust-filetime"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "filetime" "0.1.10"))
+           (uri (crate-uri "filetime" "0.1.12"))
            (sha256
-            (base32
-             "08p9scgv30i1141cnp5xi4pqlnkfci455nrpca55df1r867anqsk"))))
-       ("rust-tar"
+            (base16-string->bytevector
+             "6ab199bf38537c6f38792669e081e0bb278b9b7405bba2642e4e5d15bf732c0e"))))
+       ("rust-flate2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "flate2" "0.2.20"))
+           (sha256
+            (base16-string->bytevector
+             "e6234dd4468ae5d1e2dbb06fe2b058696fdc50a339c68a393aefbf00bc81e423"))))
+       ("rust-fnv"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "tar" "0.4.9"))
+           (uri (crate-uri "fnv" "1.0.5"))
            (sha256
-            (base32
-             "1vi3nl8s3jjf5l20ni47gmh1p4bdjfh7q50fbg7izzqrf7i4i40c"))))
+            (base16-string->bytevector
+             "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344"))))
+       ("rust-foreign-types"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "foreign-types" "0.2.0"))
+           (sha256
+            (base16-string->bytevector
+             "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"))))
+       ("rust-fs2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "fs2" "0.4.2"))
+           (sha256
+            (base16-string->bytevector
+             "9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866"))))
+       ("rust-git2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "git2" "0.6.8"))
+           (sha256
+            (base16-string->bytevector
+             "0c1c0203d653f4140241da0c1375a404f0a397249ec818cd2076c6280c50f6fa"))))
+       ("rust-git2-curl"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "git2-curl" "0.7.0"))
+           (sha256
+            (base16-string->bytevector
+             "68676bc784bf0bef83278898929bf64a251e87c0340723d0b93fa096c9c5bf8e"))))
        ("rust-glob"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "glob" "0.2.11"))
            (sha256
-            (base32
-             "1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb"))))
-       ("rust-cfg-if"
+            (base16-string->bytevector
+             "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"))))
+       ("rust-globset"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "cfg-if" "0.1.0"))
+           (uri (crate-uri "globset" "0.2.0"))
            (sha256
-            (base32
-             "137qikjcal4h75frzcn6mknygqk8vy5bva7w851aydb5gc6pc7ny"))))
-       ("rust-winapi-build"
+            (base16-string->bytevector
+             "feeb1b6840809ef5efcf7a4a990bc4e1b7ee3df8cf9e2379a75aeb2ba42ac9c3"))))
+       ("rust-hamcrest"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "winapi-build" "0.1.1"))
+           (uri (crate-uri "hamcrest" "0.1.1"))
            (sha256
-            (base32
-             "1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d"))))
-       ("rust-advapi32-sys"
+            (base16-string->bytevector
+             "bf088f042a467089e9baa4972f57f9247e42a0cc549ba264c7a04fbb8ecb89d4"))))
+       ("rust-hex"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "advapi32-sys" "0.2.0"))
+           (uri (crate-uri "hex" "0.2.0"))
            (sha256
-            (base32
-             "16largvlrd1800vvdchml0ngnszjlnpqm01rcz5hm7di1h48hrg0"))))
-       ("rust-gdi32-sys"
+            (base16-string->bytevector
+             "d6a22814455d41612f41161581c2883c0c6a1c41852729b17d5ed88f01e153aa"))))
+       ("rust-home"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "gdi32-sys" "0.2.0"))
+           (uri (crate-uri "home" "0.3.0"))
            (sha256
-            (base32
-             "0605d4ngjsspghwjv4jicajich1gnl0aik9f880ajjzjixd524h9"))))
-       ("rust-ws2_32-sys"
+            (base16-string->bytevector
+             "9f25ae61099d8f3fee8b483df0bd4ecccf4b2731897aad40d50eca1b641fe6db"))))
+       ("rust-idna"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "ws2_32-sys" "0.2.1"))
+           (uri (crate-uri "idna" "0.1.4"))
            (sha256
-            (base32
-             "0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m"))))
-       ("rust-user32-sys"
+            (base16-string->bytevector
+             "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d"))))
+       ("rust-ignore"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "user32-sys" "0.2.0"))
+           (uri (crate-uri "ignore" "0.2.2"))
            (sha256
-            (base32
-             "0ivxc7hmsxax9crdhxdd1nqwik4s9lhb2x59lc8b88bv20fp3x2f"))))
-       ("rust-unicode-bidi"
+            (base16-string->bytevector
+             "b3fcaf2365eb14b28ec7603c98c06cc531f19de9eb283d89a3dff8417c8c99f5"))))
+       ("rust-itoa"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "itoa" "0.3.4"))
+           (sha256
+            (base16-string->bytevector
+             "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"))))
+       ("rust-jobserver"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "jobserver" "0.1.6"))
+           (sha256
+            (base16-string->bytevector
+             "443ae8bc0af6c106e6e8b77e04684faecc1a5ce94e058f4c2b0a037b0ea1b133"))))
+       ("rust-kernel32-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "kernel32-sys" "0.2.2"))
+           (sha256
+            (base16-string->bytevector
+             "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"))))
+       ("rust-lazy_static"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "lazy_static" "0.2.9"))
+           (sha256
+            (base16-string->bytevector
+             "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5"))))
+       ("rust-libc"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libc" "0.2.31"))
+           (sha256
+            (base16-string->bytevector
+             "d1419b2939a0bc44b77feb34661583c7546b532b192feab36249ab584b86856c"))))
+       ("rust-libgit2-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libgit2-sys" "0.6.16"))
+           (sha256
+            (base16-string->bytevector
+             "6f74b4959cef96898f5123148724fc7dee043b9a6b99f219d948851bfbe53cb2"))))
+       ("rust-libssh2-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libssh2-sys" "0.2.6"))
+           (sha256
+            (base16-string->bytevector
+             "0db4ec23611747ef772db1c4d650f8bd762f07b461727ec998f953c614024b75"))))
+       ("rust-libz-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libz-sys" "1.0.17"))
+           (sha256
+            (base16-string->bytevector
+             "44ebbc760fd2d2f4d93de09a0e13d97e057612052e871da9985cedcb451e6bd5"))))
+       ("rust-log"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "log" "0.3.8"))
+           (sha256
+            (base16-string->bytevector
+             "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"))))
+       ("rust-magenta"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "unicode-bidi" "0.2.3"))
+           (uri (crate-uri "magenta" "0.1.1"))
            (sha256
-            (base32
-             "0gqbyf6slkgzr14nf6v8dw8a19l5snh6bpms8bpfvzpxdawwxxy1"))))
+            (base16-string->bytevector
+             "4bf0336886480e671965f794bc9b6fce88503563013d1bfb7a502c81fe3ac527"))))
+       ("rust-magenta-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "magenta-sys" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "40d014c7011ac470ae28e2f76a02bfea4a8480f73e701353b49ad7a8d75f4699"))))
+       ("rust-matches"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "matches" "0.1.6"))
+           (sha256
+            (base16-string->bytevector
+             "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"))))
+       ("rust-memchr"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "memchr" "0.1.11"))
+           (sha256
+            (base16-string->bytevector
+             "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"))))
+       ("rust-memchr-1.0.1"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "memchr" "1.0.1"))
+           (sha256
+            (base16-string->bytevector
+             "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"))))
+       ("rust-miniz-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "miniz-sys" "0.1.10"))
+           (sha256
+            (base16-string->bytevector
+             "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4"))))
+       ("rust-miow"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "miow" "0.2.1"))
+           (sha256
+            (base16-string->bytevector
+             "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"))))
        ("rust-net2"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "net2" "0.2.26"))
+           (uri (crate-uri "net2" "0.2.31"))
            (sha256
-            (base32
-             "1qp3q6xynb481rsp3ig1nmqb6qlxfba3shfrmqij88cppsv9rpsy"))))
-       ("rust-utf8-ranges"
+            (base16-string->bytevector
+             "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09"))))
+       ("rust-num"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "utf8-ranges" "0.1.3"))
+           (uri (crate-uri "num" "0.1.40"))
            (sha256
-            (base32
-             "03xf604b2v51ag3jgzw92l97xnb10kw9zv948bhc7ja1ik017jm1"))))
-       ("rust-crossbeam"
+            (base16-string->bytevector
+             "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525"))))
+       ("rust-num-bigint"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "crossbeam" "0.2.10"))
+           (uri (crate-uri "num-bigint" "0.1.40"))
            (sha256
-            (base32
-             "15wga0kvk3iqf3l077957j931brf1pl3p74xibd698jccqas4phc"))))
-       ("rust-toml"
+            (base16-string->bytevector
+             "8fd0f8dbb4c0960998958a796281d88c16fbe68d87b1baa6f31e2979e81fd0bd"))))
+       ("rust-num-complex"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "toml" "0.2.1"))
+           (uri (crate-uri "num-complex" "0.1.40"))
            (sha256
-            (base32
-             "1d1cz43bxrx4fd6j2p6myckf81f72bp47akg36y3flxjkhj60svk"))))
-       ("rust-aho-corasick"
+            (base16-string->bytevector
+             "503e668405c5492d67cf662a81e05be40efe2e6bcf10f7794a07bd9865e704e6"))))
+       ("rust-num-integer"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "aho-corasick" "0.5.3"))
+           (uri (crate-uri "num-integer" "0.1.35"))
+           (sha256
+            (base16-string->bytevector
+             "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba"))))
+       ("rust-num-iter"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-iter" "0.1.34"))
+           (sha256
+            (base16-string->bytevector
+             "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01"))))
+       ("rust-num-rational"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-rational" "0.1.39"))
+           (sha256
+            (base16-string->bytevector
+             "288629c76fac4b33556f4b7ab57ba21ae202da65ba8b77466e6d598e31990790"))))
+       ("rust-num-traits"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-traits" "0.1.40"))
+           (sha256
+            (base16-string->bytevector
+             "99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0"))))
+       ("rust-num_cpus"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num_cpus" "1.7.0"))
+           (sha256
+            (base16-string->bytevector
+             "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d"))))
+       ("rust-openssl"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl" "0.9.19"))
+           (sha256
+            (base16-string->bytevector
+             "816914b22eb15671d62c73442a51978f311e911d6a6f6cbdafa6abce1b5038fc"))))
+       ("rust-openssl-probe"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl-probe" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "d98df0270d404ccd3c050a41d579c52d1db15375168bb3471e04ec0f5f378daf"))))
+       ("rust-openssl-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl-sys" "0.9.19"))
+           (sha256
+            (base16-string->bytevector
+             "1e4c63a7d559c1e5afa6d6a9e6fa34bbc5f800ffc9ae08b72c605420b0c4f5e8"))))
+       ("rust-percent-encoding"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "percent-encoding" "1.0.0"))
+           (sha256
+            (base16-string->bytevector
+             "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"))))
+       ("rust-pkg-config"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "pkg-config" "0.3.9"))
            (sha256
-            (base32
-             "0rnvdmlajikq0i4zdy1p3pv699q6apvsxfc7av7byhppllp2r5ya"))))
+            (base16-string->bytevector
+             "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"))))
        ("rust-psapi-sys"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "psapi-sys" "0.1.0"))
            (sha256
-            (base32
-             "0y14g8qshsfnmb7nk2gs1rpbrs1wrggajmzp4yby4q6k0wd5vkdb"))))
-       ("rust-idna"
+            (base16-string->bytevector
+             "abcd5d1a07d360e29727f757a9decb3ce8bc6e0efa8969cfaad669a8317a2478"))))
+       ("rust-quote"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "idna" "0.1.0"))
+           (uri (crate-uri "quote" "0.3.15"))
            (sha256
-            (base32
-             "049c2rmlydrrrgrxdaq2v21adx9vkfh6k9x4xj56ckyf01p26lqh"))))
-       ("rust-url"
+            (base16-string->bytevector
+             "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"))))
+       ("rust-rand"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "rand" "0.3.16"))
+           (sha256
+            (base16-string->bytevector
+             "eb250fd207a4729c976794d03db689c9be1d634ab5a1c9da9492a13d8fecbcdf"))))
+       ("rust-redox_syscall"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "redox_syscall" "0.1.31"))
+           (sha256
+            (base16-string->bytevector
+             "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509"))))
+       ("rust-redox_termios"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "redox_termios" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"))))
+       ("rust-regex"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "regex" "0.1.80"))
+           (sha256
+            (base16-string->bytevector
+             "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"))))
+       ("rust-regex-0.2.2"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "url" "1.2.3"))
+           (uri (crate-uri "regex" "0.2.2"))
            (sha256
-            (base32
-             "1myr1i8djbl2bhvvrm6n3h7bj7sl6kh5dmaaz2f7c6x8hyyzgk28"))))
+            (base16-string->bytevector
+             "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"))))
        ("rust-regex-syntax"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "regex-syntax" "0.3.9"))
            (sha256
-            (base32
-             "0ms9hgdhhsxw9w920i7gipydvagf100bb56jbs192rz86ln01v7r"))))
-       ("rust-kernel32-sys"
+            (base16-string->bytevector
+             "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"))))
+       ("rust-regex-syntax-0.4.1"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "kernel32-sys" "0.2.2"))
+           (uri (crate-uri "regex-syntax" "0.4.1"))
            (sha256
-            (base32
-             "1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm"))))
-       ("rust-term"
+            (base16-string->bytevector
+             "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"))))
+       ("rust-rustc-demangle"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "term" "0.4.4"))
+           (uri (crate-uri "rustc-demangle" "0.1.5"))
            (sha256
-            (base32
-             "0jpr7jb1xidadh0arklwr99r8w1k1dfc4an3ginpsq5nnfigivrx"))))
-       ("rust-thread-id"
+            (base16-string->bytevector
+             "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e"))))
+       ("rust-rustc-serialize"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "thread-id" "2.0.0"))
+           (uri (crate-uri "rustc-serialize" "0.3.24"))
            (sha256
-            (base32
-             "00zzs2bx1xw8aqm5plqqgr7bc2zz6zkqrdxq8vpiqb8hc2srslx9"))))
-       ("rust-thread_local"
+            (base16-string->bytevector
+             "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"))))
+       ("rust-same-file"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "thread_local" "0.2.7"))
+           (uri (crate-uri "same-file" "0.1.3"))
            (sha256
-            (base32
-             "1mgxikqvhpsic6xk7pan95lvgsky1sdxzw2w5m2l35pgrazxnxl5"))))
-       ("rust-miow"
+            (base16-string->bytevector
+             "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7"))))
+       ("rust-scoped-tls"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "miow" "0.1.3"))
+           (uri (crate-uri "scoped-tls" "0.1.0"))
            (sha256
-            (base32
-             "16jvfjsp6fr4mbd2sw5hcdmi4dsa0m0aa45gjz78mb1h4mwcdgym"))))
-       ("rust-regex"
+            (base16-string->bytevector
+             "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"))))
+       ("rust-scopeguard"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "regex" "0.1.80"))
+           (uri (crate-uri "scopeguard" "0.1.2"))
            (sha256
-            (base32
-             "0bs036h3vzc6pj5jj4vc909s9rppq7b808ic99qn0y6gm3karm2g"))))
-       ("rust-num_cpus"
+            (base16-string->bytevector
+             "59a076157c1e2dc561d8de585151ee6965d910dd4dcb5dabb7ae3e83981a6c57"))))
+       ("rust-semver"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num_cpus" "1.1.0"))
+           (uri (crate-uri "semver" "0.8.0"))
            (sha256
-            (base32
-             "1bfwcn3yhwa31rinjw9yr7b6gvn6c06hnwnjz06pvm938w4fd448"))))
-       ("rust-libgit2-sys"
+            (base16-string->bytevector
+             "bee2bc909ab2d8d60dab26e8cad85b25d795b14603a0dcb627b78b9d30b6454b"))))
+       ("rust-semver-parser"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libgit2-sys" "0.6.6"))
+           (uri (crate-uri "semver-parser" "0.7.0"))
            (sha256
-            (base32
-             "074h9q4p60xh6canb0sj4vrc801wqv6p53l9lp0q724bkwzf7967"))))
-       ("rust-env_logger"
+            (base16-string->bytevector
+             "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"))))
+       ("rust-serde"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "env_logger" "0.3.5"))
+           (uri (crate-uri "serde" "1.0.15"))
            (sha256
-            (base32
-             "0bvcjgkw4s3k1rd7glpflgc8s9a393zjd6jfdgvs8gjvwj0dgaqm"))))
-       ("rust-openssl-probe"
+            (base16-string->bytevector
+             "6a7046c9d4c6c522d10b2d098f9bebe2bef227e0e74044d8c1bfcf6b476af799"))))
+       ("rust-serde_derive"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl-probe" "0.1.0"))
+           (uri (crate-uri "serde_derive" "1.0.15"))
            (sha256
-            (base32
-             "0689h6rhzy6dypqr90lsxnf108nsnh952wsx7ggs70s48b44jvbm"))))
-       ("rust-lazy_static"
+            (base16-string->bytevector
+             "1afcaae083fd1c46952a315062326bc9957f182358eb7da03b57ef1c688f7aa9"))))
+       ("rust-serde_derive_internals"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "lazy_static" "0.2.2"))
+           (uri (crate-uri "serde_derive_internals" "0.16.0"))
            (sha256
-            (base32
-             "16z1h7w702sxnscak38jykxlhxq0b5ip4mndlb46pkaqwzi0xgka"))))
-       ("rust-semver-parser"
+            (base16-string->bytevector
+             "bd381f6d01a6616cdba8530492d453b7761b456ba974e98768a18cad2cd76f58"))))
+       ("rust-serde_ignored"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "semver-parser" "0.6.1"))
+           (uri (crate-uri "serde_ignored" "0.0.4"))
            (sha256
-            (base32
-             "1s8s7a7yg8xhgci17y0xhyyncg229byivhpr0wbs3ljdlyjl73p8"))))
-       ("rust-semver"
+            (base16-string->bytevector
+             "190e9765dcedb56be63b6e0993a006c7e3b071a016a304736e4a315dc01fb142"))))
+       ("rust-serde_json"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "semver" "0.5.1"))
+           (uri (crate-uri "serde_json" "1.0.3"))
            (sha256
-            (base32
-             "1xbiv8l72rmngb3lgbmk3vd4lalcbzxcnrn085c2b75irl7gcbxf"))))
-       ("rust-docopt"
+            (base16-string->bytevector
+             "d243424e06f9f9c39e3cd36147470fd340db785825e367625f79298a6ac6b7ac"))))
+       ("rust-shell-escape"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "shell-escape" "0.1.3"))
+           (sha256
+            (base16-string->bytevector
+             "dd5cc96481d54583947bfe88bf30c23d53f883c6cd0145368b69989d97b84ef8"))))
+       ("rust-socket2"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "docopt" "0.6.86"))
+           (uri (crate-uri "socket2" "0.2.3"))
            (sha256
-            (base32
-             "1nf4f4zf5yk0d0l4kl7hkii4na22fhn0l2hgfb46yzv08l2g6zja"))))
-       ("rust-miniz-sys"
+            (base16-string->bytevector
+             "9e76b159741052c7deaa9fd0b5ca6b5f79cecf525ed665abfe5002086c6b2791"))))
+       ("rust-strsim"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "miniz-sys" "0.1.7"))
+           (uri (crate-uri "strsim" "0.6.0"))
            (sha256
-            (base32
-             "0m7dlggsxash0k5jkx576p556g9r8vnhyl9244gjxhq1g8rls7wx"))))
-       ("rust-curl"
+            (base16-string->bytevector
+             "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694"))))
+       ("rust-syn"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "curl" "0.4.1"))
+           (uri (crate-uri "syn" "0.11.11"))
            (sha256
-            (base32
-             "1b0y27b6vpqffgzm2kxc1s2i6bgdzxk3wn65g2asbcdxrvys3mcg"))))
-       ("rust-flate2"
+            (base16-string->bytevector
+             "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"))))
+       ("rust-synom"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "flate2" "0.2.14"))
+           (uri (crate-uri "synom" "0.11.3"))
            (sha256
-            (base32
-             "1fx3zsls5bb1zfx87s5sxkgk853z4nhjsbvq5s6if13kjlg4isry"))))
-       ("rust-git2"
+            (base16-string->bytevector
+             "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"))))
+       ("rust-tar"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "git2" "0.6.3"))
+           (uri (crate-uri "tar" "0.4.13"))
            (sha256
-            (base32
-             "06b1bw3pwszs8617xn8js6h0j983qjgfwsychw33lshccj3cld05"))))
-       ("rust-crates-io"
+            (base16-string->bytevector
+             "281285b717926caa919ad905ef89c63d75805c7d89437fb873100925a53f2b1b"))))
+       ("rust-tempdir"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "crates-io" "0.4.0"))
+           (uri (crate-uri "tempdir" "0.3.5"))
            (sha256
-            (base32
-             "0kk6abp1qbpv44hkq1yjp7xgpzjzafs83i1l26ycr0aph1gbwig9"))))
-       ("rust-git2-curl"
+            (base16-string->bytevector
+             "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"))))
+       ("rust-termcolor"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "git2-curl" "0.7.0"))
+           (uri (crate-uri "termcolor" "0.3.3"))
            (sha256
-            (base32
-             "13mzqp4rd81zp78261rlq23iw9aaysdr56484y1yy2xzhk3nnrv8"))))
-       ("rust-bufstream"
+            (base16-string->bytevector
+             "9065bced9c3e43453aa3d56f1e98590b8455b341d2fa191a1090c0dd0b242c75"))))
+       ("rust-termion"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "bufstream" "0.1.2"))
+           (uri (crate-uri "termion" "1.5.1"))
            (sha256
-            (base32
-             "0x6h27md1fwabbhbycfldj0wklrpjr520z9p0cpzm60fzzidnj3v"))))
-       ("rust-hamcrest"
+            (base16-string->bytevector
+             "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"))))
+       ("rust-thread-id"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "hamcrest" "0.1.1"))
+           (uri (crate-uri "thread-id" "2.0.0"))
            (sha256
-            (base32
-             "1m49rf7bnkx0qxja56slrjh44zi4z5bjz5x4pblqjw265828y25z"))))
-       ("rust-num"
+            (base16-string->bytevector
+             "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"))))
+       ("rust-thread_local"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num" "0.1.36"))
+           (uri (crate-uri "thread_local" "0.2.7"))
            (sha256
-            (base32
-             "081i1r3mdz6jasqd7qwraqqfqa3sdpvdvxl1xq0s7ip714xw1rxx"))))
-       ("rust-num-traits"
+            (base16-string->bytevector
+             "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"))))
+       ("rust-thread_local-0.3.4"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-traits" "0.1.36"))
+           (uri (crate-uri "thread_local" "0.3.4"))
            (sha256
-            (base32
-             "07688sp4z40p14lh5ywvrpm4zq8kcxzhjks8sg33jsr5da2l4sm1"))))
-       ("rust-num-integer"
+            (base16-string->bytevector
+             "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14"))))
+       ("rust-toml"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-integer" "0.1.32"))
+           (uri (crate-uri "toml" "0.4.5"))
            (sha256
-            (base32
-             "14pvaaawl0pgdcgh4dfdd67lz58yxlfl95bry86h28pjnfzxj97v"))))
-       ("rust-num-bigint"
+            (base16-string->bytevector
+             "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"))))
+       ("rust-unicode-bidi"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-bigint" "0.1.35"))
+           (uri (crate-uri "unicode-bidi" "0.3.4"))
            (sha256
-            (base32
-             "0jayfkdm33p4zvcahlv46zdfhlzg053mpw32abf2lz0z8xw47cc8"))))
-       ("rust-num-rational"
+            (base16-string->bytevector
+             "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"))))
+       ("rust-unicode-normalization"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-rational" "0.1.35"))
+           (uri (crate-uri "unicode-normalization" "0.1.5"))
            (sha256
-            (base32
-             "1bwaygv64qg7i78yqg0v4d0amfhamj598rpy4yxjz9rlhcxn1zsl"))))
-       ("rust-num-iter"
+            (base16-string->bytevector
+             "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"))))
+       ("rust-unicode-xid"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-iter" "0.1.32"))
+           (uri (crate-uri "unicode-xid" "0.0.4"))
            (sha256
-            (base32
-             "0p74nj5c1mc33h9lx4wpmlmggmn5lnkhxv1225g0aix8d6ciqyi8"))))
-       ("rust-num-complex"
+            (base16-string->bytevector
+             "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"))))
+       ("rust-unreachable"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-complex" "0.1.35"))
+           (uri (crate-uri "unreachable" "1.0.0"))
            (sha256
-            (base32
-             "0bzrjfppnnzf9vmkpklhp2dw9sb1lqzydb8r6k83z76i9l2qxizh"))))
-       ("rust-shell-escape"
+            (base16-string->bytevector
+             "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"))))
+       ("rust-url"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "shell-escape" "0.1.3"))
+           (uri (crate-uri "url" "1.5.1"))
+           (sha256
+            (base16-string->bytevector
+             "eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"))))
+       ("rust-userenv-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "userenv-sys" "0.2.0"))
+           (sha256
+            (base16-string->bytevector
+             "71d28ea36bbd9192d75bd9fa9b39f96ddb986eaee824adae5d53b6e51919b2f3"))))
+       ("rust-utf8-ranges"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "utf8-ranges" "0.1.3"))
+           (sha256
+            (base16-string->bytevector
+             "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"))))
+       ("rust-utf8-ranges-1.0.0"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "utf8-ranges" "1.0.0"))
+           (sha256
+            (base16-string->bytevector
+             "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"))))
+       ("rust-vcpkg"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "vcpkg" "0.2.2"))
+           (sha256
+            (base16-string->bytevector
+             "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"))))
+       ("rust-void"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "void" "1.0.2"))
+           (sha256
+            (base16-string->bytevector
+             "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"))))
+       ("rust-walkdir"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "walkdir" "1.0.7"))
+           (sha256
+            (base16-string->bytevector
+             "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"))))
+       ("rust-winapi"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "winapi" "0.2.8"))
            (sha256
-            (base32
-             "1y2fp2brv639icv4a0fdqs1zhlrxq8qbz27ygfa86ifmh5jcjp6x"))))))
+            (base16-string->bytevector
+             "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"))))
+       ("rust-winapi-build"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "winapi-build" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"))))
+       ("rust-wincolor"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "wincolor" "0.1.4"))
+           (sha256
+            (base16-string->bytevector
+             "a39ee4464208f6430992ff20154216ab2357772ac871d994c51628d60e58b8b0"))))
+       ("rust-ws2_32-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "ws2_32-sys" "0.2.1"))
+           (sha256
+            (base16-string->bytevector
+             "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"))))))
     (arguments
      `(#:cargo ,cargo-bootstrap
-       #:tests? #f ; FIXME
+       #:rustc ,rustc ; Force to use rustc from current file
        #:modules
        ((ice-9 match)
         (srfi srfi-1) ; 'every
@@ -853,12 +1262,8 @@ safety and thread safety guarantees.")
         (guix build cargo-build-system))
        #:phases
        (modify-phases %standard-phases
-         ;; Avoid cargo complaining about missmatched checksums.
-         (delete 'patch-source-shebangs)
-         (delete 'patch-generated-file-shebangs)
-         (delete 'patch-usr-bin-file)
-         (add-after 'unpack 'unpack-submodule-sources
-           (lambda* (#:key inputs #:allow-other-keys)
+         (add-after 'unpack 'unpack-dependencies
+           (lambda* (#:key inputs outputs #:allow-other-keys)
              (define (unpack source target)
                (mkdir-p target)
                (with-directory-excursion target
@@ -871,37 +1276,56 @@ safety and thread safety guarantees.")
                (match entry
                  ((name . src)
                   (if (string-prefix? "rust-" name)
-                    (let* ((rust-length (string-length "rust-"))
-                           (rust-name (string-drop name
-                                                   rust-length))
-                           (rsrc (string-append "vendor/"
-                                                rust-name))
-                           (unpack-status (unpack src rsrc)))
-                      (touch (string-append rsrc "/.cargo-ok"))
-                      (generate-checksums rsrc src)
-                      unpack-status)))
+                      (let* ((rust-length (string-length "rust-"))
+                             (rust-name (string-drop name rust-length))
+                             (rsrc (string-append "vendor/" rust-name))
+                             (unpack-status (unpack src rsrc)))
+                        (touch (string-append rsrc "/.cargo-ok"))
+                        (generate-checksums rsrc src)
+                        unpack-status)))
                  (_ #t)))
-               (mkdir "vendor")
-               (every install-rust-library inputs)))
-         (add-after 'unpack 'set-environment-up
+             (mkdir "vendor")
+             (every install-rust-library inputs)))
+         (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((gcc (assoc-ref inputs "gcc"))
-                    (cc (string-append gcc "/bin/gcc")))
-               (mkdir ".cargo")
-               (call-with-output-file ".cargo/config"
-                 (lambda (p)
-                   (format p "
+             (substitute* "Cargo.lock"
+               (("(\"checksum .* = )\".*\"" all name)
+                (string-append name "\"" ,%cargo-reference-hash "\"")))
+             (for-each
+              (lambda (filename)
+                (use-modules (guix build cargo-build-system))
+                (delete-file filename)
+                (let* ((dir (dirname filename)))
+                  (display (string-append
+                            "patch-cargo-checksums: generate-checksums for "
+                            dir "\n"))
+                  (generate-checksums dir ,%cargo-reference-project-file)))
+              (find-files "vendor" ".cargo-checksum.json"))))
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "tests/build.rs"
+               (("/usr/bin/env") (which "env"))
+               ;; Guix llvm compiled without asmjs-unknown-emscripten at all
+               (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
+             (substitute* "tests/death.rs"
+               ;; Stuck when built in container
+               (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
+             (mkdir ".cargo")
+             (call-with-output-file ".cargo/config"
+               (lambda (port)
+                 (display "
 [source.crates-io]
 registry = 'https://github.com/rust-lang/crates.io-index'
 replace-with = 'vendored-sources'
 
 [source.vendored-sources]
 directory = 'vendor'
-")))
-               (setenv "CMAKE_C_COMPILER" cc)
-               (setenv "CC" cc))
-             #t))
-         (delete 'configure))))
+" port)))
+             ;; Disable test for cross compilation support
+             (setenv "CFG_DISABLE_CROSS_TESTS" "1")
+             (setenv "SHELL" (which "sh"))
+             (setenv "CONFIG_SHELL" (which "sh"))
+             (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")))))))
     (home-page "https://github.com/rust-lang/cargo")
     (synopsis "Build tool and package manager for Rust")
     (description "Cargo is a tool that allows Rust projects to declare their
-- 
2.15.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#29555] [PATCHv3] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
  2017-12-09 23:16         ` [bug#29555] [PATCHv3] " Nikolai Merinov
@ 2017-12-10  9:27           ` Danny Milosavljevic
  2017-12-10 21:14             ` [bug#29555] [PATCHv4] " Nikolai Merinov
  0 siblings, 1 reply; 8+ messages in thread
From: Danny Milosavljevic @ 2017-12-10  9:27 UTC (permalink / raw)
  To: Nikolai Merinov; +Cc: adam, 29555

Wow! Nice.

Review below:

+             ;; guix llvm-3.9.1 package install only shared libraries

"installs"

+             (setenv "LLVM_LINK_SHARED" "1")

+         (add-after 'patch-source-shebangs 'patch-cargo-checksums
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/Cargo.lock"
+               (("(\"checksum .* = )\".*\"" all name)
+                (string-append name "\"" ,%cargo-reference-hash "\"")))
+             (for-each
+              (lambda (filename)
+                (use-modules (guix build cargo-build-system))
+                (delete-file filename)
+                (let* ((dir (dirname filename)))
+                  (display (string-append
+                            "patch-cargo-checksums: generate-checksums for "
+                            dir "\n"))
+                  (generate-checksums dir ,%cargo-reference-project-file)))
+              (find-files "src/vendor" ".cargo-checksum.json"))))

Hmm, should return #t on success.

-         (add-after 'install 'wrap-rustc
+                    (jemalloc (assoc-ref inputs "jemalloc")))
+               (call-with-output-file "config.toml"
+                 (lambda (port)
+                   (display (string-append "
+[llvm]
+[build]
+cargo = \"" cargo "/bin/cargo" "\"
+rustc = \"" rustc "/bin/rustc" "\"
+python = \"" python "/bin/python2" "\"
+gdb = \"" gdb "/bin/gdb" "\"
+vendor = true
+submodules = false
+[install]
+prefix = \"" out "\"
+[rust]
+default-linker = \"" gcc "/bin/gcc" "\"
+default-ar = \"" binutils "/bin/ar" "\"
+channel = \"stable\"
+rpath = true
+# There is 2 failed codegen tests:
+# codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
+# This tests required patched LLVM
+codegen-tests = false
+[target." %host-type "]
+llvm-config = \"" llvm "/bin/llvm-config" "\"
+cc = \"" gcc "/bin/gcc" "\"
+cxx = \"" gcc "/bin/g++" "\"
+jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
+[dist]
+") port))))))

Should return #t on success.

+         (add-before 'build 'reset-timestamps-after-changes
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (define ref (stat "README.md"))
+             (for-each
+              (lambda (filename)
+                (set-file-time filename ref))
+              (find-files "." #:directories? #t))))

Same

+         (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((gcc (assoc-ref inputs "gcc"))
-                    (cc (string-append gcc "/bin/gcc")))
-               (mkdir ".cargo")
-               (call-with-output-file ".cargo/config"
-                 (lambda (p)
-                   (format p "
+             (substitute* "Cargo.lock"
+               (("(\"checksum .* = )\".*\"" all name)
+                (string-append name "\"" ,%cargo-reference-hash "\"")))
+             (for-each
+              (lambda (filename)
+                (use-modules (guix build cargo-build-system))
+                (delete-file filename)
+                (let* ((dir (dirname filename)))
+                  (display (string-append
+                            "patch-cargo-checksums: generate-checksums for "
+                            dir "\n"))
+                  (generate-checksums dir ,%cargo-reference-project-file)))
+              (find-files "vendor" ".cargo-checksum.json"))))

Same

+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "tests/build.rs"
+               (("/usr/bin/env") (which "env"))
+               ;; Guix llvm compiled without asmjs-unknown-emscripten at all
+               (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
+             (substitute* "tests/death.rs"
+               ;; Stuck when built in container
+               (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
+             (mkdir ".cargo")
+             (call-with-output-file ".cargo/config"
+               (lambda (port)
+                 (display "
 [source.crates-io]
 registry = 'https://github.com/rust-lang/crates.io-index'
 replace-with = 'vendored-sources'
 
 [source.vendored-sources]
 directory = 'vendor'
-")))
-               (setenv "CMAKE_C_COMPILER" cc)
-               (setenv "CC" cc))
-             #t))
-         (delete 'configure))))
+" port)))
+             ;; Disable test for cross compilation support
+             (setenv "CFG_DISABLE_CROSS_TESTS" "1")
+             (setenv "SHELL" (which "sh"))
+             (setenv "CONFIG_SHELL" (which "sh"))
+             (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")))))))

Same

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#29555] [PATCHv4] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
  2017-12-10  9:27           ` Danny Milosavljevic
@ 2017-12-10 21:14             ` Nikolai Merinov
  0 siblings, 0 replies; 8+ messages in thread
From: Nikolai Merinov @ 2017-12-10 21:14 UTC (permalink / raw)
  To: 29555, Danny Milosavljevic; +Cc: adam

[-- Attachment #1: Type: text/plain, Size: 53 bytes --]

Hi Danny,

Thank you! Updated according to review. 


[-- Attachment #2: 0001-gnu-rust-update-rust-to-1.22.1-and-cargo-to-1.23.0.patch --]
[-- Type: text/x-patch, Size: 69604 bytes --]

From 98158f948031c9c67add7bf9482963e5ebd1b55e Mon Sep 17 00:00:00 2001
From: Nikolay Merinov <nikolay.merinov@member.fsf.org>
Date: Sun, 3 Dec 2017 19:55:24 +0500
Subject: [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0
To: guix-patches@gnu.org

* gnu/packages/rust.scm (%rust-bootstrap-binaries-version): update version
(%rust-bootstrap-binaries): use x86_64 rust bootstrap package for x86_64 build
(%cargo-reference-project-file): Use specific file as "project" file when
patching rust vendored sources
(%cargo-reference-hash): sha256 sum for %cargo-reference-project-file
(rustc-bootstrap): use bootstrap package with host architecture
(cargo-bootstrap): use bootstrap package with host architecture
(rustc): Add new test dependency, fix build issues, use "./x.py" script for
build instead of "./configure"
(cargo): Update dependencies, patch shebangs for vendored sources
* gnu/packages/jemalloc.scm: add jemalloc-4.5.0 release
---
 gnu/packages/jemalloc.scm |   15 +
 gnu/packages/rust.scm     | 1175 +++++++++++++++++++++++++++++++--------------
 2 files changed, 817 insertions(+), 373 deletions(-)

diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm
index a3bd2c93a..5e3e32df8 100644
--- a/gnu/packages/jemalloc.scm
+++ b/gnu/packages/jemalloc.scm
@@ -23,6 +23,7 @@
   #:use-module ((guix licenses) #:select (bsd-2))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (gnu packages perl)
   #:use-module (guix build-system gnu))
 
@@ -62,3 +63,17 @@
      "This library providing a malloc(3) implementation that emphasizes
 fragmentation avoidance and scalable concurrency support.")
     (license bsd-2)))
+
+(define-public jemalloc-4.5.0
+  (package
+    (inherit jemalloc)
+    (version "4.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/jemalloc/jemalloc/releases/download/"
+                    version "/jemalloc-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "10373xhpc10pgmai9fkc1z0rs029qlcb3c0qfnvkbwdlcibdh2cl"))))
+    (inputs '())))
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 583ea37c8..1ae01f106 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
 ;;; Copyright © 2016 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017 Nikolai Merinov <nikolai.merinov@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gdb)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -37,17 +39,19 @@
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages)
   #:use-module (guix build-system cargo)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix download)
+  #:use-module (guix base16)      ;for generated "cargo" native-inputs
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-26))
 
 ;; Should be one less than the current released version.
-(define %rust-bootstrap-binaries-version "1.15.0")
+(define %rust-bootstrap-binaries-version "1.21.0")
 
 (define %rust-bootstrap-binaries
   (origin
@@ -55,10 +59,18 @@
     (uri (string-append
           "https://static.rust-lang.org/dist/"
           "rust-" %rust-bootstrap-binaries-version
-          "-i686-unknown-linux-gnu.tar.gz"))
+          "-" %host-type ".tar.gz"))
     (sha256
      (base32
-      "0wmkfx8pxmkkw021mrq9s3xhra8f0daqdl6j56pxyn4w39i0rzrw"))))
+      (match %host-type
+	("i686-unknown-linux-gnu"
+         "1vnvqwz30hvyjcfr1f602lg43v2vlqjr3yhb5vr8xnrcc07yvjmp")
+	("x86_64-unknown-linux-gnu"
+         "1s0866qcy0645bqhsbs3pvk2hi52ps8jzs7x096w0as033h707ml"))))))
+
+(define %cargo-reference-project-file "/dev/null")
+(define %cargo-reference-hash
+  "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")
 
 (define (increment-rust-version rust-version major patch)
   (match (string-split rust-version #\.)
@@ -92,7 +104,6 @@
     (arguments
      `(#:tests? #f
        #:strip-binaries? #f
-       #:system "i686-linux"
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -103,8 +114,7 @@
                     (gcc:lib (assoc-ref inputs "gcc:lib"))
                     (libc (assoc-ref inputs "libc"))
                     (zlib (assoc-ref inputs "zlib"))
-                    (ld-so (string-append libc
-                                          ,(glibc-dynamic-linker "i686-linux")))
+                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
                     (rpath (string-append out "/lib:" zlib "/lib:"
                                           libc "/lib:" gcc:lib "/lib"))
                     (rustc (string-append out "/bin/rustc"))
@@ -112,7 +122,7 @@
                (system* "bash" "install.sh"
                         (string-append "--prefix=" out)
                         (string-append "--components=rustc,"
-                                       "rust-std-i686-unknown-linux-gnu"))
+                                       "rust-std-" %host-type))
                (for-each (lambda (file)
                            (system* "patchelf" "--set-rpath" rpath file))
                          (cons* rustc rustdoc (find-files out "\\.so$")))
@@ -129,7 +139,7 @@ which can in turn be used to build the final Rust compiler.")
 (define cargo-bootstrap
   (package
     (name "cargo-bootstrap")
-    (version (cargo-version %rust-bootstrap-binaries-version))
+    (version (cargo-version %rust-bootstrap-binaries-version 1))
     (source %rust-bootstrap-binaries)
     (build-system gnu-build-system)
     (native-inputs
@@ -139,7 +149,6 @@ which can in turn be used to build the final Rust compiler.")
     (arguments
      `(#:tests? #f
        #:strip-binaries? #f
-       #:system "i686-linux"
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
@@ -149,8 +158,7 @@ which can in turn be used to build the final Rust compiler.")
              (let* ((out (assoc-ref outputs "out"))
                     (gcc:lib (assoc-ref inputs "gcc:lib"))
                     (libc (assoc-ref inputs "libc"))
-                    (ld-so (string-append libc
-                                          ,(glibc-dynamic-linker "i686-linux")))
+                    (ld-so (string-append libc ,(glibc-dynamic-linker)))
                     (rpath (string-append out "/lib:" libc "/lib:"
                                           gcc:lib "/lib"))
                     (cargo (string-append out "/bin/cargo")))
@@ -196,11 +204,11 @@ manager, which is required to build itself.")
     (description "Meta package for a rust environment. Provides pre-compiled
 rustc-bootstrap and cargo-bootstrap packages.")
     (license license:asl2.0)))
-
+\f
 (define-public rustc
   (package
     (name "rustc")
-    (version (rustc-version %rust-bootstrap-binaries-version))
+    (version (rustc-version %rust-bootstrap-binaries-version 1))
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -208,99 +216,139 @@ rustc-bootstrap and cargo-bootstrap packages.")
                     "rustc-" version "-src.tar.gz"))
               (sha256
                (base32
-                "1d78jq7mc34n265by68amr9r4nzbiqrilfbwh7gx56ydn4gb6rpr"))
-            (modules '((guix build utils)))
-            (snippet
-             `(begin
-                (delete-file-recursively "src/llvm")
-                #t))))
+                "1lrzzp0nh7s61wgfs2h6ilaqi6iq89f1pd1yaf65l87bssyl4ylb"))
+              (modules '((guix build utils)))
+              (snippet
+               `(begin
+                  (delete-file-recursively "src/llvm")
+                  #t))))
     (build-system gnu-build-system)
     (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)
        ("rust-bootstrap" ,rust-bootstrap)
        ("which" ,which)))
     (inputs
-     `(("jemalloc" ,jemalloc)
+     `(("jemalloc" ,jemalloc-4.5.0)
        ("llvm" ,llvm-3.9.1)))
     (arguments
-     `(#:phases
+     `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums'
+       #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'patch-configure
-           (lambda _
-             (substitute* "configure"
-               (("/usr/bin/env") (which "env")) ; Detect target CPU correctly.
-               (("probe_need CFG_CURL curl") "") ; Avoid curl build dependency.
-               ;; Newer LLVM has a NVPTX (NVIDIA) backend which the Rust
-               ;; Makefiles don't know about, causing a linker failure
-               ;; if we don't intervene.
-               ;; Therefore, we add NVPTX here.
-               ;; See <https://github.com/rust-lang/rust/issues/40698>.
-               ;; For the next release, we will have to use rustbuild.
-               ;; Right now, rustbuild doesn't work yet.
-               (("-DLLVM_TARGETS_TO_BUILD='")
-                "-DLLVM_TARGETS_TO_BUILD='NVPTX;")) ; Make LLVM >= 3.8.1 work.
-             (substitute* "src/tools/compiletest/src/util.rs"
-               (("(\"amd64\", \"x86_64\"),") "(\"amd64\", \"x86_64\"),
-(\"nvptx\", \"nvptx\"),")) ; Make LLVM >= 3.8.1 work.
-             (substitute* "mk/main.mk"
-               (("LLVM_OPTIONAL_COMPONENTS=")
-                "LLVM_OPTIONAL_COMPONENTS=nvptx ")) ; Make LLVM >= 3.8.1 work.
-             #t))
          (add-after 'unpack 'set-env
            (lambda _
              (setenv "SHELL" (which "sh"))
              (setenv "CONFIG_SHELL" (which "sh"))
+             ;; guix llvm-3.9.1 package installs only shared libraries
+             (setenv "LLVM_LINK_SHARED" "1")
              #t))
          (add-after 'unpack 'patch-tests
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((bash (assoc-ref inputs "bash")))
-               (substitute* "src/tools/tidy/src/main.rs"
-                 (("^.*cargo.*::check.*$") ""))
+               (substitute* "src/build_helper/lib.rs"
+                 ;; In same folder as gcc there is only "gcc-ar" utility
+                 (("file\\.push_str\\(\"ar\"\\);") "file.push_str(\"gcc-ar\");"))
                (substitute* "src/libstd/process.rs"
                  ;; The newline is intentional.
                  ;; There's a line length "tidy" check in Rust which would
                  ;; fail otherwise.
-                 (("\"/bin/sh\"") (string-append "
-\"" bash "/bin/sh\"")))
-               ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>.
+                 (("\"/bin/sh\"") (string-append "\n\"" bash "/bin/sh\"")))
+               (substitute* "src/libstd/net/tcp.rs"
+                 ;; There is no network in build environment
+                 (("fn connect_timeout_unroutable")
+                  "#[ignore]\nfn connect_timeout_unroutable"))
+               ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00222.html>
                (substitute* "src/libstd/sys/unix/process/process_common.rs"
-                 (("fn test_process_mask") "#[cfg_attr(target_os = \"linux\", ignore)]
-fn test_process_mask"))
+                 (("fn test_process_mask") "#[ignore]\nfn test_process_mask"))
                ;; Our ld-wrapper cannot process non-UTF8 bytes in LIBRARY_PATH.
-               ;; See <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>.
+               ;; <https://lists.gnu.org/archive/html/guix-devel/2017-06/msg00193.html>
                (delete-file-recursively "src/test/run-make/linker-output-non-utf8")
+               (substitute* "src/build_helper/lib.rs"
+                 ;; Bug in Rust code.
+                 ;; Current implementation assume that if dst not exist then it's mtime
+                 ;; is 0, but in same time "src" have 0 mtime in guix build!
+                 (("let threshold = mtime\\(dst\\);")
+                  "if !dst.exists() {\nreturn false\n}\n let threshold = mtime(dst);"))
                #t)))
+         (add-after 'patch-source-shebangs 'patch-cargo-checksums
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "src/Cargo.lock"
+               (("(\"checksum .* = )\".*\"" all name)
+                (string-append name "\"" ,%cargo-reference-hash "\"")))
+             (for-each
+              (lambda (filename)
+                (use-modules (guix build cargo-build-system))
+                (delete-file filename)
+                (let* ((dir (dirname filename)))
+                  (display (string-append
+                            "patch-cargo-checksums: generate-checksums for "
+                            dir "\n"))
+                  (generate-checksums dir ,%cargo-reference-project-file)))
+              (find-files "src/vendor" ".cargo-checksum.json"))
+             #t))
          (replace 'configure
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
                     (gcc (assoc-ref inputs "gcc"))
+                    (gdb (assoc-ref inputs "gdb"))
                     (binutils (assoc-ref inputs "binutils"))
                     (python (assoc-ref inputs "python-2"))
                     (rustc (assoc-ref inputs "rustc-bootstrap"))
+                    (cargo (assoc-ref inputs "cargo-bootstrap"))
                     (llvm (assoc-ref inputs "llvm"))
-                    (jemalloc (assoc-ref inputs "jemalloc"))
-                    (flags (list
-                            (string-append "--prefix=" out)
-                            (string-append "--datadir=" out "/share")
-                            (string-append "--infodir=" out "/share/info")
-                            (string-append "--default-linker=" gcc "/bin/gcc")
-                            (string-append "--default-ar=" binutils "/bin/ar")
-                            (string-append "--python=" python "/bin/python2")
-                            (string-append "--local-rust-root=" rustc)
-                            (string-append "--llvm-root=" llvm)
-                            (string-append "--jemalloc-root=" jemalloc "/lib")
-                            "--release-channel=stable"
-                            "--enable-rpath"
-                            "--enable-local-rust"
-                            "--disable-rustbuild" ; rustbuild doesn't work yet.
-                            "--disable-manage-submodules")))
-               ;; Rust uses a custom configure script (no autoconf).
-               (zero? (apply system* "./configure" flags)))))
+                    (jemalloc (assoc-ref inputs "jemalloc")))
+               (call-with-output-file "config.toml"
+                 (lambda (port)
+                   (display (string-append "
+[llvm]
+[build]
+cargo = \"" cargo "/bin/cargo" "\"
+rustc = \"" rustc "/bin/rustc" "\"
+python = \"" python "/bin/python2" "\"
+gdb = \"" gdb "/bin/gdb" "\"
+vendor = true
+submodules = false
+[install]
+prefix = \"" out "\"
+[rust]
+default-linker = \"" gcc "/bin/gcc" "\"
+default-ar = \"" binutils "/bin/ar" "\"
+channel = \"stable\"
+rpath = true
+# There is 2 failed codegen tests:
+# codegen/mainsubprogram.rs and codegen/mainsubprogramstart.rs
+# This tests required patched LLVM
+codegen-tests = false
+[target." %host-type "]
+llvm-config = \"" llvm "/bin/llvm-config" "\"
+cc = \"" gcc "/bin/gcc" "\"
+cxx = \"" gcc "/bin/g++" "\"
+jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
+[dist]
+") port)))
+               #t)))
+         (add-before 'build 'reset-timestamps-after-changes
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (define ref (stat "README.md"))
+             (for-each
+              (lambda (filename)
+                (set-file-time filename ref))
+              (find-files "." #:directories? #t))
+             #t))
+         (replace 'build
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (zero? (system* "./x.py" "build"))))
+         (replace 'check
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (zero? (system* "./x.py" "test"))))
+         (replace 'install
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (zero? (system* "./x.py" "install"))))
          (add-after 'install 'wrap-rustc
            (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out"))
@@ -325,7 +373,7 @@ safety and thread safety guarantees.")
 (define-public cargo
   (package
     (name "cargo")
-    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version)))
+    (version (cargo-version (rustc-version %rust-bootstrap-binaries-version) 0))
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/rust-lang/cargo/archive/"
@@ -333,7 +381,7 @@ safety and thread safety guarantees.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1y0zy8gk1ly0wh57y78fisk7cdd92qk0x7z664f6l7lzl2krqs7w"))))
+                "0kr7rml7v2bm7zl8jcb3056h63zpyy9m08s212i8vfwxf6lf5fzl"))))
     (build-system cargo-build-system)
     (propagated-inputs
      `(("cmake" ,cmake)
@@ -346,506 +394,870 @@ safety and thread safety guarantees.")
        ("python-2" ,python-2)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("rust-openssl"
+     `(("git" ,git) ; required for tests
+       ;; Next dependencies generated with next command:
+       ;; cat Cargo.lock | awk '
+       ;;   /^"checksum/
+       ;;   { oname=name=$2; vers=$3; hash=$6;
+       ;;     if (ns[name] != 1) { ns[name]=1; } else { name = name "-" vers; }
+       ;;     print "       (\"rust-" name "\"";
+       ;;     print "        ,(origin";
+       ;;     print "           (method url-fetch)";
+       ;;     print "           (uri (crate-uri \"" oname "\" \"" vers "\"))";
+       ;;     print "           (sha256";
+       ;;     print "            (base16-string->bytevector";
+       ;;     print "             " hash "))))"
+       ;;   }'
+       ("rust-advapi32-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl" "0.9.6"))
+           (uri (crate-uri "advapi32-sys" "0.2.0"))
            (sha256
-            (base32
-             "0g28g692gby6izp9qmnwnyxyhf9b0870yhd500p18j9l69lxl00c"))))
-       ("rust-strsim"
+            (base16-string->bytevector
+             "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"))))
+       ("rust-aho-corasick"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "strsim" "0.5.1"))
+           (uri (crate-uri "aho-corasick" "0.5.3"))
            (sha256
-            (base32
-             "0bj4fsm1l2yqbfpspyvjf9m3m50pskapcddzm0ji9c74jbgnkh2h"))))
-       ("rust-libc"
+            (base16-string->bytevector
+             "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"))))
+       ("rust-aho-corasick-0.6.3"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libc" "0.2.18"))
+           (uri (crate-uri "aho-corasick" "0.6.3"))
            (sha256
-            (base32
-             "0w5cghr0wx3hi2sclk8r9iyzlbxsakil87ada40q2ykyhky24655"))))
+            (base16-string->bytevector
+             "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699"))))
+       ("rust-atty"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "atty" "0.2.3"))
+           (sha256
+            (base16-string->bytevector
+             "21e50800ec991574876040fff8ee46b136a53e985286fbe6a3bdfe6421b78860"))))
+       ("rust-backtrace"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "backtrace" "0.3.3"))
+           (sha256
+            (base16-string->bytevector
+             "99f2ce94e22b8e664d95c57fff45b98a966c2252b60691d0b7aeeccd88d70983"))))
+       ("rust-backtrace-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "backtrace-sys" "0.1.14"))
+           (sha256
+            (base16-string->bytevector
+             "c63ea141ef8fdb10409d0f5daf30ac51f84ef43bff66f16627773d2a292cd189"))))
        ("rust-bitflags"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "bitflags" "0.7.0"))
            (sha256
-            (base32
-             "0v8hh6wdkpk9my8z8442g4hqrqf05h0qj53dsay6mv18lqvqklda"))))
-       ("rust-unicode-normalization"
+            (base16-string->bytevector
+             "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d"))))
+       ("rust-bitflags-0.9.1"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "unicode-normalization" "0.1.2"))
+           (uri (crate-uri "bitflags" "0.9.1"))
            (sha256
-            (base32
-             "0whi4xxqcjfsz6ywyrfd5lhgk1a44c86qwgvfqcmzidshcpklr16"))))
-       ("rust-rand"
+            (base16-string->bytevector
+             "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"))))
+       ("rust-bufstream"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "rand" "0.3.14"))
+           (uri (crate-uri "bufstream" "0.1.3"))
            (sha256
-            (base32
-             "1984zvj8572ig28fz6idc4r96fx39h4lzmr07yf7kb7gdn6di497"))))
-       ("rust-gcc"
+            (base16-string->bytevector
+             "f2f382711e76b9de6c744cc00d0497baba02fb00a787f088c879f01d09468e32"))))
+       ("rust-cc"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "gcc" "0.3.39"))
+           (uri (crate-uri "cc" "1.0.0"))
            (sha256
-            (base32
-             "1q0idjvmhp6shkb9hqabh51rgfr8dqpi1xfmyzq7q8vgzybll7kp"))))
-       ("rust-tempdir"
+            (base16-string->bytevector
+             "7db2f146208d7e0fbee761b09cd65a7f51ccc38705d4e7262dad4d73b12a76b1"))))
+       ("rust-cfg-if"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "tempdir" "0.3.5"))
+           (uri (crate-uri "cfg-if" "0.1.2"))
            (sha256
-            (base32
-             "1mij45kgzflkja0h8q9avrik76h5a0b60m9hfd6k9yqxbiplm5w7"))))
-       ("rust-memchr"
+            (base16-string->bytevector
+             "d4c819a1287eb618df47cc647173c5c4c66ba19d888a6e50d605672aed3140de"))))
+       ("rust-cmake"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "memchr" "0.1.11"))
+           (uri (crate-uri "cmake" "0.1.26"))
            (sha256
-            (base32
-             "084d85hjfa3xf5kwdms2mhbkh78m1gl2254cp5swcxj3a7xjkdnq"))))
-       ("rust-rustc-serialize"
+            (base16-string->bytevector
+             "357c07e7a1fc95732793c1edb5901e1a1f305cfcf63a90eb12dbd22bdb6b789d"))))
+       ("rust-commoncrypto"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "rustc-serialize" "0.3.21"))
+           (uri (crate-uri "commoncrypto" "0.2.0"))
            (sha256
-            (base32
-             "064qmyr2508qf78dwcpiv25rfjp9h9vd0wrj4mmwgppjg4fgrydz"))))
-       ("rust-cmake"
+            (base16-string->bytevector
+             "d056a8586ba25a1e4d61cb090900e495952c7886786fc55f909ab2f819b69007"))))
+       ("rust-commoncrypto-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "cmake" "0.1.19"))
+           (uri (crate-uri "commoncrypto-sys" "0.2.0"))
            (sha256
-            (base32
-             "0am8c8ns1h6b1a5x9z2r1m3rszvya5nccl2pzszzjv5aiiaydgcf"))))
-       ("rust-matches"
+            (base16-string->bytevector
+             "1fed34f46747aa73dfaa578069fd8279d2818ade2b55f38f22a9401c7f4083e2"))))
+       ("rust-conv"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "matches" "0.1.4"))
+           (uri (crate-uri "conv" "0.3.3"))
            (sha256
-            (base32
-             "1c8190j84hbicy8jwscw5icfam12j6lcxi02lvmadq9260p65mzg"))))
-       ("rust-winapi"
+            (base16-string->bytevector
+             "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299"))))
+       ("rust-core-foundation"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "winapi" "0.2.8"))
+           (uri (crate-uri "core-foundation" "0.4.4"))
            (sha256
-            (base32
-             "0yh816lh6lf56dpsgxy189c2ai1z3j8mw9si6izqb6wsjkbcjz8n"))))
-       ("rust-pkg-config"
+            (base16-string->bytevector
+             "5909502e547762013619f4c4e01cc7393c20fe2d52d7fa471c1210adb2320dc7"))))
+       ("rust-core-foundation-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "pkg-config" "0.3.8"))
+           (uri (crate-uri "core-foundation-sys" "0.4.4"))
            (sha256
-            (base32
-             "1ypj4nj2z9z27qg06v3g40jyhw685i3l2wi098d21bvyri781vlc"))))
-       ("rust-libssh2-sys"
+            (base16-string->bytevector
+             "bc9fb3d6cb663e6fd7cf1c63f9b144ee2b1e4a78595a0451dd34bff85b9a3387"))))
+       ("rust-crossbeam"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libssh2-sys" "0.2.5"))
+           (uri (crate-uri "crossbeam" "0.2.10"))
            (sha256
-            (base32
-             "0d2r36hrh9vc1821r0v4kywv30svpf37d31calwql69fbij3bqci"))))
-       ("rust-libz-sys"
+            (base16-string->bytevector
+             "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97"))))
+       ("rust-crossbeam-0.3.0"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "crossbeam" "0.3.0"))
+           (sha256
+            (base16-string->bytevector
+             "8837ab96533202c5b610ed44bc7f4183e7957c1c8f56e8cc78bb098593c8ba0a"))))
+       ("rust-crypto-hash"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "crypto-hash" "0.3.0"))
+           (sha256
+            (base16-string->bytevector
+             "34903878eec1694faf53cae8473a088df333181de421d4d3d48061d6559fe602"))))
+       ("rust-curl"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libz-sys" "1.0.13"))
+           (uri (crate-uri "curl" "0.4.8"))
            (sha256
-            (base32
-             "034pgvxzgsv37iafgs0lmvd1ifm0bg0zm1xcsn9x71nn8lm93vp5"))))
+            (base16-string->bytevector
+             "7034c534a1d7d22f7971d6088aa9d281d219ef724026c3428092500f41ae9c2c"))))
        ("rust-curl-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "curl-sys" "0.3.6"))
+           (uri (crate-uri "curl-sys" "0.3.15"))
            (sha256
-            (base32
-             "0fi8kjz3f8m8vfazycs3ddm0h6j3x78hw78gwbvybx71129192i1"))))
-       ("rust-error-chain"
+            (base16-string->bytevector
+             "4bee31aa3a079d5f3ff9579ea4dcfb1b1a17a40886f5f467436d383e78134b55"))))
+       ("rust-custom_derive"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "error-chain" "0.7.2"))
+           (uri (crate-uri "custom_derive" "0.1.7"))
            (sha256
-            (base32
-             "03qjh6l2a9fkiyg0428p7q3dcpi47cbmrqf9zmlymkg43v3v731i"))))
-       ("rust-metadeps"
+            (base16-string->bytevector
+             "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9"))))
+       ("rust-dbghelp-sys"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "metadeps" "1.1.1"))
+           (uri (crate-uri "dbghelp-sys" "0.2.0"))
            (sha256
-            (base32
-             "0l818461bslb7nrs7r1amkqv45n53fcp5sabyqipwx0xxbkzz7w2"))))
-       ("rust-openssl-sys"
+            (base16-string->bytevector
+             "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850"))))
+       ("rust-docopt"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl-sys" "0.9.6"))
+           (uri (crate-uri "docopt" "0.8.1"))
            (sha256
-            (base32
-             "1hzpyf9z8xg1yn5r9g17bl5j20nifd6s2zp10xh90v7m0sd2yj5i"))))
-       ("rust-fs2"
+            (base16-string->bytevector
+             "3b5b93718f8b3e5544fcc914c43de828ca6c6ace23e0332c6080a2977b49787a"))))
+       ("rust-dtoa"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "fs2" "0.3.0"))
+           (uri (crate-uri "dtoa" "0.4.2"))
            (sha256
-            (base32
-             "0lg57mgcm1r0m8jm4nqpcrl6lmxg8lj854k2h0r7qp46pphh2034"))))
-       ("rust-log"
+            (base16-string->bytevector
+             "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"))))
+       ("rust-env_logger"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "env_logger" "0.4.3"))
+           (sha256
+            (base16-string->bytevector
+             "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b"))))
+       ("rust-error-chain"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "log" "0.3.6"))
+           (uri (crate-uri "error-chain" "0.11.0"))
            (sha256
-            (base32
-             "0m40hgs3cg57dd5kk1mabfk6gk8z6l1cihar8akx4kmzz1xlk0xb"))))
+            (base16-string->bytevector
+             "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"))))
        ("rust-filetime"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "filetime" "0.1.10"))
+           (uri (crate-uri "filetime" "0.1.12"))
            (sha256
-            (base32
-             "08p9scgv30i1141cnp5xi4pqlnkfci455nrpca55df1r867anqsk"))))
-       ("rust-tar"
+            (base16-string->bytevector
+             "6ab199bf38537c6f38792669e081e0bb278b9b7405bba2642e4e5d15bf732c0e"))))
+       ("rust-flate2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "flate2" "0.2.20"))
+           (sha256
+            (base16-string->bytevector
+             "e6234dd4468ae5d1e2dbb06fe2b058696fdc50a339c68a393aefbf00bc81e423"))))
+       ("rust-fnv"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "tar" "0.4.9"))
+           (uri (crate-uri "fnv" "1.0.5"))
            (sha256
-            (base32
-             "1vi3nl8s3jjf5l20ni47gmh1p4bdjfh7q50fbg7izzqrf7i4i40c"))))
+            (base16-string->bytevector
+             "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344"))))
+       ("rust-foreign-types"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "foreign-types" "0.2.0"))
+           (sha256
+            (base16-string->bytevector
+             "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"))))
+       ("rust-fs2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "fs2" "0.4.2"))
+           (sha256
+            (base16-string->bytevector
+             "9ab76cfd2aaa59b7bf6688ad9ba15bbae64bff97f04ea02144cfd3443e5c2866"))))
+       ("rust-git2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "git2" "0.6.8"))
+           (sha256
+            (base16-string->bytevector
+             "0c1c0203d653f4140241da0c1375a404f0a397249ec818cd2076c6280c50f6fa"))))
+       ("rust-git2-curl"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "git2-curl" "0.7.0"))
+           (sha256
+            (base16-string->bytevector
+             "68676bc784bf0bef83278898929bf64a251e87c0340723d0b93fa096c9c5bf8e"))))
        ("rust-glob"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "glob" "0.2.11"))
            (sha256
-            (base32
-             "1ysvi72slkw784fcsymgj4308c3y03gwjjzqxp80xdjnkbh8vqcb"))))
-       ("rust-cfg-if"
+            (base16-string->bytevector
+             "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"))))
+       ("rust-globset"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "cfg-if" "0.1.0"))
+           (uri (crate-uri "globset" "0.2.0"))
            (sha256
-            (base32
-             "137qikjcal4h75frzcn6mknygqk8vy5bva7w851aydb5gc6pc7ny"))))
-       ("rust-winapi-build"
+            (base16-string->bytevector
+             "feeb1b6840809ef5efcf7a4a990bc4e1b7ee3df8cf9e2379a75aeb2ba42ac9c3"))))
+       ("rust-hamcrest"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "winapi-build" "0.1.1"))
+           (uri (crate-uri "hamcrest" "0.1.1"))
            (sha256
-            (base32
-             "1g4rqsgjky0a7530qajn2bbfcrl2v0zb39idgdws9b1l7gp5wc9d"))))
-       ("rust-advapi32-sys"
+            (base16-string->bytevector
+             "bf088f042a467089e9baa4972f57f9247e42a0cc549ba264c7a04fbb8ecb89d4"))))
+       ("rust-hex"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "advapi32-sys" "0.2.0"))
+           (uri (crate-uri "hex" "0.2.0"))
            (sha256
-            (base32
-             "16largvlrd1800vvdchml0ngnszjlnpqm01rcz5hm7di1h48hrg0"))))
-       ("rust-gdi32-sys"
+            (base16-string->bytevector
+             "d6a22814455d41612f41161581c2883c0c6a1c41852729b17d5ed88f01e153aa"))))
+       ("rust-home"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "gdi32-sys" "0.2.0"))
+           (uri (crate-uri "home" "0.3.0"))
            (sha256
-            (base32
-             "0605d4ngjsspghwjv4jicajich1gnl0aik9f880ajjzjixd524h9"))))
-       ("rust-ws2_32-sys"
+            (base16-string->bytevector
+             "9f25ae61099d8f3fee8b483df0bd4ecccf4b2731897aad40d50eca1b641fe6db"))))
+       ("rust-idna"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "ws2_32-sys" "0.2.1"))
+           (uri (crate-uri "idna" "0.1.4"))
            (sha256
-            (base32
-             "0ppscg5qfqaw0gzwv2a4nhn5bn01ff9iwn6ysqnzm4n8s3myz76m"))))
-       ("rust-user32-sys"
+            (base16-string->bytevector
+             "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d"))))
+       ("rust-ignore"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "user32-sys" "0.2.0"))
+           (uri (crate-uri "ignore" "0.2.2"))
            (sha256
-            (base32
-             "0ivxc7hmsxax9crdhxdd1nqwik4s9lhb2x59lc8b88bv20fp3x2f"))))
-       ("rust-unicode-bidi"
+            (base16-string->bytevector
+             "b3fcaf2365eb14b28ec7603c98c06cc531f19de9eb283d89a3dff8417c8c99f5"))))
+       ("rust-itoa"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "itoa" "0.3.4"))
+           (sha256
+            (base16-string->bytevector
+             "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c"))))
+       ("rust-jobserver"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "unicode-bidi" "0.2.3"))
+           (uri (crate-uri "jobserver" "0.1.6"))
            (sha256
-            (base32
-             "0gqbyf6slkgzr14nf6v8dw8a19l5snh6bpms8bpfvzpxdawwxxy1"))))
+            (base16-string->bytevector
+             "443ae8bc0af6c106e6e8b77e04684faecc1a5ce94e058f4c2b0a037b0ea1b133"))))
+       ("rust-kernel32-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "kernel32-sys" "0.2.2"))
+           (sha256
+            (base16-string->bytevector
+             "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"))))
+       ("rust-lazy_static"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "lazy_static" "0.2.9"))
+           (sha256
+            (base16-string->bytevector
+             "c9e5e58fa1a4c3b915a561a78a22ee0cac6ab97dca2504428bc1cb074375f8d5"))))
+       ("rust-libc"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libc" "0.2.31"))
+           (sha256
+            (base16-string->bytevector
+             "d1419b2939a0bc44b77feb34661583c7546b532b192feab36249ab584b86856c"))))
+       ("rust-libgit2-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libgit2-sys" "0.6.16"))
+           (sha256
+            (base16-string->bytevector
+             "6f74b4959cef96898f5123148724fc7dee043b9a6b99f219d948851bfbe53cb2"))))
+       ("rust-libssh2-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libssh2-sys" "0.2.6"))
+           (sha256
+            (base16-string->bytevector
+             "0db4ec23611747ef772db1c4d650f8bd762f07b461727ec998f953c614024b75"))))
+       ("rust-libz-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "libz-sys" "1.0.17"))
+           (sha256
+            (base16-string->bytevector
+             "44ebbc760fd2d2f4d93de09a0e13d97e057612052e871da9985cedcb451e6bd5"))))
+       ("rust-log"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "log" "0.3.8"))
+           (sha256
+            (base16-string->bytevector
+             "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"))))
+       ("rust-magenta"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "magenta" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "4bf0336886480e671965f794bc9b6fce88503563013d1bfb7a502c81fe3ac527"))))
+       ("rust-magenta-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "magenta-sys" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "40d014c7011ac470ae28e2f76a02bfea4a8480f73e701353b49ad7a8d75f4699"))))
+       ("rust-matches"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "matches" "0.1.6"))
+           (sha256
+            (base16-string->bytevector
+             "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"))))
+       ("rust-memchr"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "memchr" "0.1.11"))
+           (sha256
+            (base16-string->bytevector
+             "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"))))
+       ("rust-memchr-1.0.1"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "memchr" "1.0.1"))
+           (sha256
+            (base16-string->bytevector
+             "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"))))
+       ("rust-miniz-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "miniz-sys" "0.1.10"))
+           (sha256
+            (base16-string->bytevector
+             "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4"))))
+       ("rust-miow"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "miow" "0.2.1"))
+           (sha256
+            (base16-string->bytevector
+             "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"))))
        ("rust-net2"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "net2" "0.2.26"))
+           (uri (crate-uri "net2" "0.2.31"))
            (sha256
-            (base32
-             "1qp3q6xynb481rsp3ig1nmqb6qlxfba3shfrmqij88cppsv9rpsy"))))
-       ("rust-utf8-ranges"
+            (base16-string->bytevector
+             "3a80f842784ef6c9a958b68b7516bc7e35883c614004dd94959a4dca1b716c09"))))
+       ("rust-num"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "utf8-ranges" "0.1.3"))
+           (uri (crate-uri "num" "0.1.40"))
            (sha256
-            (base32
-             "03xf604b2v51ag3jgzw92l97xnb10kw9zv948bhc7ja1ik017jm1"))))
-       ("rust-crossbeam"
+            (base16-string->bytevector
+             "a311b77ebdc5dd4cf6449d81e4135d9f0e3b153839ac90e648a8ef538f923525"))))
+       ("rust-num-bigint"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "crossbeam" "0.2.10"))
+           (uri (crate-uri "num-bigint" "0.1.40"))
            (sha256
-            (base32
-             "15wga0kvk3iqf3l077957j931brf1pl3p74xibd698jccqas4phc"))))
-       ("rust-toml"
+            (base16-string->bytevector
+             "8fd0f8dbb4c0960998958a796281d88c16fbe68d87b1baa6f31e2979e81fd0bd"))))
+       ("rust-num-complex"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "toml" "0.2.1"))
+           (uri (crate-uri "num-complex" "0.1.40"))
            (sha256
-            (base32
-             "1d1cz43bxrx4fd6j2p6myckf81f72bp47akg36y3flxjkhj60svk"))))
-       ("rust-aho-corasick"
+            (base16-string->bytevector
+             "503e668405c5492d67cf662a81e05be40efe2e6bcf10f7794a07bd9865e704e6"))))
+       ("rust-num-integer"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "aho-corasick" "0.5.3"))
+           (uri (crate-uri "num-integer" "0.1.35"))
+           (sha256
+            (base16-string->bytevector
+             "d1452e8b06e448a07f0e6ebb0bb1d92b8890eea63288c0b627331d53514d0fba"))))
+       ("rust-num-iter"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-iter" "0.1.34"))
+           (sha256
+            (base16-string->bytevector
+             "7485fcc84f85b4ecd0ea527b14189281cf27d60e583ae65ebc9c088b13dffe01"))))
+       ("rust-num-rational"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-rational" "0.1.39"))
+           (sha256
+            (base16-string->bytevector
+             "288629c76fac4b33556f4b7ab57ba21ae202da65ba8b77466e6d598e31990790"))))
+       ("rust-num-traits"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num-traits" "0.1.40"))
+           (sha256
+            (base16-string->bytevector
+             "99843c856d68d8b4313b03a17e33c4bb42ae8f6610ea81b28abe076ac721b9b0"))))
+       ("rust-num_cpus"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "num_cpus" "1.7.0"))
+           (sha256
+            (base16-string->bytevector
+             "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d"))))
+       ("rust-openssl"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl" "0.9.19"))
+           (sha256
+            (base16-string->bytevector
+             "816914b22eb15671d62c73442a51978f311e911d6a6f6cbdafa6abce1b5038fc"))))
+       ("rust-openssl-probe"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl-probe" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "d98df0270d404ccd3c050a41d579c52d1db15375168bb3471e04ec0f5f378daf"))))
+       ("rust-openssl-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "openssl-sys" "0.9.19"))
+           (sha256
+            (base16-string->bytevector
+             "1e4c63a7d559c1e5afa6d6a9e6fa34bbc5f800ffc9ae08b72c605420b0c4f5e8"))))
+       ("rust-percent-encoding"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "percent-encoding" "1.0.0"))
+           (sha256
+            (base16-string->bytevector
+             "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"))))
+       ("rust-pkg-config"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "pkg-config" "0.3.9"))
            (sha256
-            (base32
-             "0rnvdmlajikq0i4zdy1p3pv699q6apvsxfc7av7byhppllp2r5ya"))))
+            (base16-string->bytevector
+             "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"))))
        ("rust-psapi-sys"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "psapi-sys" "0.1.0"))
            (sha256
-            (base32
-             "0y14g8qshsfnmb7nk2gs1rpbrs1wrggajmzp4yby4q6k0wd5vkdb"))))
-       ("rust-idna"
+            (base16-string->bytevector
+             "abcd5d1a07d360e29727f757a9decb3ce8bc6e0efa8969cfaad669a8317a2478"))))
+       ("rust-quote"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "idna" "0.1.0"))
+           (uri (crate-uri "quote" "0.3.15"))
            (sha256
-            (base32
-             "049c2rmlydrrrgrxdaq2v21adx9vkfh6k9x4xj56ckyf01p26lqh"))))
-       ("rust-url"
+            (base16-string->bytevector
+             "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"))))
+       ("rust-rand"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "rand" "0.3.16"))
+           (sha256
+            (base16-string->bytevector
+             "eb250fd207a4729c976794d03db689c9be1d634ab5a1c9da9492a13d8fecbcdf"))))
+       ("rust-redox_syscall"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "redox_syscall" "0.1.31"))
+           (sha256
+            (base16-string->bytevector
+             "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509"))))
+       ("rust-redox_termios"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "url" "1.2.3"))
+           (uri (crate-uri "redox_termios" "0.1.1"))
            (sha256
-            (base32
-             "1myr1i8djbl2bhvvrm6n3h7bj7sl6kh5dmaaz2f7c6x8hyyzgk28"))))
+            (base16-string->bytevector
+             "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76"))))
+       ("rust-regex"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "regex" "0.1.80"))
+           (sha256
+            (base16-string->bytevector
+             "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"))))
+       ("rust-regex-0.2.2"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "regex" "0.2.2"))
+           (sha256
+            (base16-string->bytevector
+             "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"))))
        ("rust-regex-syntax"
         ,(origin
            (method url-fetch)
            (uri (crate-uri "regex-syntax" "0.3.9"))
            (sha256
-            (base32
-             "0ms9hgdhhsxw9w920i7gipydvagf100bb56jbs192rz86ln01v7r"))))
-       ("rust-kernel32-sys"
+            (base16-string->bytevector
+             "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"))))
+       ("rust-regex-syntax-0.4.1"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "kernel32-sys" "0.2.2"))
+           (uri (crate-uri "regex-syntax" "0.4.1"))
            (sha256
-            (base32
-             "1389av0601a9yz8dvx5zha9vmkd6ik7ax0idpb032d28555n41vm"))))
-       ("rust-term"
+            (base16-string->bytevector
+             "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"))))
+       ("rust-rustc-demangle"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "term" "0.4.4"))
+           (uri (crate-uri "rustc-demangle" "0.1.5"))
            (sha256
-            (base32
-             "0jpr7jb1xidadh0arklwr99r8w1k1dfc4an3ginpsq5nnfigivrx"))))
-       ("rust-thread-id"
+            (base16-string->bytevector
+             "aee45432acc62f7b9a108cc054142dac51f979e69e71ddce7d6fc7adf29e817e"))))
+       ("rust-rustc-serialize"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "thread-id" "2.0.0"))
+           (uri (crate-uri "rustc-serialize" "0.3.24"))
            (sha256
-            (base32
-             "00zzs2bx1xw8aqm5plqqgr7bc2zz6zkqrdxq8vpiqb8hc2srslx9"))))
-       ("rust-thread_local"
+            (base16-string->bytevector
+             "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"))))
+       ("rust-same-file"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "thread_local" "0.2.7"))
+           (uri (crate-uri "same-file" "0.1.3"))
            (sha256
-            (base32
-             "1mgxikqvhpsic6xk7pan95lvgsky1sdxzw2w5m2l35pgrazxnxl5"))))
-       ("rust-miow"
+            (base16-string->bytevector
+             "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7"))))
+       ("rust-scoped-tls"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "miow" "0.1.3"))
+           (uri (crate-uri "scoped-tls" "0.1.0"))
            (sha256
-            (base32
-             "16jvfjsp6fr4mbd2sw5hcdmi4dsa0m0aa45gjz78mb1h4mwcdgym"))))
-       ("rust-regex"
+            (base16-string->bytevector
+             "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"))))
+       ("rust-scopeguard"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "regex" "0.1.80"))
+           (uri (crate-uri "scopeguard" "0.1.2"))
            (sha256
-            (base32
-             "0bs036h3vzc6pj5jj4vc909s9rppq7b808ic99qn0y6gm3karm2g"))))
-       ("rust-num_cpus"
+            (base16-string->bytevector
+             "59a076157c1e2dc561d8de585151ee6965d910dd4dcb5dabb7ae3e83981a6c57"))))
+       ("rust-semver"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num_cpus" "1.1.0"))
+           (uri (crate-uri "semver" "0.8.0"))
            (sha256
-            (base32
-             "1bfwcn3yhwa31rinjw9yr7b6gvn6c06hnwnjz06pvm938w4fd448"))))
-       ("rust-libgit2-sys"
+            (base16-string->bytevector
+             "bee2bc909ab2d8d60dab26e8cad85b25d795b14603a0dcb627b78b9d30b6454b"))))
+       ("rust-semver-parser"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "libgit2-sys" "0.6.6"))
+           (uri (crate-uri "semver-parser" "0.7.0"))
            (sha256
-            (base32
-             "074h9q4p60xh6canb0sj4vrc801wqv6p53l9lp0q724bkwzf7967"))))
-       ("rust-env_logger"
+            (base16-string->bytevector
+             "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"))))
+       ("rust-serde"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "env_logger" "0.3.5"))
+           (uri (crate-uri "serde" "1.0.15"))
            (sha256
-            (base32
-             "0bvcjgkw4s3k1rd7glpflgc8s9a393zjd6jfdgvs8gjvwj0dgaqm"))))
-       ("rust-openssl-probe"
+            (base16-string->bytevector
+             "6a7046c9d4c6c522d10b2d098f9bebe2bef227e0e74044d8c1bfcf6b476af799"))))
+       ("rust-serde_derive"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "openssl-probe" "0.1.0"))
+           (uri (crate-uri "serde_derive" "1.0.15"))
            (sha256
-            (base32
-             "0689h6rhzy6dypqr90lsxnf108nsnh952wsx7ggs70s48b44jvbm"))))
-       ("rust-lazy_static"
+            (base16-string->bytevector
+             "1afcaae083fd1c46952a315062326bc9957f182358eb7da03b57ef1c688f7aa9"))))
+       ("rust-serde_derive_internals"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "lazy_static" "0.2.2"))
+           (uri (crate-uri "serde_derive_internals" "0.16.0"))
            (sha256
-            (base32
-             "16z1h7w702sxnscak38jykxlhxq0b5ip4mndlb46pkaqwzi0xgka"))))
-       ("rust-semver-parser"
+            (base16-string->bytevector
+             "bd381f6d01a6616cdba8530492d453b7761b456ba974e98768a18cad2cd76f58"))))
+       ("rust-serde_ignored"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "semver-parser" "0.6.1"))
+           (uri (crate-uri "serde_ignored" "0.0.4"))
            (sha256
-            (base32
-             "1s8s7a7yg8xhgci17y0xhyyncg229byivhpr0wbs3ljdlyjl73p8"))))
-       ("rust-semver"
+            (base16-string->bytevector
+             "190e9765dcedb56be63b6e0993a006c7e3b071a016a304736e4a315dc01fb142"))))
+       ("rust-serde_json"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "semver" "0.5.1"))
+           (uri (crate-uri "serde_json" "1.0.3"))
            (sha256
-            (base32
-             "1xbiv8l72rmngb3lgbmk3vd4lalcbzxcnrn085c2b75irl7gcbxf"))))
-       ("rust-docopt"
+            (base16-string->bytevector
+             "d243424e06f9f9c39e3cd36147470fd340db785825e367625f79298a6ac6b7ac"))))
+       ("rust-shell-escape"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "docopt" "0.6.86"))
+           (uri (crate-uri "shell-escape" "0.1.3"))
            (sha256
-            (base32
-             "1nf4f4zf5yk0d0l4kl7hkii4na22fhn0l2hgfb46yzv08l2g6zja"))))
-       ("rust-miniz-sys"
+            (base16-string->bytevector
+             "dd5cc96481d54583947bfe88bf30c23d53f883c6cd0145368b69989d97b84ef8"))))
+       ("rust-socket2"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "miniz-sys" "0.1.7"))
+           (uri (crate-uri "socket2" "0.2.3"))
            (sha256
-            (base32
-             "0m7dlggsxash0k5jkx576p556g9r8vnhyl9244gjxhq1g8rls7wx"))))
-       ("rust-curl"
+            (base16-string->bytevector
+             "9e76b159741052c7deaa9fd0b5ca6b5f79cecf525ed665abfe5002086c6b2791"))))
+       ("rust-strsim"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "curl" "0.4.1"))
+           (uri (crate-uri "strsim" "0.6.0"))
            (sha256
-            (base32
-             "1b0y27b6vpqffgzm2kxc1s2i6bgdzxk3wn65g2asbcdxrvys3mcg"))))
-       ("rust-flate2"
+            (base16-string->bytevector
+             "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694"))))
+       ("rust-syn"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "flate2" "0.2.14"))
+           (uri (crate-uri "syn" "0.11.11"))
            (sha256
-            (base32
-             "1fx3zsls5bb1zfx87s5sxkgk853z4nhjsbvq5s6if13kjlg4isry"))))
-       ("rust-git2"
+            (base16-string->bytevector
+             "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"))))
+       ("rust-synom"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "git2" "0.6.3"))
+           (uri (crate-uri "synom" "0.11.3"))
            (sha256
-            (base32
-             "06b1bw3pwszs8617xn8js6h0j983qjgfwsychw33lshccj3cld05"))))
-       ("rust-crates-io"
+            (base16-string->bytevector
+             "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"))))
+       ("rust-tar"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "crates-io" "0.4.0"))
+           (uri (crate-uri "tar" "0.4.13"))
            (sha256
-            (base32
-             "0kk6abp1qbpv44hkq1yjp7xgpzjzafs83i1l26ycr0aph1gbwig9"))))
-       ("rust-git2-curl"
+            (base16-string->bytevector
+             "281285b717926caa919ad905ef89c63d75805c7d89437fb873100925a53f2b1b"))))
+       ("rust-tempdir"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "git2-curl" "0.7.0"))
+           (uri (crate-uri "tempdir" "0.3.5"))
            (sha256
-            (base32
-             "13mzqp4rd81zp78261rlq23iw9aaysdr56484y1yy2xzhk3nnrv8"))))
-       ("rust-bufstream"
+            (base16-string->bytevector
+             "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"))))
+       ("rust-termcolor"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "bufstream" "0.1.2"))
+           (uri (crate-uri "termcolor" "0.3.3"))
            (sha256
-            (base32
-             "0x6h27md1fwabbhbycfldj0wklrpjr520z9p0cpzm60fzzidnj3v"))))
-       ("rust-hamcrest"
+            (base16-string->bytevector
+             "9065bced9c3e43453aa3d56f1e98590b8455b341d2fa191a1090c0dd0b242c75"))))
+       ("rust-termion"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "hamcrest" "0.1.1"))
+           (uri (crate-uri "termion" "1.5.1"))
            (sha256
-            (base32
-             "1m49rf7bnkx0qxja56slrjh44zi4z5bjz5x4pblqjw265828y25z"))))
-       ("rust-num"
+            (base16-string->bytevector
+             "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"))))
+       ("rust-thread-id"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num" "0.1.36"))
+           (uri (crate-uri "thread-id" "2.0.0"))
            (sha256
-            (base32
-             "081i1r3mdz6jasqd7qwraqqfqa3sdpvdvxl1xq0s7ip714xw1rxx"))))
-       ("rust-num-traits"
+            (base16-string->bytevector
+             "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"))))
+       ("rust-thread_local"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-traits" "0.1.36"))
+           (uri (crate-uri "thread_local" "0.2.7"))
            (sha256
-            (base32
-             "07688sp4z40p14lh5ywvrpm4zq8kcxzhjks8sg33jsr5da2l4sm1"))))
-       ("rust-num-integer"
+            (base16-string->bytevector
+             "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"))))
+       ("rust-thread_local-0.3.4"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-integer" "0.1.32"))
+           (uri (crate-uri "thread_local" "0.3.4"))
            (sha256
-            (base32
-             "14pvaaawl0pgdcgh4dfdd67lz58yxlfl95bry86h28pjnfzxj97v"))))
-       ("rust-num-bigint"
+            (base16-string->bytevector
+             "1697c4b57aeeb7a536b647165a2825faddffb1d3bad386d507709bd51a90bb14"))))
+       ("rust-toml"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-bigint" "0.1.35"))
+           (uri (crate-uri "toml" "0.4.5"))
            (sha256
-            (base32
-             "0jayfkdm33p4zvcahlv46zdfhlzg053mpw32abf2lz0z8xw47cc8"))))
-       ("rust-num-rational"
+            (base16-string->bytevector
+             "a7540f4ffc193e0d3c94121edb19b055670d369f77d5804db11ae053a45b6e7e"))))
+       ("rust-unicode-bidi"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-rational" "0.1.35"))
+           (uri (crate-uri "unicode-bidi" "0.3.4"))
            (sha256
-            (base32
-             "1bwaygv64qg7i78yqg0v4d0amfhamj598rpy4yxjz9rlhcxn1zsl"))))
-       ("rust-num-iter"
+            (base16-string->bytevector
+             "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5"))))
+       ("rust-unicode-normalization"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-iter" "0.1.32"))
+           (uri (crate-uri "unicode-normalization" "0.1.5"))
            (sha256
-            (base32
-             "0p74nj5c1mc33h9lx4wpmlmggmn5lnkhxv1225g0aix8d6ciqyi8"))))
-       ("rust-num-complex"
+            (base16-string->bytevector
+             "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"))))
+       ("rust-unicode-xid"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "num-complex" "0.1.35"))
+           (uri (crate-uri "unicode-xid" "0.0.4"))
            (sha256
-            (base32
-             "0bzrjfppnnzf9vmkpklhp2dw9sb1lqzydb8r6k83z76i9l2qxizh"))))
-       ("rust-shell-escape"
+            (base16-string->bytevector
+             "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"))))
+       ("rust-unreachable"
         ,(origin
            (method url-fetch)
-           (uri (crate-uri "shell-escape" "0.1.3"))
+           (uri (crate-uri "unreachable" "1.0.0"))
+           (sha256
+            (base16-string->bytevector
+             "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"))))
+       ("rust-url"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "url" "1.5.1"))
+           (sha256
+            (base16-string->bytevector
+             "eeb819346883532a271eb626deb43c4a1bb4c4dd47c519bd78137c3e72a4fe27"))))
+       ("rust-userenv-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "userenv-sys" "0.2.0"))
            (sha256
-            (base32
-             "1y2fp2brv639icv4a0fdqs1zhlrxq8qbz27ygfa86ifmh5jcjp6x"))))))
+            (base16-string->bytevector
+             "71d28ea36bbd9192d75bd9fa9b39f96ddb986eaee824adae5d53b6e51919b2f3"))))
+       ("rust-utf8-ranges"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "utf8-ranges" "0.1.3"))
+           (sha256
+            (base16-string->bytevector
+             "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"))))
+       ("rust-utf8-ranges-1.0.0"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "utf8-ranges" "1.0.0"))
+           (sha256
+            (base16-string->bytevector
+             "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"))))
+       ("rust-vcpkg"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "vcpkg" "0.2.2"))
+           (sha256
+            (base16-string->bytevector
+             "9e0a7d8bed3178a8fb112199d466eeca9ed09a14ba8ad67718179b4fd5487d0b"))))
+       ("rust-void"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "void" "1.0.2"))
+           (sha256
+            (base16-string->bytevector
+             "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"))))
+       ("rust-walkdir"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "walkdir" "1.0.7"))
+           (sha256
+            (base16-string->bytevector
+             "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff"))))
+       ("rust-winapi"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "winapi" "0.2.8"))
+           (sha256
+            (base16-string->bytevector
+             "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"))))
+       ("rust-winapi-build"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "winapi-build" "0.1.1"))
+           (sha256
+            (base16-string->bytevector
+             "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"))))
+       ("rust-wincolor"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "wincolor" "0.1.4"))
+           (sha256
+            (base16-string->bytevector
+             "a39ee4464208f6430992ff20154216ab2357772ac871d994c51628d60e58b8b0"))))
+       ("rust-ws2_32-sys"
+        ,(origin
+           (method url-fetch)
+           (uri (crate-uri "ws2_32-sys" "0.2.1"))
+           (sha256
+            (base16-string->bytevector
+             "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"))))))
     (arguments
      `(#:cargo ,cargo-bootstrap
-       #:tests? #f ; FIXME
+       #:rustc ,rustc ; Force to use rustc from current file
        #:modules
        ((ice-9 match)
         (srfi srfi-1) ; 'every
@@ -853,12 +1265,8 @@ safety and thread safety guarantees.")
         (guix build cargo-build-system))
        #:phases
        (modify-phases %standard-phases
-         ;; Avoid cargo complaining about missmatched checksums.
-         (delete 'patch-source-shebangs)
-         (delete 'patch-generated-file-shebangs)
-         (delete 'patch-usr-bin-file)
-         (add-after 'unpack 'unpack-submodule-sources
-           (lambda* (#:key inputs #:allow-other-keys)
+         (add-after 'unpack 'unpack-dependencies
+           (lambda* (#:key inputs outputs #:allow-other-keys)
              (define (unpack source target)
                (mkdir-p target)
                (with-directory-excursion target
@@ -871,37 +1279,58 @@ safety and thread safety guarantees.")
                (match entry
                  ((name . src)
                   (if (string-prefix? "rust-" name)
-                    (let* ((rust-length (string-length "rust-"))
-                           (rust-name (string-drop name
-                                                   rust-length))
-                           (rsrc (string-append "vendor/"
-                                                rust-name))
-                           (unpack-status (unpack src rsrc)))
-                      (touch (string-append rsrc "/.cargo-ok"))
-                      (generate-checksums rsrc src)
-                      unpack-status)))
+                      (let* ((rust-length (string-length "rust-"))
+                             (rust-name (string-drop name rust-length))
+                             (rsrc (string-append "vendor/" rust-name))
+                             (unpack-status (unpack src rsrc)))
+                        (touch (string-append rsrc "/.cargo-ok"))
+                        (generate-checksums rsrc src)
+                        unpack-status)))
                  (_ #t)))
-               (mkdir "vendor")
-               (every install-rust-library inputs)))
-         (add-after 'unpack 'set-environment-up
+             (mkdir "vendor")
+             (every install-rust-library inputs)))
+         (add-after 'patch-generated-file-shebangs 'patch-cargo-checksums
            (lambda* (#:key inputs #:allow-other-keys)
-             (let* ((gcc (assoc-ref inputs "gcc"))
-                    (cc (string-append gcc "/bin/gcc")))
-               (mkdir ".cargo")
-               (call-with-output-file ".cargo/config"
-                 (lambda (p)
-                   (format p "
+             (substitute* "Cargo.lock"
+               (("(\"checksum .* = )\".*\"" all name)
+                (string-append name "\"" ,%cargo-reference-hash "\"")))
+             (for-each
+              (lambda (filename)
+                (use-modules (guix build cargo-build-system))
+                (delete-file filename)
+                (let* ((dir (dirname filename)))
+                  (display (string-append
+                            "patch-cargo-checksums: generate-checksums for "
+                            dir "\n"))
+                  (generate-checksums dir ,%cargo-reference-project-file)))
+              (find-files "vendor" ".cargo-checksum.json"))
+             #t))
+         (replace 'configure
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "tests/build.rs"
+               (("/usr/bin/env") (which "env"))
+               ;; Guix llvm compiled without asmjs-unknown-emscripten at all
+               (("fn wasm32_final_outputs") "#[ignore]\nfn wasm32_final_outputs"))
+             (substitute* "tests/death.rs"
+               ;; Stuck when built in container
+               (("fn ctrl_c_kills_everyone") "#[ignore]\nfn ctrl_c_kills_everyone"))
+             (mkdir ".cargo")
+             (call-with-output-file ".cargo/config"
+               (lambda (port)
+                 (display "
 [source.crates-io]
 registry = 'https://github.com/rust-lang/crates.io-index'
 replace-with = 'vendored-sources'
 
 [source.vendored-sources]
 directory = 'vendor'
-")))
-               (setenv "CMAKE_C_COMPILER" cc)
-               (setenv "CC" cc))
-             #t))
-         (delete 'configure))))
+" port)))
+             ;; Disable test for cross compilation support
+             (setenv "CFG_DISABLE_CROSS_TESTS" "1")
+             (setenv "SHELL" (which "sh"))
+             (setenv "CONFIG_SHELL" (which "sh"))
+             (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc"))
+             #t)))))
     (home-page "https://github.com/rust-lang/cargo")
     (synopsis "Build tool and package manager for Rust")
     (description "Cargo is a tool that allows Rust projects to declare their
-- 
2.15.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-12-10 21:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-03 19:01 [bug#29555] [PATCH] gnu: rust: update rust to 1.22.1 and cargo to 1.23.0 Nikolai Merinov
2017-12-04  7:02 ` ng0
2017-12-04 14:33 ` Jelle Licht
2017-12-04 14:54   ` Nikolai Merinov
2017-12-04 16:05     ` Danny Milosavljevic
     [not found]       ` <87o9ndn1rm.fsf@member.fsf.org>
2017-12-09 23:16         ` [bug#29555] [PATCHv3] " Nikolai Merinov
2017-12-10  9:27           ` Danny Milosavljevic
2017-12-10 21:14             ` [bug#29555] [PATCHv4] " Nikolai Merinov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).