Subject: [bug#42179] [PATCH] gnu: Add racer.

From: John Soo <[email-masked]>
Date: Fri, 03 Jul 2020 09:14:59 -0700

Hi Guix,

I have been writing a lot of Rust recently. Racer provides
autocompletion. It uses the source of rust standard libraries among
other tools.

There are two items I paid close attention to:

1. Add a "source" output for rust.  This roughly corresponds to the
rustup component.  Using the rustup toolchain to manage rust tooling the
command would be: rustup component add rust-src. However, using guix, we
already have the source.

2. Racer requires features that are not in the stable branch of rust.
Unfortunately this is not any fault of racer. Racer uses crates from
rustc which uses unstable features.  To get around this, I built
racer using the undocumented and unsupported RUSTC_BOOTSTRAP environment
variable. Perhaps the better future solution would be to provide a
nightly rustc and use that to compile racer.

I hope someone gets some use out of racer!

- John

>From 5fb577b5c099f655218f0ca02a814231ac724dc6 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 18:51:23 -0700
Subject: [PATCH 01/33] gnu: Add rust-peg-runtime-0.6.

* gnu/packages/crates-io.scm (rust-peg-runtime-0.6): New variable.
---
 gnu/packages/crates-io.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2bd92c0f8e..3624205708 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -16051,6 +16051,29 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-peg-runtime-0.6
+  (package
+    (name "rust-peg-runtime")
+    (version "0.6.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "peg-runtime" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "0r583cq923v0narrpq73qmp780yg4pablzklhrwnr64xwsbjh6hc"))))
+    (build-system cargo-build-system)
+    (home-page
+      "https://github.com/kevinmehall/rust-peg")
+    (synopsis
+      "Runtime support for rust-peg grammars")
+    (description
+      "PEG provides a Parsing Expression Grammar.  This package provides
+runtime support for rust-peg grammars.  To use rust-peg, see the peg crate.")
+    (license license:expat)))
+
 (define-public rust-percent-encoding-2.1
   (package
     (name "rust-percent-encoding")
-- 
2.26.2

>From e0c892d70e387d9684c9e836d0ae237c978aeae3 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 18:52:05 -0700
Subject: [PATCH 02/33] gnu: Add rust-peg-macros-0.6.

* gnu/packages/crates-io.scm (rust-peg-macros-0.6): New variable.
---
 gnu/packages/crates-io.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 3624205708..d6ad6e06f2 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -16051,6 +16051,34 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-peg-macros-0.6
+  (package
+    (name "rust-peg-macros")
+    (version "0.6.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "peg-macros" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "0li8qrb8hyqr7v5mhrkym0xp7ijnbksqviqc2i3556cysdgick62"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs
+        (("rust-peg-runtime" ,rust-peg-runtime-0.6)
+         ("rust-proc-macro2" ,rust-proc-macro2-1.0)
+         ("rust-quote" ,rust-quote-1.0))))
+    (home-page
+      "https://github.com/kevinmehall/rust-peg")
+    (synopsis
+      "Procedural macros for rust-peg")
+    (description
+      "PEG provides a Parsing Expression Grammar.  This package provides
+procedural macros for rust-peg.  To use rust-peg, see the peg package.")
+    (license license:expat)))
+
 (define-public rust-peg-runtime-0.6
   (package
     (name "rust-peg-runtime")
-- 
2.26.2

>From 7fce9928182d0682daec8f680444f7e8fdd85b98 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 18:52:31 -0700
Subject: [PATCH 03/33] gnu: Add rust-peg-0.6.

* gnu/packages/crates-io.scm (rust-peg-0.6): New variable.
---
 gnu/packages/crates-io.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index d6ad6e06f2..aadb153548 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -16051,6 +16051,35 @@ the @code{take_while} predicate returned false after dropping the @code{by_ref}.
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-peg-0.6
+  (package
+    (name "rust-peg")
+    (version "0.6.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "peg" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "15rfp12dgsynplphp443zfw47m2d5snvdm6a25gz48dv2if8fxch"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-peg-macros" ,rust-peg-macros-0.6)
+        ("rust-peg-runtime" ,rust-peg-runtime-0.6))
+       #:cargo-development-inputs
+       (("rust-trybuild" ,rust-trybuild-1.0))))
+    (home-page
+     "https://github.com/kevinmehall/rust-peg")
+    (synopsis
+     "A simple Parsing Expression Grammar (PEG) parser generator")
+    (description
+     "PEG provides a simple Parsing Expression Grammar (PEG) parser generator
+in Rust.")
+    (license license:expat)))
+
 (define-public rust-peg-macros-0.6
   (package
     (name "rust-peg-macros")
-- 
2.26.2

>From 494ef6c83f3e7067e4f8f98a4fa11b5f2bbfbe6f Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 18:52:55 -0700
Subject: [PATCH 04/33] gnu: Add rust-derive-more-0.99.

* gnu/packages/crates-io.scm (rust-derive-more-0.99): New variable.
---
 gnu/packages/crates-io.scm | 39 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index aadb153548..28dc5b2fcf 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -5077,6 +5077,45 @@ for arbitrary structs.")
     (description "Internal helper library for the derive_builder crate.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-derive-more-0.99
+  (package
+    (name "rust-derive-more")
+    (version "0.99.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "derive-more" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0wfnn4bjw5kmcr4h70kxhsbf8gd9alrw5kd6kmkp9mr0z18m6rdw"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0))
+       #:cargo-development-inputs
+       (("rust-peg" ,rust-peg-0.6)
+        ("rust-rustc-version" ,rust-rustc-version-0.2))))
+    (home-page
+     "https://github.com/JelteF/derive_more")
+    (synopsis
+     "Adds derive macros for more traits")
+    (description
+     "Rust has lots of builtin traits that are implemented for its basic
+types, such as @code{Add}, @code{Not}, @code{From} or @code{Display}.
+However, when wrapping these types inside your own structs or enums you lose
+the implementations of these traits and are required to recreate them.  This is
+especially annoying when your own structures are very simple, such as when
+using the commonly advised newtype pattern (e.g. @code{MyInt(i32)}).
+
+This library tries to remove these annoyances and the corresponding
+boilerplate code.  It does this by allowing you to derive lots of commonly used
+traits for both structs and enums.")
+    (license license:expat)))
+
 (define-public rust-derive-new-0.5
   (package
     (name "rust-derive-new")
-- 
2.26.2

>From c954bfda57c84286218d6b7a64f2414623515029 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 19:09:07 -0700
Subject: [PATCH 05/33] gnu: Add rust-rls-span-0.5.

* gnu/packages/crates-io.scm (rust-rls-span-0.5): New variable.
---
 gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 28dc5b2fcf..1ad1f4c83a 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -19628,6 +19628,33 @@ uses finite automata and guarantees linear time matching on all inputs.")
         ;; build dependencies
         ("rust-cc" ,rust-cc-1.0))))))
 
