Subject: bug#39382: closed (Re: [bug#39382] [PATCH] gnu: Add exa.)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 06 Feb 2020 08:58:02 +0000

Your bug report

#39382: [PATCH] gnu: Add exa.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
39382: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=39382
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#39382] [PATCH] gnu: Add exa.
From: Efraim Flashner <[email-masked]>
To: John Soo <[email-masked]>
Cc: [email-masked]
Date: Thu, 6 Feb 2020 10:56:31 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

I have to say I don't like the colors at all. Way too much.

There were a couple of changes I made across the patches. Sometimes the
default description was lacking and I changed it (This package provides
a ...). Where possible I removed the skip-build? argument.

On a side note I borrowed a patch from Debian to mark rust-openssl-sys
as providing rust-openssl-src and I was able to shorten one of the
phases in exa.

rust-datetime-0.4 actually wants rust-regex-0.1 for
cargo-development-inputs, so I added it in and commented it out. I think
I have a package for it locally, but I'm not sure it's really worth
adding.

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

Subject: [PATCH] gnu: Add exa.
From: John Soo <[email-masked]>
To: [email-masked]
Date: Sat, 1 Feb 2020 17:35:56 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi guix,

exa is an ls written in rust with a few extra "modern" touches.

Thanks!

John
From 66d291b005db24ba250e316fd31fc618279295f3 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 20:50:58 -0800
Subject: [PATCH 01/22] gnu: Add rust-locale-0.2.

* gnu/packages/crates-io.scm (rust-locale-0.2): 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 a5f224f99e..1f47376a35 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -5745,6 +5745,32 @@ functions and static variables these libraries contain.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-locale-0.2
+  (package
+    (name "rust-locale")
+    (version "0.2.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "locale" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1z87wc7z6889x1pqlrwjw8f1crshzi15q5m102lqs8y0m69f9nsz"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+    (home-page
+      "https://github.com/rust-locale/rust-locale")
+    (synopsis
+      "Library for basic localisation")
+    (description
+      "Library for basic localisation.  Warning: Major rewrite pending for
+0.3!")
+    (license license:expat)))
+
 (define-public rust-lock-api-0.3
   (package
     (name "rust-lock-api")
-- 
2.25.0

From 54d4d1685750fc0f1e4f75cb8c7a93954b6d70d1 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:43:02 -0800
Subject: [PATCH 05/22] gnu: Add rust-no-panic-0.1.

* gnu/packages/crates-io.scm (rust-no-panic-0.1): 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 41b415112c..9faaf94f93 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -6729,6 +6729,36 @@ release (fork of debug_unreachable)")
      "Rust friendly bindings to *nix APIs.")
     (license license:expat)))
 
+(define-public rust-no-panic-0.1
+  (package
+    (name "rust-no-panic")
+    (version "0.1.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "no-panic" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xan5v9ac1aklinc8aw16raq36pb4idjrl502np8gy32gfs6s751"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-proc-macro2" ,rust-proc-macro2-0.4)
+        ("rust-quote" ,rust-quote-1.0)
+        ("rust-syn" ,rust-syn-0.15))
+       #:cargo-development-inputs
+       (("rust-tempfile" ,rust-tempfile-3.0))))
+    (home-page "https://github.com/dtolnay/no-panic")
+    (synopsis
+     "Prove a function can't ever panic")
+    (description
+     "Attribute macro to require that the compiler prove a function can't ever
+panic.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-nodrop-0.1
   (package
     (name "rust-nodrop")
-- 
2.25.0

From 9c7bf83acc3c4b661b3db8198f37548733f86869 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 20:53:44 -0800
Subject: [PATCH 04/22] gnu: Add rust-pad-0.1.

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

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index df21352a0b..41b415112c 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -7327,6 +7327,31 @@ normally prevent moving a type that has been borrowed from.")
     (description "Portable Packed SIMD vectors.")
     (license (list license:asl2.0 license:expat))))
 
