diff mbox series

[bug#56663,24/24] : gnu: just: New package.

Message ID PZo99wu-dtu2wXSs54OQLY6-Mq4hChFaOh0X5w74_jqpFPFukgMsx15awpVXEV01aMUkRL0stV_JhRjsFqunOdAx_V2Et6VRUbpdOFfxbuc=@jeandudey.tech
State New
Headers show
Series : gnu: just: New package. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Jean Pierre De Jesus DIAZ July 20, 2022, 12:22 p.m. UTC
Empty Message

Comments

M July 21, 2022, 2:37 p.m. UTC | #1
On 20-07-2022 14:22, Jean Pierre De Jesus DIAZ via Guix-patches via wrote:
> Empty Message

https://github.com/casey/temptree

Sending the patch seems to have gone wrong (there's Empty Message, and 
the subject line is always the same).

Anyway, I looked through the package definitions a bit:

> +         "--skip=choose::status_error"
> +         "--skip=edit::editor_working_directory"
> +         "--skip=edit::status_error"
> +         "--skip=export::setting_shebang"
> +         "--skip=export::shebang"
> +         "--skip=justfile::tests::run_shebang"
> +         "--skip=functions::env_var_functions"
> +         "--skip=functions::path_functions"
> +         "--skip=functions::path_functions2"
> +         "--skip=misc::quiet_shebang_recipe"
> +         "--skip=misc::shebang_line_numbers"
> +         "--skip=positional_arguments::shebang"
> +         "--skip=positional_arguments::variadic_shebang"
> +         "--skip=quiet::choose_status"
> +         "--skip=quiet::quiet_shebang"
> +         "--skip=shell::flag"
> + 
> "--skip=working_directory::change_working_directory_to_search_justfile_parent"
> + "--skip=working_directory::justfile_and_working_directory"
> + "--skip=working_directory::justfile_without_working_directory"
> + "--skip=working_directory::justfile_without_working_directory_relative"
> +         "--skip=working_directory::search_dir_child"
> +         "--skip=working_directory::search_dir_parent")
Why are all these tests skipped?


 > +    (synopsis "Lexically clean paths")
 > +    (description "Lexically clean paths")

A synopsis is not the same as a description. I recommend looking at 
non-Rust packages for examples, the synopsis and description of Rust 
packages have historically been neglected.


 > +     `(#:tests? #f ; `whatever' requires a recent compiler.

Possibly it doesn't, try setting RUSTC_BOOTSTRAP.

  (define-public rust-digest-0.10
    (package
      (name "rust-digest")
-    (version "0.10.1")
+    (version "0.10.3")

- "16wpqnwlzx0lbnwccwikns7dq8fblcc6kma2l7xz8anlh5hdd5xn"))))
+ "01nmj9cci5qdm4q4wlmz104rzr68d5m823kdzd95bypslq68dyzj"))))

FWIW, I can confirm I got the same hash in some code I haven't submitted 
yet (antioxidant).


  (define-public rust-typenum-1
    (package
      (name "rust-typenum")
-    (version "1.12.0")
+    (version "1.15.0")
      (source
        (origin
          (method url-fetch)
@@ -67690,8 +67690,11 @@ (define-public rust-typenum-1
          (file-name (string-append name "-" version ".tar.gz"))
          (sha256
           (base32
- "0cvbksljz61ian21fnn0h51kphl0pwpzb932bv4s0rwy1wh8lg1p"))))
+ "11yrvz1vd43gqv738yw1v75rzngjbs7iwcgzjy3cq5ywkv2imy6w"))))

Likewise.


+    (synopsis "Rust implementation of SHA1")
+    (description "Minimal dependency free implementation of SHA1 for 
Rust.")
+    (license license:bsd-3)))

I don't see the relevancy of it being implemented in Rust (Guix supports 
multiple languages just fine), everything in Guix is free so no need to 
mention it, it being minimal dependencies or maximal dependencies 
doesn't seem relevant to me given that Guix is a package manager that 
can just take care of the dependencies, and I believe the standard 
spelling is SHA-1, not SHA1 though I could be wrong.


+                `(substitute* "Cargo.toml"
+                   ;; Relax quote version.
+                   (("1\\.0\\.10") "1")))))

Nice, though ` -> ' or #~ will do.