+(define-public rust-rls-span-0.5
+  (package
+    (name "rust-rls-span")
+    (version "0.5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rls-span" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0d6rwya5zsyw6vmrj8d8g3fgvic0xyp1lvfhv62vswk2dzavxsgj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rustc-serialize" ,rust-rustc-serialize-0.3)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0))))
+    (home-page "https://github.com/rust-lang/rls")
+    (synopsis
+     "Types for identifying code spans/ranges")
+    (description
+     "Identify Rust code spans and ranges using these types - for use with the
+Rust Language Server.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-ron-0.4
   (package
     (name "rust-ron")
-- 
2.26.2

>From a88de62bd3be9dc178adf24923ade090ea7feb0e Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 19:17:04 -0700
Subject: [PATCH 06/33] gnu: Add rust-racer-interner-0.1.

* gnu/packages/crates-io.scm (rust-racer-interner-0.1): New variable.
---
 gnu/packages/crates-io.scm | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 1ad1f4c83a..edde0a7efd 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -18287,6 +18287,30 @@ integers, floats, tuples, booleans, lists, strings, options and results.")
          "0yhnnix4dzsv8y4wwz4csbnqjfh73al33j35msr10py6cl5r4vks"))))
     (arguments '())))
 
+(define-public rust-racer-interner-0.1
+  (package
+    (name "rust-racer-interner")
+    (version "0.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "racer-interner" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0k7ssjjcr4kr9r1jbz93rglisfsx1m6fkx3wz6yng5rizm528si0"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-serde" ,rust-serde-1.0))))
+    (home-page "https://github.com/racer-rust/racer")
+    (synopsis
+     "Thread-local string interner for Racer")
+    (description
+     "You can intern strings in Rust in a thread-local fashion using this
+package. It is mostly used in Racer.")
+    (license license:expat)))
+
 (define-public rust-rand-0.7
   (package
     (name "rust-rand")
-- 
2.26.2

>From 9ed9ca4ed9a284527ae134e53db8dc0482be8caa Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 19:17:27 -0700
Subject: [PATCH 07/33] gnu: Add rust-racer-cargo-metadata-0.1.

* gnu/packages/crates-io.scm (rust-racer-cargo-metadata-0.1): New variable.
---
 gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index edde0a7efd..ae05d106c3 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -18287,6 +18287,33 @@ integers, floats, tuples, booleans, lists, strings, options and results.")
          "0yhnnix4dzsv8y4wwz4csbnqjfh73al33j35msr10py6cl5r4vks"))))
     (arguments '())))
 
+(define-public rust-racer-cargo-metadata-0.1
+  (package
+    (name "rust-racer-cargo-metadata")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "racer-cargo-metadata" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0vvwbfi991gjbk2k9a7yl7fqc8amvwlf7sa9lsx1sr0s55rcsq1b"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-racer-interner" ,rust-racer-interner-0.1)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page "https://github.com/racer-rust/racer")
+    (synopsis
+     "Lightweight cargo metadata parser for racer")
+    (description
+     "You can parse cargo metadata with this Rust crate.  It is used mostly in
+Racer.")
+    (license license:expat)))
+
 (define-public rust-racer-interner-0.1
   (package
     (name "rust-racer-interner")
-- 
2.26.2

>From 637c11eed977257288c0f6b114b0ecac7993afd4 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 19:50:43 -0700
Subject: [PATCH 08/33] gnu: Add rust-measureme-0.7.

* gnu/packages/crates-io.scm (rust-measureme-0.7): New variable.
---
 gnu/packages/crates-io.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index ae05d106c3..9450589d71 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -12890,6 +12890,36 @@ compression function.")
     (supported-systems '("x86_64-linux" "i686-linux"))
     (license license:expat)))
 
+(define-public rust-measureme-0.7
+  (package
+    (name "rust-measureme")
+    (version "0.7.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "measureme" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "0cmrrh86b3rvws6d7xp07wfn703yw02cakzirykvn4vh4p9hkxzy"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs
+        (("rust-byteorder" ,rust-byteorder-1.3)
+         ("rust-memmap" ,rust-memmap-0.7)
+         ("rust-parking-lot" ,rust-parking-lot-0.9)
+         ("rust-rustc-hash" ,rust-rustc-hash-1.1))))
+    (home-page
+      "https://github.com/rust-lang/measureme")
+    (synopsis
+      "Support crate for rustc's self-profiling feature")
+    (description
+     "Record rustc compiler events and serializing them to a compact binary
+format with this support package.  It is integrated into rustc via the
+unstable -Z self-profile flag.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-memchr-2
   (package
     (name "rust-memchr")
-- 
2.26.2

>From 753890c37b3ee532317133fcaf763ec555bc85be Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 20:13:48 -0700
Subject: [PATCH 09/33] gnu: Add rust-rustc-ap-rustc-arena-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-arena-654.0): New variable.
---
 gnu/packages/crates-io.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 9450589d71..c0c7688a1b 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20020,6 +20020,34 @@ password hashing function.")
      "This package provides a sys crate for the rust_hawktracer library.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-arena-654.0
+  (package
+    (name "rust-rustc-ap-arena")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-arena" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "18yc4i5m2vf6w8na29i5jv8l4l0yknsf6xn0z2mk7mfz1nxwzpw1"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page  "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the arena package used in rustc")
+    (description
+     "Use the arena library used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-demangle-0.1
   (package
     (name "rust-rustc-demangle")
-- 
2.26.2

>From 01303822da49984fc77e766440bd59d212b65120 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 20:21:59 -0700
Subject: [PATCH 10/33] gnu: Add rust-rustc-ap-rustc-macros-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-macros-654.0): New variable.
---
 gnu/packages/crates-io.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c0c7688a1b..e2fdbbcd34 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20048,6 +20048,35 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-macros-654.0
+  (package
+    (name "rust-rustc-ap-rustc-macros")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_macros" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "03zfp8a10jz43z8lsx1drx7g5jimxmbw4w7hs13yvczismb6qs2r"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-1.0)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-1.0)
+        ("rust-synstructure" ,rust-synstructure-0.12))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published versions of rustc macros")
+    (description
+     "Use macros used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-demangle-0.1
   (package
     (name "rust-rustc-demangle")
-- 
2.26.2

>From aac0501ac40b94d48b07f4802ccc48df4a860f35 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 20:28:43 -0700
Subject: [PATCH 11/33] gnu: Add rust-rustc-ap-rustc-lexer-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-lexer-654.0): New variable.
---
 gnu/packages/crates-io.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e2fdbbcd34..613e1fe5f1 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20048,6 +20048,32 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-lexer-654.0
+  (package
+    (name "rust-rustc-ap-rustc-lexer")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_lexer" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "19bx2z4gxxzqfjh9m11jp52lgdzz0k5fb0p1ad739bdc5cm4sciv"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-unicode-xid" ,rust-unicode-xid-0.2))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published versions of rustc macros")
+    (description
+     "Use the lexer used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-rustc-macros-654.0
   (package
     (name "rust-rustc-ap-rustc-macros")
-- 
2.26.2

>From aca1871e1cdd2d5aecb1ed215c31bdebd1c56056 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 20:29:23 -0700
Subject: [PATCH 12/33] gnu: Add rust-rustc-ap-graphviz-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-graphviz-654.0) - New variable.
---
 gnu/packages/crates-io.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 613e1fe5f1..c6e9a2c297 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20048,6 +20048,29 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-graphviz-654.0
+  (package
+    (name "rust-rustc-ap-graphviz")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-graphviz" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1z8rs3k9zcd1i2clrnzgvfaq1q05m02wjcyy3d9zk9qln03vp43l"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published versions of the graphviz crate used in rustc")
+    (description
+     "Use the graphviz library used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-rustc-lexer-654.0
   (package
     (name "rust-rustc-ap-rustc-lexer")
-- 
2.26.2

>From ef32ef24892b4e1e1c5bd9d01d49a51b5a01f10c Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 20:43:55 -0700
Subject: [PATCH 13/33] gnu: Add rust-rustc-rayon-core-0.3.

* gnu/packages/crates-io.scm (rust-rustc-rayon-core-0.3): New variable.
---
 gnu/packages/crates-io.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c6e9a2c297..6a1ad33d87 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20172,6 +20172,41 @@ It is automatically published using the compiler repository at
      "This package provides a speedy, non-cryptographic hash used in rustc.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-rustc-rayon-core-0.3
+  (package
+    (name "rust-rustc-rayon-core")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "rustc-rayon-core" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1cwc50mcclzfmhmi87953fjk6cc9ppmchn9mlwzfllq03y1jf97a"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs
+        (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
+         ("rust-crossbeam-queue" ,rust-crossbeam-queue-0.1)
+         ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.6)
+         ("rust-lazy-static" ,rust-lazy-static-1.4)
+         ("rust-num-cpus" ,rust-num-cpus-1.11))
+        #:cargo-development-inputs
+        (("rust-libc" ,rust-libc-0.2)
+         ("rust-rand" ,rust-rand-0.6)
+         ("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
+         ("rust-scoped-tls" ,rust-scoped-tls-1.0))))
+    (home-page "https://github.com/rust-lang/rustc-rayon")
+    (synopsis "Core APIs for Rayon - fork for rustc")
+    (description
+     "Note: This package is an unstable fork made for use in rustc
+
+Rayon-core represents the \"core, stable\" APIs of Rayon: join, scope, and so
+forth, as well as the ability to create custom thread-pools with ThreadPool.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-rustc-serialize-0.3
   (package
     (name "rust-rustc-serialize")
-- 
2.26.2

>From f1fc63c5255e43737ab5cf9ca57923856a542c00 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 20:47:33 -0700
Subject: [PATCH 14/33] gnu: Add rust-rustc-rayon-0.3.

* gnu/packages/crates-io.scm (rust-rustc-rayon-0.3): New variable.
---
 gnu/packages/crates-io.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 6a1ad33d87..111258c583 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20172,6 +20172,44 @@ It is automatically published using the compiler repository at
      "This package provides a speedy, non-cryptographic hash used in rustc.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-rustc-rayon-0.3
+  (package
+    (name "rust-rustc-rayon")
+    (version "0.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-rayon" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fjvy8bf0hd1zq9d3fdxbdp4z4p1k8jfyx51k5qip3wk1pwnf9zk"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-crossbeam-deque" ,rust-crossbeam-deque-0.7)
+        ("rust-either" ,rust-either-1.5)
+        ("rust-rustc-rayon-core" ,rust-rustc-rayon-core-0.3))
+       #:cargo-development-inputs
+       (("rust-doc-comment" ,rust-doc-comment-0.3)
+        ("rust-docopt" ,rust-docopt-1.1)
+        ("rust-lazy-static" ,rust-lazy-static-1.4)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-rand-xorshift" ,rust-rand-xorshift-0.1)
+        ("rust-serde" ,rust-serde-1.0)
+        ("rust-serde-derive" ,rust-serde-derive-1.0))))
+    (home-page "https://github.com/rust-lang/rustc-rayon")
+    (synopsis
+     "Simple work-stealing parallelism for Rust - fork for rustc")
+    (description
+     "Rustc-rayon is a fork of the Rayon crate.  It adds a few \"in progress\"
+features that rustc is using, mostly around deadlock detection. These features
+are not stable and should not be used by others -- though they may find their
+way into rayon proper at some point.  In general, if you are not rustc, you
+should be using the real rayon crate, not rustc-rayon.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-rustc-rayon-core-0.3
   (package
     (name "rust-rustc-rayon-core")
-- 
2.26.2

>From 4d9a7f2bff35bc6b26112b0bd5ebae9ba85a265f Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 20:52:14 -0700
Subject: [PATCH 15/33] gnu: Add rust-rustc-ap-serialize-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-serialize-654.0): New variable.
---
 gnu/packages/crates-io.scm | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 111258c583..fefd41af27 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20126,6 +20126,33 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-serialize-654.0
+  (package
+    (name "rust-rustc-ap-serialize")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-serialize" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1vwfa3q4f9k0nfryr53jnwmf8vhaq7ijbgw8449nx467dr98yvkm"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-indexmap" ,rust-indexmap-1.3)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published versions of the serialize crate used in rustc")
+    (description
+     "Use the serialize library used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-demangle-0.1
   (package
     (name "rust-rustc-demangle")
-- 
2.26.2

>From 192ba302c2ba2d42ba171c38dbc6b17543af8f64 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 21:01:36 -0700
Subject: [PATCH 16/33] gnu: Add rust-rustc-ap-rustc-index-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-index-654.0): New variable.
---
 gnu/packages/crates-io.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index fefd41af27..84116d52ba 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20071,6 +20071,34 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-index-654.0
+  (package
+    (name "rust-rustc-ap-rustc-index")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_index" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0qqnvdn3zbwrn884ziw0nrmi1wqmr9yp8js7whw6y8nzdhz0q8ij"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-rustc-ap-serialize"
+         ,rust-rustc-ap-serialize-654.0)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page  "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the types of indexes in rustc")
+    (description
+     "Use the types of index used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-rustc-lexer-654.0
   (package
     (name "rust-rustc-ap-rustc-lexer")
-- 
2.26.2

>From 8da15f259218e75636263b4dfcb959b843c82d95 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 21:03:00 -0700
Subject: [PATCH 17/33] gnu: Add rust-rustc-ap-rustc-data-structures-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-data-structures-654.0): New variable.
---
 gnu/packages/crates-io.scm | 47 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 84116d52ba..1bace8188c 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20048,6 +20048,53 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-data-structures-654.0
+  (package
+    (name "rust-rustc-ap-rustc-data-structures")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_data_structures" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0fhppy18n1i2iykdihfs05d6s1ivwz882ipc9cpnjcvqcsbhj4yj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-crossbeam-utils" ,rust-crossbeam-utils-0.7)
+        ("rust-ena" ,rust-ena-0.13)
+        ("rust-indexmap" ,rust-indexmap-1.3)
+        ("rust-jobserver" ,rust-jobserver-0.1)
+        ("rust-lazy-static" ,rust-lazy-static-1.4)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-measureme" ,rust-measureme-0.7)
+        ("rust-parking-lot" ,rust-parking-lot-0.10)
+        ("rust-rustc-ap-graphviz"
+         ,rust-rustc-ap-graphviz-654.0)
+        ("rust-rustc-ap-rustc-index" ,rust-rustc-ap-rustc-index-654.0)
+        ("rust-rustc-ap-serialize"
+         ,rust-rustc-ap-serialize-654.0)
+        ("rust-rustc-hash" ,rust-rustc-hash-1.1)
+        ("rust-rustc-rayon" ,rust-rustc-rayon-0.3)
+        ("rust-rustc-rayon-core" ,rust-rustc-rayon-core-0.3)
+        ("rust-smallvec" ,rust-smallvec-1)
+        ("rust-stable-deref-trait" ,rust-stable-deref-trait-1.1)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published versions of rustc data structures")
+    (description
+     "Use data structures used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-graphviz-654.0
   (package
     (name "rust-rustc-ap-graphviz")
-- 
2.26.2

>From cc142fe59c0f35e3c118e18bce22f05e9f89c314 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 21:04:45 -0700
Subject: [PATCH 18/33] gnu: Add rust-rustc-ap-rustc-span-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-span-654.0): New variable.
---
 gnu/packages/crates-io.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 1bace8188c..88900ceff6 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20228,6 +20228,44 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-span-654.0
+  (package
+    (name "rust-rustc-ap-rustc-span")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_span" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hj23syxxqqmk1y4kdvb0cb0xxi8wy429hhyd27bbmpya1h18j56"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-cfg-if" ,rust-cfg-if-0.1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-md-5" ,rust-md-5-0.8)
+        ("rust-rustc-ap-arena" ,rust-rustc-ap-arena-654.0)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-rustc-ap-rustc-index" ,rust-rustc-ap-rustc-index-654.0)
+        ("rust-rustc-ap-rustc-macros" ,rust-rustc-ap-rustc-macros-654.0)
+        ("rust-rustc-ap-serialize"
+         ,rust-rustc-ap-serialize-654.0)
+        ("rust-scoped-tls" ,rust-scoped-tls-1.0)
+        ("rust-sha-1" ,rust-sha-1-0.8)
+        ("rust-unicode-width" ,rust-unicode-width-0.1))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the source code spans used in rustc")
+    (description
+     "Use the spans used in the Rust compiler to represent source code with
+this crate.  It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-demangle-0.1
   (package
     (name "rust-rustc-demangle")
-- 
2.26.2

>From 4194625204a3ebd26846064b69b014236b4ec8d0 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 21:05:39 -0700
Subject: [PATCH 19/33] gnu: Add rust-rustc-ap-rustc-ast-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-ast-654.0): New variable.
---
 gnu/packages/crates-io.scm | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 88900ceff6..7d058b1da1 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20048,6 +20048,44 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-ast-654.0
+  (package
+    (name "rust-rustc-ap-rustc-ast")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_ast" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0n4yhkd7x0c3nqyqz99lwjiix7mf1j5xbkn9fj90h4fxp3did7qq"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-rustc-ap-rustc-index"
+         ,rust-rustc-ap-rustc-index-654.0)
+        ("rust-rustc-ap-rustc-lexer" ,rust-rustc-ap-rustc-lexer-654.0)
+        ("rust-rustc-ap-rustc-macros" ,rust-rustc-ap-rustc-macros-654.0)
+        ("rust-rustc-ap-serialize"
+         ,rust-rustc-ap-serialize-654.0)
+        ("rust-rustc-ap-rustc-span" ,rust-rustc-ap-rustc-span-654.0)
+        ("rust-scoped-tls" ,rust-scoped-tls-1.0)
+        ("rust-smallvec" ,rust-smallvec-1))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the Rust ast used in rustc")
+    (description
+     "Use the Rust ast used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-rustc-data-structures-654.0
   (package
     (name "rust-rustc-ap-rustc-data-structures")
-- 
2.26.2

>From cf4dc38fabe1d9e0d5f1ec8b829be195c61d4148 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 21:45:50 -0700
Subject: [PATCH 20/33] gnu: Add rust-rustc-ap-rustc-target-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-target-654.0): New variable.
---
 gnu/packages/crates-io.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 7d058b1da1..ccc8d98ade 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20304,6 +20304,40 @@ this crate.  It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-target-654.0
+  (package
+    (name "rust-rustc-ap-rustc-target")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_target" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0i579l4jx4ky5wm0ah8zdy6dd6201rii6rv1wc4bi209ixwjikr8"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-rustc-ap-rustc-index" ,rust-rustc-ap-rustc-index-654.0)
+        ("rust-rustc-ap-rustc-macros" ,rust-rustc-ap-rustc-macros-654.0)
+        ("rust-rustc-ap-serialize"
+         ,rust-rustc-ap-serialize-654.0)
+        ("rust-rustc-ap-rustc-span" ,rust-rustc-ap-rustc-span-654.0))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the compile targets used in rustc")
+    (description
+     "Use the compile targets as expressed in the Rust compiler with this
+crate.  It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-demangle-0.1
   (package
     (name "rust-rustc-demangle")
-- 
2.26.2

>From 06511d9e6c512748c2672cd619c9ca570fe9fd24 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 21:49:07 -0700
Subject: [PATCH 21/33] gnu: Add rust-rustc-ap-rustc-ast-pretty-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-ast-pretty-654.0): New variable.
---
 gnu/packages/crates-io.scm | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index ccc8d98ade..d25448a825 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20086,6 +20086,36 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-ast-pretty-654.0
+  (package
+    (name "rust-rustc-ap-rustc-ast-pretty")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc-ast-pretty" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "15503m4bi835hrswpjp8xgbapak3azdc2jc7d0vyj85lyyai9ar6"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-log" ,rust-log-0.4)
+        ("rust-rustc-ap-rustc-ast" ,rust-rustc-ap-rustc-ast-654.0)
+        ("rust-rustc-ap-rustc-span" ,rust-rustc-ap-rustc-span-654.0)
+        ("rust-rustc-ap-rustc-target"
+         ,rust-rustc-ap-rustc-target-654.0))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the pretty-printer used in rustc")
+    (description
+     "Use the ast pretty-printer used in the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-rustc-data-structures-654.0
   (package
     (name "rust-rustc-ap-rustc-data-structures")
-- 
2.26.2

>From eee6f7d3f8f29fa4d4bdb898ecea2bab90f38db7 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 22:09:38 -0700
Subject: [PATCH 22/33] gnu: Add rust-termize-0.1.

* gnu/packages/crates-io.scm (rust-termize-0.1): New variable.
---
 gnu/packages/crates-io.scm | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index d25448a825..957e346796 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -24737,6 +24737,32 @@ bindings are a small wrapper around the raw C functions, which converts integer
 return values to @code{std::io::Result} to indicate success or failure.")
     (license license:expat)))
 
+(define-public rust-termize-0.1
+  (package
+    (name "rust-termize")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "termize" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "158j22glm4cw6b2whs8fxpvqwk5132qydxzmj9qcw8s3armvw1hp"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs
+        (("rust-libc" ,rust-libc-0.2)
+         ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/JohnTitor/termize")
+    (synopsis
+      "Functions for determining terminal sizes and dimensions")
+    (description
+     "This is a Rust library to enable getting terminal sizes and dimensions
+This is a fork of @url{https://github.com/clap-rs/term_size-rs}.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-test-assembler-0.1
   (package
     (name "rust-test-assembler")
-- 
2.26.2

>From 505e9b9e8e1dcf0849425b24f669c2236fb7e14b Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 22:16:38 -0700
Subject: [PATCH 23/33] gnu: Add rust-yansi-term-0.1.

* gnu/packages/crates-io.scm (rust-yansi-term-0.1): New variable.
---
 gnu/packages/crates-io.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 957e346796..fe6e7fb348 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -28902,6 +28902,39 @@ to XDG Base Directory specification")
        (("rust-clippy" ,rust-clippy-0.0)
         ("rust-linked-hash-map" ,rust-linked-hash-map-0.3))))))
 
+(define-public rust-yansi-term-0.1
+  (package
+    (name "rust-yansi-term")
+    (version "0.1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "yansi-term" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1w8vjlvxba6yvidqdvxddx3crl6z66h39qxj8xi6aqayw2nk0p7y"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-serde" ,rust-serde-1.0)
+        ("rust-winapi" ,rust-winapi-0.3))
+       #:cargo-development-inputs
+       (("rust-doc-comment" ,rust-doc-comment-0.3)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-serde-json" ,rust-serde-json-1.0))))
+    (home-page
+     "https://github.com/botika/yansi-term")
+    (synopsis
+     "Library for ANSI terminal colours and styles (bold, underline)")
+    (description
+     "Yansi-term provices a library for ANSI terminal colours and
+styles (bold, underline).  It is adapted from
+@url{https://github.com/ogham/rust-ansi-term}.  It was refactored to support
+@code{fmt::Display and FnOnce(&mut fmt::Formatter) -> fmt::Result}")
+    (license license:expat)))
+
 (define-public rust-zbase32-0.1
   (package
     (name "rust-zbase32")
-- 
2.26.2

>From 115dcb66e03b2506d079b3af4a39acbf3c5a527b Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 22:17:27 -0700
Subject: [PATCH 24/33] gnu: Add rust-annotate-snippets-0.8.

* gnu/packages/crates-io.scm (rust-annotate-snippets-0.8): New variable.
---
 gnu/packages/crates-io.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index fe6e7fb348..82e807787a 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -426,6 +426,39 @@ shapes, lines and text to buffers.")
     (description "This package provides the glue for the Android JNI.")
     (license license:expat)))
 
+(define-public rust-annotate-snippets-0.8
+  (package
+    (name "rust-annotate-snippets")
+    (version "0.8.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "annotate-snippets" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1rbyczndanxj8380i695xaqixsnp3mgy6py0n43acpjf149s13np"))))
+    (build-system cargo-build-system)
+    (arguments
+      `(#:cargo-inputs
+        (("rust-yansi-term" ,rust-yansi-term-0.1))
+        #:cargo-development-inputs
+        (("rust-criterion" ,rust-criterion-0.3)
+         ("rust-difference" ,rust-difference-2.0)
+         ("rust-glob" ,rust-glob-0.3)
+         ("rust-serde" ,rust-serde-1.0)
+         ("rust-toml" ,rust-toml-0.5)
+         ("rust-yansi-term" ,rust-yansi-term-0.1))))
+    (home-page "https://github.com/rust-lang/annotate-snippets-rs")
+    (synopsis
+      "Library for building code annotations")
+    (description
+     "This library helps visualize meta information annotating source code
+slices.  It takes a data structure called @code{Snippet} on the input and
+produces a @code{String} that underlines the sources of errors and more.")
+    (license (list license:asl2.0 license:expat))))
+
 (define-public rust-ansi-term-0.12
   (package
     (name "rust-ansi-term")
-- 
2.26.2

>From fcbcd8d3f88c79e0a5a52e61370b53aeb0018332 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Thu, 18 Jun 2020 15:40:04 -0700
Subject: [PATCH 25/33] gnu: Add rust-annotate-snippets-0.6.

* gnu/packages/crates-io.scm (rust-annotate-snippets-0.6): New variable.
---
 gnu/packages/crates-io.scm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 82e807787a..7b74ac76f1 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -459,6 +459,21 @@ slices.  It takes a data structure called @code{Snippet} on the input and
 produces a @code{String} that underlines the sources of errors and more.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-annotate-snippets-0.6
+  (package
+    (inherit rust-annotate-snippets-0.8)
+    (version "0.6.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "annotate-snippets" version))
+        (file-name
+          (string-append
+           (package-name rust-annotate-snippets-0.8) "-" version ".tar.gz"))
+        (sha256
+          (base32
+           "19x7ldklprdgf8pam8b3lfhrxqw5yldcvk5j0bw2agsajbj1q0n7"))))))
+
 (define-public rust-ansi-term-0.12
   (package
     (name "rust-ansi-term")
-- 
2.26.2

>From 41e0050097d5f7ca80cbff6d49f76dc065fea05b Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 22:20:18 -0700
Subject: [PATCH 26/33] gnu: Add rust-ap-rustc-errors-654.0.

* gnu/packages/crates-io.scm (rust-ap-rustc-errors-654.0): New variable.
---
 gnu/packages/crates-io.scm | 62 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 7b74ac76f1..83fa59baac 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20211,6 +20211,68 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-errors-654.0
+  (package
+    (name "rust-rustc-ap-rustc-errors")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc-errors" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1030psm9nx3f132dswbkwqahb4hy020bjvdsyj53dfy6hyhix3lh"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-annotate-snippets"
+         ,rust-annotate-snippets-0.6)
+        ("rust-atty" ,rust-atty-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-rustc-ap-serialize"
+         ,rust-rustc-ap-serialize-654.0)
+        ("rust-rustc-ap-rustc-span"
+         ,rust-rustc-ap-rustc-span-654.0)
+        ("rust-termcolor" ,rust-termcolor-1.0)
+        ("rust-termize" ,rust-termize-0.1)
+        ("rust-unicode-width" ,rust-unicode-width-0.1)
+        ("rust-winapi" ,rust-winapi-0.3))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the errors used in rustc")
+    (description
+     "Use the errors from the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
+(define-public rust-rustc-ap-rustc-fs-util-654.0
+  (package
+    (name "rust-rustc-ap-rustc-fs-util")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_fs_util" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "028yi1gr8khnf05dj0726j574g3jd7bp259154kzqs74wmbi7yg3"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the file system utilities in rustc")
+    (description
+     "Use the file system utilities library used in the Rust compiler with
+this crate.  It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-graphviz-654.0
   (package
     (name "rust-rustc-ap-graphviz")
-- 
2.26.2

>From 423b95100fd987c8151886ede6aa28df4f189bdf Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 22:36:16 -0700
Subject: [PATCH 27/33] gnu: Add rust-rustc-ap-rustc-feature-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-feature-654.0): New variable.
---
 gnu/packages/crates-io.scm | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 83fa59baac..8c415a7723 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20250,6 +20250,35 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-feature-654.0
+  (package
+    (name "rust-rustc-ap-rustc-feature")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_feature" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1xnkfzvf5mmydxmsln5sk8wrp7xpaz45djkiwg1ffv8ff7hm7ywn"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1.4)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-rustc-ap-rustc-span" ,rust-rustc-ap-rustc-span-654.0))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the feature gates used in rustc")
+    (description
+     "Use the feature gates of Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-rustc-fs-util-654.0
   (package
     (name "rust-rustc-ap-rustc-fs-util")
-- 
2.26.2

>From c95251876afb37d4f9af11e166feaa54c22f5ac1 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 22:41:37 -0700
Subject: [PATCH 28/33] gnu: Add rust-rustc-ap-rustc-session-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-session-654.0): New variable.
---
 gnu/packages/crates-io.scm | 40 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 8c415a7723..fb6c6d375c 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20435,6 +20435,46 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-session-654.0
+  (package
+    (name "rust-rustc-ap-rustc-session")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc_session" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1fcmiylyl37aipg5l3ihhk8bggcyvhw7d14jwhz27mw1395ij6ix"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-getopts" ,rust-getopts-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-num-cpus" ,rust-num-cpus-1.11)
+        ("rust-rustc-ap-rustc-ast" ,rust-rustc-ap-rustc-ast-654.0)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-rustc-ap-rustc-errors" ,rust-rustc-ap-rustc-errors-654.0)
+        ("rust-rustc-ap-rustc-feature" ,rust-rustc-ap-rustc-feature-654.0)
+        ("rust-rustc-ap-rustc-fs-util"
+         ,rust-rustc-ap-rustc-fs-util-654.0)
+        ("rust-rustc-ap-serialize"
+         ,rust-rustc-ap-serialize-654.0)
+        ("rust-rustc-ap-rustc-span" ,rust-rustc-ap-rustc-span-654.0)
+        ("rust-rustc-ap-rustc-target"
+         ,rust-rustc-ap-rustc-target-654.0))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of compile-time execution in rustc")
+    (description
+     "Use the compile-time execution from the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-rustc-span-654.0
   (package
     (name "rust-rustc-ap-rustc-span")
-- 
2.26.2

>From df0801b0087b56cd9f946f712e49d429a7501b87 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Thu, 18 Jun 2020 15:38:27 -0700
Subject: [PATCH 29/33] gnu: rust-unicode-normalization-0.1: update to 0.1.11.

* gnu/packages/crates-io.scm (rust-unicode-normalization-0.1): Update to 0.1.11.
---
 gnu/packages/crates-io.scm | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index fb6c6d375c..47f1644c04 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -26555,7 +26555,7 @@ with the Unicode character database.")
 (define-public rust-unicode-normalization-0.1
   (package
     (name "rust-unicode-normalization")
-    (version "0.1.9")
+    (version "0.1.11")
     (source
      (origin
        (method url-fetch)
@@ -26563,7 +26563,8 @@ with the Unicode character database.")
        (file-name
         (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "1kviyqg3bmds4p5hgwf9qgihw8xxvq7ljgyrrk7ygxa2k450gj09"))))
+        (base32
+         "1kxxb5ndb5dzyp1flajjdxnbwyjw6ml9xvy0pz7b8srjn9ky4qdm"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
-- 
2.26.2

>From 6866416569822caf1a0512f69a52c377057a27d5 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 22:45:11 -0700
Subject: [PATCH 30/33] gnu: Add rust-rustc-ap-rustc-parse-654.0.

* gnu/packages/crates-io.scm (rust-rustc-ap-rustc-parse-654.0): New version.
---
 gnu/packages/crates-io.scm | 44 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 47f1644c04..dd6aa3e2a4 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -20408,6 +20408,50 @@ It is automatically published using the compiler repository at
 @url{https://www.github.com/rust-lang/rust}.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-rustc-ap-rustc-parse-654.0
+  (package
+    (name "rust-rustc-ap-rustc-parse")
+    (version "654.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "rustc-ap-rustc-parse" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0j8zqmx4ijdnq41ng8krzwsr1g2sg4chicddpf3mzv4iql8hryrd"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rustc-ap-rustc-ast" ,rust-rustc-ap-rustc-ast-654.0)
+        ("rust-rustc-ap-rustc-ast-pretty"
+         ,rust-rustc-ap-rustc-ast-pretty-654.0)
+        ("rust-rustc-ap-rustc-data-structures"
+         ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-rustc-ap-rustc-errors"
+         ,rust-rustc-ap-rustc-errors-654.0)
+        ("rust-rustc-ap-rustc-feature"
+         ,rust-rustc-ap-rustc-feature-654.0)
+        ("rust-rustc-ap-rustc-lexer"
+         ,rust-rustc-ap-rustc-lexer-654.0)
+        ("rust-rustc-ap-rustc-session"
+         ,rust-rustc-ap-rustc-session-654.0)
+        ("rust-rustc-ap-rustc-span"
+         ,rust-rustc-ap-rustc-span-654.0)
+        ("rust-unicode-normalization"
+         ,rust-unicode-normalization-0.1))))
+    (home-page "https://github.com/alexcrichton/rustc-auto-publish")
+    (synopsis
+     "Automatically published version of the rustc parser")
+    (description
+     "Use the parser from the Rust compiler with this crate.
+It is automatically published using the compiler repository at
+@url{https://www.github.com/rust-lang/rust}")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-rustc-ap-serialize-654.0
   (package
     (name "rust-rustc-ap-serialize")
-- 
2.26.2

>From e1c6cab65a1501d852c34201f0f2a59d20963614 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 22:46:23 -0700
Subject: [PATCH 31/33] gnu: Add racer.

* gnu/packages/rust-apps.scm (racer): New variable.
---
 gnu/packages/rust-apps.scm | 57 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 1cf22f4a79..2decea0c9b 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -30,7 +30,10 @@
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages jemalloc)
   #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages ruby)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control))
 
@@ -204,6 +207,60 @@ While it does not seek to mirror all of find's powerful functionality, it
 provides defaults for 80% of the use cases.")
     (license (list license:expat license:asl2.0))))
 
+(define-public racer
+  (package
+    (name "racer")
+    ;; Racer "requires" nightly rustc but 2.1.33 is known to work with 1.44.0
+    (version "2.1.33")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "racer" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0hiylb0xx15r99y9h5sz98bbg1zki084l96hg46hxwkxdxljncjl"))))
+    (build-system cargo-build-system)
+    (inputs
+     `(("perl" ,perl)
+       ("python-wrapper" ,python-wrapper)
+       ("ruby" ,ruby)))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-bitflags" ,rust-bitflags-1)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-derive-more" ,rust-derive-more-0.99)
+        ("rust-env-logger" ,rust-env-logger-0.7)
+        ("rust-humantime" ,rust-humantime-2)
+        ("rust-lazy-static" ,rust-lazy-static-1.3)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-rls-span" ,rust-rls-span-0.5)
+        ("rust-rustc-ap-rustc-ast" ,rust-rustc-ap-rustc-ast-654.0)
+        ("rust-rustc-ap-rustc-ast-pretty" ,rust-rustc-ap-rustc-ast-pretty-654.0)
+        ("rust-rustc-ap-rustc-errors" ,rust-rustc-ap-rustc-errors-654.0)
+        ("rust-rustc-ap-rustc-data-structures" ,rust-rustc-ap-rustc-data-structures-654.0)
+        ("rust-rustc-ap-rustc-parse" ,rust-rustc-ap-rustc-parse-654.0)
+        ("rust-rustc-ap-rustc-session" ,rust-rustc-ap-rustc-session-654.0)
+        ("rust-rustc-ap-rustc-span" ,rust-rustc-ap-rustc-span-654.0)
+        ("rust-lazycell" ,rust-lazycell-1.2)
+        ("rust-racer-cargo-metadata" ,rust-racer-cargo-metadata-0.1))
+       #:tests? #f ; FIXME: Test crate causes build problems
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'set-rustc-bootstrap
+           (lambda _ (setenv "RUSTC_BOOTSTRAP" "1") #t))
+         (add-after 'unpack 'remove-circular-test-dependency
+           (lambda _
+             (substitute* "Cargo.toml"
+               (("\\[dev-dependencies.racer-testutils\\]") "")
+               (("version = \"0.1\"") "")
+               (("path = \"testutils\"") "")))))))
+    (home-page "https://github.com/racer-rust/racer")
+    (synopsis "Code completion for Rust")
+    (description "Code completion for Rust")
+    (license license:expat)))
+
 (define-public ripgrep
   (package
     (name "ripgrep")
-- 
2.26.2

>From e345122f5b48ea034cf2a7359d5b6abd727abee5 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 11:18:26 -0700
Subject: [PATCH 32/33] gnu: rust: install "source" output.

* gnu/packages/rust.scm (rust-1.19): [arguments] Install source in 'install phase.
---
 gnu/packages/rust.scm | 78 ++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 74 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 90fc67aebb..e85997e57b 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -227,7 +227,7 @@ safety and thread safety guarantees.")
         (modules '((guix build utils)))
         (snippet '(begin (delete-file-recursively "src/llvm") #t))
         (patches (map search-patch '("rust-1.19-mrustc.patch")))))
-    (outputs '("out" "cargo"))
+    (outputs '("out" "cargo" "source"))
     (properties '((timeout . 72000)               ;20 hours
                   (max-silent-time . 18000)))     ;5 hours (for armel)
     (arguments
@@ -311,6 +311,13 @@ test = { path = \"../libtest\" }
                 (string-append name "\"" ,%cargo-reference-hash "\"")))
              (generate-all-checksums "src/vendor")
              #t))
+         (add-after 'unpack 'install-source
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; Install "source" output
+             (mkdir-p (string-append (assoc-ref outputs "source") "/src"))
+             (copy-recursively
+              "." (string-append (assoc-ref outputs "source") "/src"))
+             #t))
          ;; This phase is overridden by newer versions.
          (replace 'configure
            (const #t))
@@ -473,7 +480,7 @@ safety and thread safety guarantees.")
        `(;; The tests fail with newer versions of GNU Make.
          ("make" ,gnu-make-4.2)
          ,@(package-native-inputs base-rust)))
-      (outputs '("out" "doc" "cargo"))
+      (outputs '("out" "doc" "cargo" "source"))
       ;; Since rust-1.19 is local, it's quite probable that Hydra
       ;; will build rust-1.19 only as a dependency of rust-1.20.
       ;; But then Hydra will use the wrong properties, the ones here,
@@ -583,6 +590,13 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
                     (utime filename 1 1 1 1))
                   (find-files "." #:directories? #t))
                  #t))
+             (add-after 'reset-timestamps-after-changes 'install-source
+               (lambda* (#:key outputs #:allow-other-keys)
+                 ;; Install "source" output
+                 (mkdir-p (string-append (assoc-ref outputs "source") "/src"))
+                 (copy-recursively
+                  "." (string-append (assoc-ref outputs "source") "/src"))
+                 #t))
              (replace 'build
                (lambda* _
                  (invoke "./x.py" "build")
@@ -917,6 +931,21 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
           `(modify-phases ,phases
+             (replace 'install-source
+               (lambda* (#:key outputs #:allow-other-keys)
+                 ;; Install "source" output, now following symlinks
+                 (mkdir-p (string-append (assoc-ref outputs "source")))
+                 ;; copy-recursively fails on these symlinks it sees twice
+                 ;; so just copy them directly
+                 (delete-file "src/tools/cargo/src/crates-io/LICENSE-MIT")
+                 (delete-file "src/tools/cargo/src/crates-io/LICENSE-APACHE")
+                 (copy-file "src/tools/cargo/LICENSE-MIT"
+                            "src/tools/cargo/src/crates-io/LICENSE-MIT")
+                 (copy-file "src/tools/cargo/LICENSE-APACHE"
+                            "src/tools/cargo/src/crates-io/LICENSE-APACHE")
+                 (copy-recursively
+                  "." (string-append (assoc-ref outputs "source") "/src"))
+                 #t))
              (add-after 'patch-cargo-tests 'patch-cargo-env-shebang
                (lambda* (#:key inputs #:allow-other-keys)
                  (let ((coreutils (assoc-ref inputs "coreutils")))
@@ -1137,6 +1166,20 @@ move around."
        (substitute-keyword-arguments (package-arguments base-rust)
          ((#:phases phases)
           `(modify-phases ,phases
+             (replace 'install-source
+               (lambda* (#:key outputs #:allow-other-keys)
+                 ;; copy-recursively fails on these symlinks it sees twice
+                 ;; so just copy them directly
+                 (delete-file "src/tools/cargo/crates/crates-io/LICENSE-MIT")
+                 (delete-file "src/tools/cargo/crates/crates-io/LICENSE-APACHE")
+                 (copy-file "src/tools/cargo/LICENSE-MIT"
+                            "src/tools/cargo/crates/crates-io/LICENSE-MIT")
+                 (copy-file "src/tools/cargo/LICENSE-APACHE"
+                            "src/tools/cargo/crates/crates-io/LICENSE-APACHE")
+                 (mkdir-p (string-append (assoc-ref outputs "source") "/src"))
+                 (copy-recursively
+                  "." (string-append (assoc-ref outputs "source") "/src"))
+                 #t))
              (add-before 'configure 'configure-cargo-home
                (lambda _
                  (let ((cargo-home (string-append (getcwd) "/.cargo")))
@@ -1261,8 +1304,35 @@ move around."
     "0x9lxs82may6c0iln0b908cxyn1cv7h03n5cmbx3j1bas4qzks6j"))
 
 (define-public rust-1.43
-  (rust-bootstrapped-package rust-1.42 "1.43.0"
-    "18akhk0wz1my6y9vhardriy2ysc482z0fnjdcgs9gy59kmnarxkm"))
+  (let ((base-rust
+         (rust-bootstrapped-package rust-1.42 "1.43.0"
+           "18akhk0wz1my6y9vhardriy2ysc482z0fnjdcgs9gy59kmnarxkm")))
+    (package
+      (inherit base-rust)
+      (arguments
+       (substitute-keyword-arguments (package-arguments base-rust)
+         ((#:phases p)
+          `(modify-phases ,p
+             (replace 'install-source
+               (lambda* (#:key outputs #:allow-other-keys)
+                 ;; copy-recursively fails on these symlinks it sees twice
+                 ;; so just copy them directly
+                 (delete-file "src/tools/cargo/crates/crates-io/LICENSE-MIT")
+                 (delete-file "src/tools/cargo/crates/crates-io/LICENSE-APACHE")
+                 (delete-file "src/tools/cargo/crates/cargo-platform/LICENSE-MIT")
+                 (delete-file "src/tools/cargo/crates/cargo-platform/LICENSE-APACHE")
+                 (copy-file "src/tools/cargo/LICENSE-MIT"
+                            "src/tools/cargo/crates/crates-io/LICENSE-MIT")
+                 (copy-file "src/tools/cargo/LICENSE-MIT"
+                            "src/tools/cargo/crates/cargo-platform/LICENSE-MIT")
+                 (copy-file "src/tools/cargo/LICENSE-APACHE"
+                            "src/tools/cargo/crates/crates-io/LICENSE-APACHE")
+                 (copy-file "src/tools/cargo/LICENSE-APACHE"
+                            "src/tools/cargo/crates/cargo-platform/LICENSE-APACHE")
+                 (mkdir-p (string-append (assoc-ref outputs "source") "/src"))
+                 (copy-recursively
+                  "." (string-append (assoc-ref outputs "source") "/src"))
+                 #t)))))))))
 
 (define-public rust-1.44
   (rust-bootstrapped-package rust-1.43 "1.44.0"
-- 
2.26.2

>From 7b9030a45938f0caba0591c4c99e778d45028100 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 16 Jun 2020 23:43:49 -0700
Subject: [PATCH 33/33] gnu: emacs-racer: Patch paths to rust source and racer.

* gnu/packages/emacs-xyz.scm (emacs-racer): [arguments] Patch paths to rust
source and racer binary in racer.el.
---
 gnu/packages/emacs-xyz.scm | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index aae9eb25fd..f0a1fddb83 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -168,6 +168,8 @@
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages rust)
+  #:use-module (gnu packages rust-apps)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages shells)
@@ -17375,11 +17377,21 @@ files.  It focuses on highlighting the document to improve readability.")
        #:test-command '("make" "test")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch-rust-src-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "racer.el"
+               (("/usr/local/src/rust/src")
+                (string-append (assoc-ref inputs "rust") "/src/src"))
+               (("/usr/local/bin/racer")
+                (string-append (assoc-ref inputs "racer") "/bin/racer")))))
          (add-before 'check 'fix-makefile
            (lambda _
              (substitute* "Makefile"
                (("\\$\\{CASK\\} exec ") ""))
              #t)))))
+    (inputs
+     `(("racer" ,racer)
+       ("rust" ,rust "source")))
     (native-inputs
      `(("emacs-ert-runner" ,emacs-ert-runner)
        ("emacs-undercover" ,emacs-undercover)))
-- 
2.26.2