+(define-public rust-pad-0.1
+  (package
+    (name "rust-pad")
+    (version "0.1.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "pad" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1qy0r26r52gp034fv252mmg0s599a55h9nr4xswy04hvky49pbfj"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+        (("rust-unicode-width" ,rust-unicode-width-0.1))))
+    (home-page "https://github.com/ogham/rust-pad")
+    (synopsis
+      "Library for padding strings at runtime")
+    (description
+      "Library for padding strings at runtime.")
+    (license license:expat)))
+
 (define-public rust-parking-lot-0.9
   (package
     (name "rust-parking-lot")
-- 
2.25.0

From 5f952356fcee7ca0aaa738af85d570c77c409bc6 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 20:52:21 -0800
Subject: [PATCH 03/22] gnu: Add rust-iso8601-0.1.

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

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 5afabe3c37..df21352a0b 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -5167,6 +5167,28 @@ immutable interval tree.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-iso8601-0.1
+  (package
+    (name "rust-iso8601")
+    (version "0.1.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "iso8601" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+           "0xy48qyfmirslaj4dy6n4g8b564jap3cjiql35fmj5vgii7ldp0i"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs (("rust-nom" ,rust-nom-1.2))))
+    (home-page "https://github.com/badboy/iso8601")
+    (synopsis "Parsing ISO8601 dates using nom")
+    (description "Parsing ISO8601 dates using nom.")
+    (license license:expat)))
+
 (define-public rust-itertools-0.8
   (package
     (name "rust-itertools")
-- 
2.25.0

From ca7fd39b06a3b231d4a9409b96cdf156bb4b0329 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 20:55:48 -0800
Subject: [PATCH 02/22] gnu: Add rust-nom-1.2.

* gnu/packages/crates-io.scm (rust-nom-1.2): 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 1f47376a35..5afabe3c37 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -6786,6 +6786,32 @@ implementation (which is unstable / requires nightly).")
 combinators library.")
     (license license:expat)))
 
+(define-public rust-nom-1.2
+  (package
+    (inherit rust-nom-4.2)
+    (version "1.2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "nom" version))
+       (file-name
+        (string-append (package-name rust-nom-4.2) "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1kjh42w67z1hh1dw3jrilgqrf54jk2xcvhw4rcdm4wclzmbc5f55"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-lazy-static" ,rust-lazy-static-1.3)
+        ("rust-lexical-core" ,rust-lexical-core-0.4)
+        ("rust-memchr" ,rust-memchr-1.0)
+        ("rust-regex" ,rust-regex-1.1))
+       #:cargo-development-inputs
+       (("rust-criterion" ,rust-criterion-0.2)
+        ("rust-doc-comment" ,rust-doc-comment-0.3)
+        ("rust-jemallocator" ,rust-jemallocator-0.3)
+        ("rust-version-check" ,rust-version-check-0.9))))))
+
 (define-public rust-num-complex-0.2
   (package
     (name "rust-num-complex")
-- 
2.25.0

From 30f2128bf62d9c709bb9a714471f90907fe305cb Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:43:24 -0800
Subject: [PATCH 06/22] gnu: Add rust-libm-0.2.

* gnu/packages/crates-io.scm (rust-libm-0.2): 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 9faaf94f93..8d53b64c2e 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -5722,6 +5722,30 @@ allows loading dynamic libraries (also known as shared libraries) as well as use
 functions and static variables these libraries contain.")
     (license license:isc)))
 
+(define-public rust-libm-0.2
+  (package
+    (name "rust-libm")
+    (version "0.2.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "libm" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0akh56sh51adhagmk9l84dyrlz60gv8ri05xhr13i1b18czkpmy7"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-development-inputs
+       (("rust-no-panic" ,rust-no-panic-0.1)
+        ("rust-rand" ,rust-rand-0.6))))
+    (home-page "https://github.com/rust-lang/libm")
+    (synopsis "Libm in pure Rust")
+    (description "Libm in pure Rust.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-libssh2-sys-0.2
   (package
     (name "rust-libssh2-sys")
-- 
2.25.0

From 1d396a06ccbe8e057114e867c121085a4eb17e49 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:44:11 -0800
Subject: [PATCH 07/22] gnu: rust-num-traits-0.2: Don't hide package.

* gnu/packages/crates-io.scm (rust-num-traits-0.2):[arguments] Add Cargo
inputs, skip build [properties] Remove field.
* gnu/packages/crates-io.scm (rust-num-traits-0.1):[arguments] Add Cargo input.
---
 gnu/packages/crates-io.scm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 8d53b64c2e..103c74dcab 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -7004,8 +7004,9 @@ combinators library.")
     (home-page "https://github.com/rust-num/num-traits")
     (synopsis "Numeric traits for generic mathematics")
     (description "Numeric traits for generic mathematics.")
-    (properties '((hidden? . #t)))
-    ;; Dual licensed.
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs (("rust-libm" ,rust-libm-0.2))))
     (license (list license:asl2.0
                    license:expat))))
 
@@ -7022,6 +7023,10 @@ combinators library.")
         (sha256
          (base32
           "0c9whknf2dm74a3cqirafy6gj83a76gl56g4v3g19k6lkwz13rcj"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+       (("rust-num-traits" , rust-num-traits-0.2))))
     (build-system cargo-build-system)))
 
 (define-public rust-numtoa-0.1
-- 
2.25.0

From 754f2f78455626a58954098bf9bc9ead26d34ca2 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Sat, 1 Feb 2020 00:35:12 -0800
Subject: [PATCH 08/22] gnu: Add rust-autocfg-1.0.

* gnu/packages/crates-io.scm (rust-autocfg-1.0): New variable.
* gnu/packages/crates-io.scm (rust-autocfg-0.1): Inherit from rust-autocfg-1.0.
---
 gnu/packages/crates-io.scm | 36 +++++++++++++++++++++++++-----------
 1 file changed, 25 insertions(+), 11 deletions(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 103c74dcab..c64f1b413e 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -444,28 +444,42 @@ ArrayVec and ArrayString.")
      "This package provides a simple interface for querying atty.")
     (license license:expat)))
 
