summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/rust-apps.scm81
1 files changed, 81 insertions, 0 deletions
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 90bd146442..108d2fb573 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -28,6 +28,87 @@
   #: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)
+             (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
+     `(("libgit2" ,libgit2)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://the.exa.website/")
+    (synopsis "Modern replacement for ls")
+    (description "@code{exa} is a modern replacement for the command-line
+program @code{ls}.  It uses colours to distinguish file types and metadata.  It
+also knows about symlinks, extended attributes, and Git.")
+    (license license:expat)))
+
 (define-public ripgrep
   (package
     (name "ripgrep")