+    (synopsis "Private implementation details of the uuid! macro.")
+    (description "Private implementation details of the @code{uuid!} 
macro.")

Why @code below but not above?  Also, maybe private->internal (there are 
no privacy concerns), and add a comment that it is only supposed by the 
rust-??? package.  Also, 'the uuid!' macro sounds ambigious, I'd just 
mention the package name instead.


+    (arguments
+      `(#:tests? #f ;; Generated assets for tests not included.

Then you can add them, often switching to a git checkout helps with 
things like this.


+     "Determine whether characters have the @code{XID_Start} or
+@code{XID_Continue} properties according to Unicode Standard Annex #31.")

The description must be proper sentences, which I believe to be 
mentioned in (guix)Sybopses and Descriptions but I'm not sure about 
that.  Also, maybe you can hyperlinkify 'Unicode Standard Annex #31'.

+    (synopsis "Compressed bitmaps")
+    (description "This package is a pure Rust implementation of roaring 
bitmaps
+compressed bitmaps.")

I don't think that packages can be implementations, though they can 
implement things.

This description can be much more informative, it's currently rather 
minimalistic -- e.g., you could write that 'roaring bitmaps' is a very 
effective bitmap compression technique and link to the site. Maybe 
something like

"This package implements roaring bitmaps, an efficient technique for 
compressing bitmaps [...]"

[rust-cradle-0.2]

+    (inputs
+      (list coreutils
+            which

AFAICT coreutils, which and xxd aren't used.

+    (synopsis "Get the path of a binary target's executable")
+    (description "Get the path of a binary target's executable")

It is not clear what a binary target is supposed to be from context, 
'path' is ambigious (maybe: file name?), "get" is rather generic, maybe 
"guess" or "determine" or "calculate" depending on what it does.

+    (synopsis "Temporary trees of files")
+    (description "Temporary trees of files")

This is not a clear description (also, synopsis and description are 
identical) -- maybe it scans the file system for all files and returns 
the results in a temporary tree structure?  (Going by the rust-tempfile 
dependency, probably not, but that's one easy misinterpretation to make).

Greetings,
Maxime.
Jean Pierre De Jesus DIAZ July 21, 2022, 3:35 p.m. UTC | #2
>On 20-07-2022 14:22, Jean Pierre De Jesus DIAZ via Guix-patches via >wrote:
>> Empty Message

>https://github.com/casey/temptree

An error on my side. Did not attach the patch (ProtonMail doesn't support
SMTP in order to use git send-email, I'm still porting their bridge program
to GNU Guix).

>Why are all these tests skipped?

Most of these tests are tests specific to test shebang code, but are hard
coded to use `#!/usr/bin/env <whatever>', some of these tests could be
changed though. Didn't make patches for that because of the added
maintenance effort but will do so.

>FWIW, I can confirm I got the same hash in some code I haven't submitted
yet (antioxidant).

Would be great if upstreamed to GNU Guix and one less patch on this
series :-).

And great work on antioxidant, tried to make each crate on this
patch series build-able so in the future switching/using
antioxidant-build-system is easier. I have also started to test various
crates to remove `#:skip-build? #f' as much as possible from
gnu/packages/crates-io.scm.


>+                `(substitute* "Cargo.toml"
>+                   ;; Relax quote version.
>+                   (("1\\.0\\.10") "1")))))
>
>Nice, though ` -> ' or #~ will do.

Thought of using G-Expressions but as it isn't used on crates-io.scm yet
didn't want to change the convention there. Would be you okay if I use '?

>[rust-cradle-0.2]
>
>+    (inputs
>+      (list coreutils
>+            which
>
>AFAICT coreutils, which and xxd aren't used.

Are required by the tests which is why I added these packages.

These are mostly used on documentation tests but the author of
the crate did not mark these as no_run so they run on the 'check
phase, and there's no easy way to disable documentation tests
or skip specific ones. I'll try to make some patches to make
some of these tests to not run.

Thanks for the review!

Will update accordingly.

—
Jean-Pierre De Jesus DIAZ
diff mbox series

Patch

From 3d3f6255beada8cb6b0e78cd43657de9367ba687 Mon Sep 17 00:00:00 2001
From: Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
Date: Sun, 17 Jul 2022 22:50:12 +0200
Subject: [PATCH 24/24] gnu: just: New package.

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

diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 0d5034ffb7..91ec6908e8 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -16,6 +16,7 @@ 
 ;;; Copyright © 2021 jgart <jgart@dismail.de>
 ;;; Copyright © 2021 Nicolas Graves <ngraves@ngraves.fr>
 ;;; Copyright © 2022 Aleksandr Vityazev <avityazev@posteo.org>
+;;; Copyright © 2022 Jean-Pierre De Jesus DIAZ <me@jeandudey.tech>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -612,6 +613,105 @@  (define-public hyperfine
      "This package provides a command-line benchmarking tool.")
     (license (list license:expat license:asl2.0))))
 
+(define-public just
+  (package
+    (name "just")
+    (version "1.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (crate-uri "just" version))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1x762kq9mdp86fbnymn77mvdabcyvp211bkbvawnzm8fspp8a3g2"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-test-flags
+       '("--release" "--"
+         "--skip=choose::status_error"
+         "--skip=edit::editor_working_directory"
+         "--skip=edit::status_error"
+         "--skip=export::setting_shebang"
+         "--skip=export::shebang"
+         "--skip=justfile::tests::run_shebang"
+         "--skip=functions::env_var_functions"
+         "--skip=functions::path_functions"
+         "--skip=functions::path_functions2"
+         "--skip=misc::quiet_shebang_recipe"
+         "--skip=misc::shebang_line_numbers"
+         "--skip=positional_arguments::shebang"
+         "--skip=positional_arguments::variadic_shebang"
+         "--skip=quiet::choose_status"
+         "--skip=quiet::quiet_shebang"
+         "--skip=shell::flag"
+         "--skip=working_directory::change_working_directory_to_search_justfile_parent"
+         "--skip=working_directory::justfile_and_working_directory"
+         "--skip=working_directory::justfile_without_working_directory"
+         "--skip=working_directory::justfile_without_working_directory_relative"
+         "--skip=working_directory::search_dir_child"
+         "--skip=working_directory::search_dir_parent")
+       #:install-source? #f
+       #:cargo-inputs
+       (("rust-ansi-term" ,rust-ansi-term-0.12)
+        ("rust-atty" ,rust-atty-0.2)
+        ("rust-camino" ,rust-camino-1)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-ctrlc" ,rust-ctrlc-3)
+        ("rust-derivative" ,rust-derivative-2)
+        ("rust-dotenv" ,rust-dotenv-0.15)
+        ("rust-edit-distance" ,rust-edit-distance-2)
+        ("rust-env-logger" ,rust-env-logger-0.9)
+        ("rust-lazy-static" ,rust-lazy-static-1)
+        ("rust-lexiclean" ,rust-lexiclean-0.0.1)
+        ("rust-libc" ,rust-libc-0.2)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-json" ,rust-serde-json-1)
+        ("rust-sha2" ,rust-sha2-0.10)
+        ("rust-similar" ,rust-similar-2)
+        ("rust-snafu" ,rust-snafu-0.7)
+        ("rust-strum" ,rust-strum-0.24)
+        ("rust-target" ,rust-target-2)
+        ("rust-tempfile" ,rust-tempfile-3)
+        ("rust-typed-arena" ,rust-typed-arena-2)
+        ("rust-unicode-width" ,rust-unicode-width-0.1)
+        ("rust-uuid" ,rust-uuid-1))
+       #:cargo-development-inputs
+       (("rust-cradle" ,rust-cradle-0.2)
+        ("rust-executable-path" ,rust-executable-path-1)
+        ("rust-pretty-assertions" ,rust-pretty-assertions-1)
+        ("rust-temptree" ,rust-temptree-0.2)
+        ("rust-which" ,rust-which-4)
+        ("rust-yaml-rust" ,rust-yaml-rust-0.4))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-extra
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out   (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (man1  (string-append share "/man/man1"))
+                    (bash  (string-append out "/etc/bash_completions.d"))
+                    (fish  (string-append share "/fish/vendor_completions.d"))
+                    (zsh   (string-append share "/zsh/site-functions")))
+               (install-file "man/just.1" man1)
+               (mkdir-p bash)
+               (mkdir-p zsh)
+               (mkdir-p fish)
+               (copy-file "completions/just.bash" (string-append bash "/just"))
+               (copy-file "completions/just.zsh" (string-append zsh "/_just"))
+               (copy-file "completions/just.fish"
+                          (string-append fish "/just.fish"))))))))
+    (home-page "https://just.systems/")
+    (synopsis "Command runner")
+    (description "Just is a command runner.
+
+It provides a handy way to save and run project-specific commands.
+
+Commands, called recipes, are stored in a file called @code{justfile} with
+syntax inspired by @code{make}.")
+    (license license:cc0)))
+
 (define-public i3status-rust
   (package
     (name "i3status-rust")
-- 
2.36.1