-(define-public rust-autocfg-0.1
+(define-public rust-autocfg-1.0
   (package
     (name "rust-autocfg")
+    (version "1.0.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "autocfg" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "17cv6pwb4q08s0ynpr4n8hv5299hcmhdgvdchzixfpw8y5qcgapq"))))
+    (build-system cargo-build-system)
+    (home-page "https://github.com/cuviper/autocfg")
+    (synopsis
+     "Automatic cfg for Rust compiler features")
+    (description
+     "Automatic cfg for Rust compiler features.")
+    (license (list license:asl2.0 license:expat))))
+
+(define-public rust-autocfg-0.1
+  (package
+    (inherit rust-autocfg-1.0)
     (version "0.1.7")
     (source
       (origin
         (method url-fetch)
         (uri (crate-uri "autocfg" version))
-        (file-name (string-append name "-" version ".crate"))
+        (file-name (string-append
+                    (package-name rust-autocfg-1.0) "-" version ".crate"))
         (sha256
          (base32
           "1chwgimpx5z7xbag7krr9d8asxfqbh683qhgl9kn3hxk2l0djj8x"))))
     (build-system cargo-build-system)
-    (arguments '(#:skip-build? #t))
-    (home-page "https://github.com/cuviper/autocfg")
-    (synopsis "Automatic cfg for Rust compiler features")
-    (description "Rust library for build scripts to automatically configure
-code based on compiler support.  Code snippets are dynamically tested to see
-if the @code{rustc} will accept them, rather than hard-coding specific version
-support.")
-    (license (list license:asl2.0
-                   license:expat))))
+    (arguments '(#:skip-build? #t))))
 
 (define-public rust-backtrace-0.3
   (package
-- 
2.25.0

From f5c466a24ab893764b20fdab5b865aff03458379 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Sat, 1 Feb 2020 01:21:58 -0800
Subject: [PATCH 10/22] gnu: Add rust-libm-0.1.

* gnu/packages/crates-io.scm (rust-libm-0.1): 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 fc33e97ad2..5fc5c05389 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -5760,6 +5760,21 @@ functions and static variables these libraries contain.")
     (description "Libm in pure Rust.")
     (license (list license:expat license:asl2.0))))
 
+(define-public rust-libm-0.1
+  (package
+    (inherit rust-libm-0.2)
+    (version "0.1.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "libm" version))
+       (file-name
+        (string-append (package-name rust-libm-0.2)
+                       "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "16pc0gx4gkg0q2s1ssq8268brn14j8344623vwhadmivc4lsmivz"))))))
+
 (define-public rust-libssh2-sys-0.2
   (package
     (name "rust-libssh2-sys")
-- 
2.25.0

From 679b2c26171ac790e9946582a66aaba6cc505c72 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Sat, 1 Feb 2020 00:21:18 -0800
Subject: [PATCH 09/22] gnu: rust-num-traits-0.2: Upgrade to 0.2.11.

* gnu/packages/crates-io.scm (rust-num-traits-0.2): Upgrade it.
---
 gnu/packages/crates-io.scm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c64f1b413e..fc33e97ad2 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -7004,7 +7004,7 @@ combinators library.")
 (define-public rust-num-traits-0.2
   (package
     (name "rust-num-traits")
-    (version "0.2.8")
+    (version "0.2.11")
     (source
      (origin
        (method url-fetch)
@@ -7013,14 +7013,16 @@ combinators library.")
         (string-append name "-" version ".crate"))
        (sha256
         (base32
-         "0clvrm34rrqc8p6gq5ps5fcgws3kgq5knh7nlqxf2ayarwks9abb"))))
+         "15khrlm1bra50nd48ijl1vln13m9xg4fxzghf28jp16ic5zf8ay6"))))
     (build-system cargo-build-system)
     (home-page "https://github.com/rust-num/num-traits")
     (synopsis "Numeric traits for generic mathematics")
     (description "Numeric traits for generic mathematics.")
     (arguments
      `(#:skip-build? #t
-       #:cargo-inputs (("rust-libm" ,rust-libm-0.2))))
+       #:cargo-inputs
+       (("rust-libm" ,rust-libm-0.2)
+        ("rust-autocfg" ,rust-autocfg-1.0))))
     (license (list license:asl2.0
                    license:expat))))
 
-- 
2.25.0

From b24e28ce4ac316a8d61cf91217dc167be5ed3420 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Sat, 1 Feb 2020 01:28:05 -0800
Subject: [PATCH 11/22] gnu: librsvg-next-source: Update dependencies.

* gnu/packages/gnome.scm (librsvg-next-source): Update dependencies.
---
 gnu/packages/gnome.scm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e19caf67f7..59a07e846d 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -2178,6 +2178,11 @@ from forcing GEXP-PROMISE."
                      #+(canonical-package tar)))
               (invoke "tar" "xvf" #+upstream-source)
               (with-directory-excursion (string-append "librsvg-" #$version)
+                ;; autocfg was bumped for num-traits causing a duplicate
+                ;; dependency on autocfg
+                (begin
+                  (invoke
+                   "tar" "xvf" #+(package-source rust-autocfg-0.1) "-C" "vendor"))
                 (for-each
                   (lambda (crate)
                     (delete-file-recursively (string-append "vendor/" (car crate)))
@@ -2187,7 +2192,7 @@ from forcing GEXP-PROMISE."
                     ("approx" . #+(package-source rust-approx-0.3))
                     ("arrayvec" . #+(package-source rust-arrayvec-0.4))
                     ("atty" . #+(package-source rust-atty-0.2))
-                    ("autocfg" . #+(package-source rust-autocfg-0.1))
+                    ("autocfg" . #+(package-source rust-autocfg-1.0))
                     ("bitflags" . #+(package-source rust-bitflags-1))
 ;; block 0.1
                     ("bstr" . #+(package-source rust-bstr-0.2))
@@ -2238,7 +2243,7 @@ from forcing GEXP-PROMISE."
                     ("language-tags" . #+(package-source rust-language-tags-0.2))
                     ("lazy_static" . #+(package-source rust-lazy-static-1.3))
                     ("libc" . #+(package-source rust-libc-0.2))
-;; libm 0.1
+                    ("libm" . #+(package-source rust-libm-0.1))
 ;; locale_config 0.3
                     ("log" . #+(package-source rust-log-0.4))
                     ("mac" . #+(package-source rust-mac-0.1))
-- 
2.25.0

From 924eb729fa3112e4f2fe23a5d9efff22ac0bc10b Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 20:49:05 -0800
Subject: [PATCH 12/22] gnu: Add rust-datetime-0.4.

* gnu/packages/crates-io.scm (rust-datetime-0.4): New variable.
---
 gnu/packages/crates-io.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 5fc5c05389..4f6d873e3b 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -2320,6 +2320,42 @@ intrinsics.")
 hexadecimal, base32, and base64.")
     (license license:expat)))
 
+(define-public rust-datetime-0.4
+  (package
+    (name "rust-datetime")
+    (version "0.4.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "datetime" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1fd74bq48xg8ki5yw1mr1pa5hd3j5lbk4iqc5r0kh3l62b0vci2w"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+        (("rust-iso8601" ,rust-iso8601-0.1)
+         ("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-locale" ,rust-locale-0.2)
+         ("rust-num-traits" ,rust-num-traits-0.1)
+         ("rust-pad" ,rust-pad-0.1)
+         ("rust-redox-syscall" ,rust-redox-syscall-0.1)
+         ("rust-winapi" ,rust-winapi-0.2))
+        #:cargo-development-inputs
+        (("rust-regex" ,rust-regex-1.1)
+         ("rust-rustc-serialize" ,rust-rustc-serialize-0.3))))
+    (home-page
+      "https://github.com/rust-datetime/datetime")
+    (synopsis
+      "Library for date and time formatting and arithmetic")
+    (description
+      "Library for date and time formatting and arithmetic.")
+    (license license:expat)))
+
 (define-public rust-defmac-0.2
   (package
     (name "rust-defmac")
-- 
2.25.0

From b9b5815d118ff8cf6e4a97baee8e1f65f7fc0025 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:05:21 -0800
Subject: [PATCH 14/22] gnu: Add rust-hermit-abi-0.1.

* gnu/packages/crates-io.scm (rust-hermit-abi-0.1): 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 1143e4753d..81b342f6e5 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -4754,6 +4754,36 @@ consistent, and reasonably well performing.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-hermit-abi-0.1
+  (package
+    (name "rust-hermit-abi")
+    (version "0.1.6")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "hermit-abi" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+           "0wippj5nkw9q5yyyaqpdrgdhag3l3nbrwja7149cwn7ii1nnbwpg"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+        (("rust-compiler-builtins" ,rust-compiler-builtins-0.1)
+         ("rust-libc" ,rust-libc-0.2)
+         ("rust-rustc-std-workspace-core"
+          ,rust-rustc-std-workspace-core-1.0))))
+    (home-page
+      "https://github.com/hermitcore/rusty-hermit")
+    (synopsis
+      "Small interface to call functions from RustyHermit")
+    (description
+      "Hermit-abi is small interface to call functions from the unikernel RustyHermit.
+It is used to build the target x86_64-unknown-hermit.")
+    (license (list license:expat license:asl2.0))))
+
 (define-public rust-hex-0.4
   (package
     (name "rust-hex")
-- 
2.25.0

From 6fd90a0e2d0f29cca10d8ea7fc1b776cb9fea0b5 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 20:59:29 -0800
Subject: [PATCH 13/22] gnu: Add rust-natord-1.0.

* gnu/packages/crates-io.scm (rust-natord-1.0): New variable.
---
 gnu/packages/crates-io.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 4f6d873e3b..1143e4753d 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -6620,6 +6620,27 @@ checking.")
     (properties '((hidden? . #t)))
     (license license:expat)))
 
+(define-public rust-natord-1.0
+  (package
+    (name "rust-natord")
+    (version "1.0.9")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "natord" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0z75spwag3ch20841pvfwhh3892i2z2sli4pzp1jgizbipdrd39h"))))
+    (build-system cargo-build-system)
+    (arguments `(#:skip-build? #t))
+    (home-page
+     "https://github.com/lifthrasiir/rust-natord")
+    (synopsis "Natural ordering for Rust")
+    (description "Natural ordering for Rust.")
+    (license license:expat)))
+
 (define-public rust-net2-0.2
   (package
     (name "rust-net2")
-- 
2.25.0

From 6ce15721139420edb597831f9a2e2ad8f181cc03 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:03:53 -0800
Subject: [PATCH 15/22] gnu: Add rust-num-cpus-1.11.

* gnu/packages/crates-io.scm (rust-num-cpus-1.11): New variable.
---
 gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 81b342f6e5..a3aa9b305c 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -7060,6 +7060,28 @@ combinators library.")
     (license (list license:asl2.0
                    license:expat))))
 
+(define-public rust-num-cpus-1.11
+  (package
+    (inherit rust-num-cpus-1.10)
+    (version "1.11.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "num_cpus" version))
+        (file-name
+         (string-append (package-name rust-num-cpus-1.10)
+                        "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "0wlxs00cpg16z09fwchj1gdz1jxnf5dgg1cbidvq0sc75bnwbnkn"))))
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+        (("rust-hermit-abi" ,rust-hermit-abi-0.1)
+         ("rust-libc" ,rust-libc-0.2))
+        #:cargo-development-inputs
+        (("rust-doc-comment" ,rust-doc-comment-0.3))))))
+
 (define-public rust-num-integer-0.1
   (package
     (name "rust-num-integer")
-- 
2.25.0

From dd9cce3ddc8a611d32b0047815c50f258cb64216 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:07:37 -0800
Subject: [PATCH 16/22] gnu: Add rust-number-prefix-0.3.

* gnu/packages/crates-io.scm (rust-number-prefix-0.3): 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 a3aa9b305c..ac981b28f7 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -7169,6 +7169,29 @@ combinators library.")
        (("rust-num-traits" , rust-num-traits-0.2))))
     (build-system cargo-build-system)))
 
+(define-public rust-number-prefix-0.3
+  (package
+    (name "rust-number-prefix")
+    (version "0.3.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "number_prefix" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "0slm4mqmpgs6hvz22ycny9lvyvl9ivs80a1lncslp7lszz02zc0p"))))
+    (build-system cargo-build-system)
+    (arguments `(#:skip-build? #t))
+    (home-page
+      "https://github.com/ogham/rust-number-prefix")
+    (synopsis
+      "Format numeric prefixes: kilo, giga, kibi")
+    (description
+      "Library for formatting numeric prefixes: kilo, giga, kibi.")
+    (license license:expat)))
+
 (define-public rust-numtoa-0.1
   (package
     (name "rust-numtoa")
-- 
2.25.0

From fef5fb1b1520ba3c919e18cd8d09a67a04a0c3ca Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Tue, 21 Jan 2020 09:56:55 -0800
Subject: [PATCH 18/22] gnu: Add rust-ansi-term-0.12.

* gnu/packages/crates-io.scm (rust-ansi-term-0.12): New variable.
* gn/packages/crates-io.scm (rust-ansi-term-0.11): Inherit from rust-ansi-term-0.12.
---
 gnu/packages/crates-io.scm | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 05d9482e46..9cf4e5ee5e 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -185,10 +185,10 @@ Rust, using gimli.")
         ("rust-serde" ,rust-serde-1.0)
         ("rust-serde-derive" ,rust-serde-derive-1.0))))))
 
-(define-public rust-ansi-term-0.11
+(define-public rust-ansi-term-0.12
   (package
     (name "rust-ansi-term")
-    (version "0.11.0")
+    (version "0.12.1")
     (source
       (origin
         (method url-fetch)
@@ -196,7 +196,7 @@ Rust, using gimli.")
         (file-name (string-append name "-" version ".crate"))
         (sha256
          (base32
-          "16wpvrghvd0353584i1idnsgm0r3vchg8fyrm0x8ayv1rgvbljgf"))))
+          "1ljmkbilxgmhavxvxqa7qvm6f3fjggi7q2l3a72q9x0cxjvrnanm"))))
     (build-system cargo-build-system)
     (arguments
      `(#:skip-build? #t
@@ -209,6 +209,29 @@ Rust, using gimli.")
 text or blue underlined text, on ANSI terminals.")
     (license license:expat)))
 
+(define-public rust-ansi-term-0.11
+  (package
+    (inherit rust-ansi-term-0.12)
+    (version "0.11.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "ansi_term" version))
+        (file-name (string-append (package-name rust-ansi-term-0.12)
+                                  "-" version ".crate"))
+        (sha256
+         (base32
+          "16wpvrghvd0353584i1idnsgm0r3vchg8fyrm0x8ayv1rgvbljgf"))))
+    (arguments
+     `(#:skip-build? #t
+       #: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.1)
+        ("rust-serde-json" ,rust-serde-json-1.0))))))
+
 (define-public rust-antidote-1.0
   (package
     (name "rust-antidote")
-- 
2.25.0

From ab41fc5496177a7b3e7339c2f982e573324654c3 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:09:06 -0800
Subject: [PATCH 17/22] gnu: Add rust-term-grid-0.1.

* gnu/packages/crates-io.scm (rust-term-grid-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 ac981b28f7..05d9482e46 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -11754,6 +11754,32 @@ directories.")
        (("rust-kernel32-sys" ,rust-kernel32-sys-0.2)
         ("rust-winapi" ,rust-winapi-0.2))))))
 
+(define-public rust-term-grid-0.1
+  (package
+    (name "rust-term-grid")
+    (version "0.1.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "term_grid" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1kq2sy3b8329jrsrpcvijvyz4gbqjyvyy6c3n0wmmvda9y03w393"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+        (("rust-unicode-width" ,rust-unicode-width-0.1))))
+    (home-page
+      "https://github.com/ogham/rust-term-grid")
+    (synopsis
+      "Library for formatting strings into a grid layout")
+    (description
+      "Library for formatting strings into a grid layout.")
+    (license license:expat)))
+
 (define-public rust-term-size-1.0
   (package
     (name "rust-term-size")
-- 
2.25.0

From ff9d56e8aadd947dc7548ddd5237a33327d9b747 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:50:46 -0800
Subject: [PATCH 21/22] gnu: rust-libgit2-sys-0.8: Inherit arguments.

* gnu/packages/crates-io.scm (rust-libgit2-sys-0.8):[arguments] Remove field.
---
 gnu/packages/crates-io.scm | 1 -
 1 file changed, 1 deletion(-)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index db210d6d61..9eb8ff6703 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -5777,7 +5777,6 @@ values of all the exported APIs match the platform that libc is compiled for.")
         (sha256
          (base32
           "0y2mibmx7wy91s2kmb2gfb29mrqlqaxpy5wcwr8s1lwws7b9w5sc"))))
-    (arguments '())
     (properties '((hidden? . #t)))))
 
 (define-public rust-libgit2-sys-0.7
-- 
2.25.0

From 72ecfc3dfbfa18d19a90a7753a63b1fc0a9b7f58 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:27:07 -0800
Subject: [PATCH 19/22] gnu: Add rust-users-0.9.

* gnu/packages/crates-io.scm (rust-users-0.9): 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 9cf4e5ee5e..b615d36c50 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -13381,6 +13381,30 @@ untrusted inputs in Rust.")
         ("rust-rustc-test" ,rust-rustc-test-0.3)
         ("rust-serde-json" ,rust-serde-json-1.0))))))
 
+(define-public rust-users-0.9
+  (package
+    (name "rust-users")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "users" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "1kxl3y2hcrqqip7jpqn5mz7xlpbwmmpfmaza0xnyrhx0mrkl4by7"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs (("rust-libc" ,rust-libc-0.2))))
+    (home-page "https://github.com/ogham/rust-users")
+    (synopsis
+      "Library for getting information on Unix users and groups")
+    (description
+      "Library for getting information on Unix users and groups.")
+    (license license:expat)))
+
 (define-public rust-utf-8-0.7
   (package
     (name "rust-utf-8")
-- 
2.25.0

From 2e54b8d9c41c80c7bfb6c2ee1e6728a44643ec89 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 21:28:29 -0800
Subject: [PATCH 20/22] gnu: Add rust-zoneinfo-compiled-0.4.

* gnu/packages/crates-io.scm (rust-zoneinfo-compiled-0.4): 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 b615d36c50..db210d6d61 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -14244,3 +14244,30 @@ to XDG Base Directory specification")
     (description
      "The missing YAML 1.2 parser for rust.")
     (license (list license:asl2.0 license:expat))))
+
+(define-public rust-zoneinfo-compiled-0.4
+  (package
+    (name "rust-zoneinfo-compiled")
+    (version "0.4.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (crate-uri "zoneinfo_compiled" version))
+        (file-name
+          (string-append name "-" version ".tar.gz"))
+        (sha256
+          (base32
+            "0bnm19w791q6kp79s0zl1cj9w51bw5xrifrxfy3g1p05i676y4vf"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:skip-build? #t
+       #:cargo-inputs
+        (("rust-byteorder" ,rust-byteorder-1.3)
+         ("rust-datetime" ,rust-datetime-0.4))))
+    (home-page
+      "https://github.com/rust-datetime/zoneinfo-compiled/")
+    (synopsis
+      "Library for parsing compiled zoneinfo files")
+    (description
+      "Library for parsing compiled zoneinfo files.")
+    (license license:expat)))
-- 
2.25.0

From bbf0bfa79cdb94f8d019f9e97108b0d74acbb4e5 Mon Sep 17 00:00:00 2001
From: John Soo <[email-masked]>
Date: Fri, 31 Jan 2020 20:51:17 -0800
Subject: [PATCH 22/22] gnu: Add exa.

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

diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 90bd146442..daa2a5f83f 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -28,6 +28,88 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control))
 
+(define-public exa
+  (package
+    (name "exa")
+    (version "0.9.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "exa" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1s902xgplz1167k0r7x235p914lprpsqy2if0kpa1mlb0fswqqq4"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs
+       (("rust-ansi-term" ,rust-ansi-term-0.12)
+        ("rust-datetime" ,rust-datetime-0.4)
+        ("rust-env-logger" ,rust-env-logger-0.6)
+        ("rust-git2" ,rust-git2-0.9)
+        ("rust-glob" ,rust-glob-0.3)
+        ("rust-lazy-static" ,rust-lazy-static-1.3)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-locale" ,rust-locale-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-natord" ,rust-natord-1.0)
+        ("rust-num-cpus" ,rust-num-cpus-1.11)
+        ("rust-number-prefix" ,rust-number-prefix-0.3)
+        ("rust-scoped-threadpool" ,rust-scoped-threadpool-0.1)
+        ("rust-term-grid" ,rust-term-grid-0.1)
+        ("rust-term-size" ,rust-term-size-0.3)
+        ("rust-unicode-width" ,rust-unicode-width-0.1)
+        ("rust-users" ,rust-users-0.9)
+        ("rust-zoneinfo-compiled" ,rust-zoneinfo-compiled-0.4))
+       #:cargo-development-inputs
+       (("rust-datetime" ,rust-datetime-0.4))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'configure 'dont-vendor-sources
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute*
+                 "guix-vendor/rust-openssl-sys-0.9.53.crate/Cargo.toml"
+               (("\\[build-dependencies.openssl-src\\]") "")
+               (("version = \"111.0.1\"") "")
+               (("optional = true") "")
+               (("vendored = \\[\"openssl-src\"\\]") "vendored = []"))
+             (let ((openssl (assoc-ref inputs "openssl")))
+               (setenv "OPENSSL_DIR" openssl))
+             #t))
+         ;; Ignoring failing tests.
+         ;; Reported in https://github.com/ogham/exa/issues/318
+         (add-before 'check 'disable-failing-tests
+           (lambda _
+             (substitute* "src/options/mod.rs"
+               (("^.*fn oneline_across.*" oneline-across)
+                (string-append "#[ignore]\n" oneline-across)))
+
+             (substitute* "src/options/view.rs"
+               (("test!\\(across:.*") "")
+               (("test!\\(empty:.*") "")
+               (("test!\\(gracross:.*") "")
+               (("test!\\(grid:.*") "")
+               (("test!\\(icons:.*") "")
+               (("test!\\(just_binary:.*") "")
+               (("test!\\(just_blocks:.*") "")
+               (("test!\\(just_bytes:.*") "")
+               (("test!\\(just_git:.*") "")
+               (("test!\\(just_group:.*") "")
+               (("test!\\(just_header:.*") "")
+               (("test!\\(just_inode:.*") "")
+               (("test!\\(just_links:.*") "")
+               (("test!\\(leg:.*") "")
+               (("test!\\(lid:.*") "")
+               (("test!\\(original_g:.*") ""))
+             #t)))))
+    (inputs `(("zlib" ,zlib)))
+    (native-inputs `(("pkg-config" ,pkg-config)))
+    (home-page "https://the.exa.website/")
+    (synopsis "Modern replacement for ls")
+    (description "This package provides a modern replacement for ls.")
+    (license license:expat)))
+
 (define-public ripgrep
   (package
     (name "ripgrep")
-- 
2.25.0