Subject: Re: [bug#48671] [PATCH] Add nitrocli

From: Xinglu Chen <[email-masked]>
Date: Thu, 27 May 2021 08:59:57 +0200

On Tue, May 25 2021, Antero Mejr wrote:

> ---
> Tested using a Purism Key. Has new package definitions for some
> updated crate dependencies like rust-structopt-0.3.21, I can update
> the main definition if that is preferred.

I am not familiar with the Rust ecosystem in Guix, but I will leave some
more general comments.

>  gnu/packages/crates-io.scm      | 247 ++++++++++++++++++++++++++++++++
>  gnu/packages/security-token.scm |  46 ++++++
>  2 files changed, 293 insertions(+)

This patch should be split into multiple patches where each patch adds a
single package.  You can run ‘guile etc/committers.scm’ to automatically
generate commit messages for unstaged changes (you should probably
double check just in case).

> +(define-public rust-base32-0.4
> +  (package
> +    (name "rust-base32")
> +    (version "0.4.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "base32" version))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "1ykwx8jhksqxghfgyw2pzikzjf4n9wqm1x2ww5wqyn68ssf6dki3"))))
> +    (build-system cargo-build-system)
> +    (home-page "https://github.com/andreasots/base32")
> +    (synopsis "Base32 encoder/decoder for Rust")
> +    (description "Base32 encoder/decoder for Rust")

The description should consist of one or more full sentences, see the
‘16.4.4 Synopses and Descriptions’ in the manual.

> +(define-public rust-envy-0.4
> +  (package
> +    (name "rust-envy")
> +    (version "0.4.2")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "envy" version))
> +       (file-name
> +        (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "0rar459p7pl19v6pbx98q3hi2hxfl8q1ndxxw5d4zd9cgway0irz"))))
> +    (build-system cargo-build-system)
> +    (arguments
> +     `(#:cargo-inputs
> +       (("rust-serde" ,rust-serde-1))))
> +    (home-page "https://github.com/softprops/envy")
> +    (synopsis "deserialize env vars into typesafe structs")
> +    (description
> +     "deserialize env vars into typesafe structs")

Write a full sentence, and capitalize.

> +(define-public rust-merge-0.1
> +  (package
> +    (name "rust-merge")
> +    (version "0.1.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "merge" version))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "1sck0vhi9lk8a6mgky0rgn842fj7yspywidwbd963nmimf9yzfqh"))))
> +    (build-system cargo-build-system)
> +    (arguments
> +     `(#:cargo-inputs
> +       (("rust-merge-derive" ,rust-merge-derive-0.1)
> +        ("rust-num-traits" ,rust-num-traits-0.2))))
> +    (home-page "https://git.sr.ht/~ireas/merge-rs")
> +    (synopsis "Merge multiple values into one")
> +    (description "Merge multiple values into one")

Likewise.

> +(define-public rust-nitrokey-0.9
> +  (package
> +    (name "rust-nitrokey")
> +    (version "0.9.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "nitrokey" version))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "0c8mj52ckvy1311vwxs6jpw16b2bihp5cc811isb96j9slcjvsyx"))))
> +    (build-system cargo-build-system)
> +    (arguments
> +     `(#:cargo-inputs
> +       (("rust-lazy_static" ,rust-lazy-static-1)
> +        ("rust-libc" ,rust-libc-0.2)
> +        ("rust-nitrokey-sys" ,rust-nitrokey-sys-3)
> +        ("rust-rand_core" ,rust-rand-core-0.5))))
> +    (home-page "https://git.sr.ht/~ireas/nitrokey-rs")
> +    (synopsis "Rust bindings to libnitrokey")
> +    (description
> +     "Bindings to libnitrokey for communication with Nitrokey devices")

Likewise.

> +(define-public rust-nitrokey-sys-3
> +  (package
> +    (name "rust-nitrokey-sys")
> +    (version "3.6.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "nitrokey-sys" version))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "08c3lnb8iqx000jd5rzvrdvv4ihjyw3x3s8q11dw56is0nmjyvws"))))
> +    (build-system cargo-build-system)
> +    (home-page "https://git.sr.ht/~ireas/nitrokey-sys-rs")
> +    (synopsis "Low-level Rust bindings for libnitrokey")
> +    (description
> +     "Low-level bindings to libnitrokey for communication with
> +Nitrokey devices")

Likewise.

> +(define-public rust-nitrokey-test-0.5
> +  (package
> +    (name "rust-nitrokey-test")
> +    (version "0.5.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "nitrokey-test" version))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "197j9r2s4ydzbqfydza6v31mgcsgd29jpidz4psqawjdm49f8lg6"))))
> +    (build-system cargo-build-system)
> +    (arguments
> +     `(#:cargo-inputs
> +       (("rust-proc-macro2" ,rust-proc-macro2-1)
> +        ("quote" ,rust-quote-1)
> +        ("syn" ,rust-syn-1))))
> +    (home-page "https://github.com/d-e-s-o/nitrokey-test")
> +    (synopsis "Supporting test infrastructure for the nitrokey crate")
> +    (description
> +     "Supporting test infrastructure for the nitrokey crate and others
> +using it.")

Likewise.

> +    (license license:gpl3+)))
> +
> +(define-public rust-nitrokey-test-state-0.1
> +  (package
> +    (name "rust-nitrokey-test-state")
> +    (version "0.1.0")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "nitrokey-test-state" version))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "00w817kl8q3sna924pzl72ybqljny14rdv1ixlj288fmsqp776x5"))))
> +    (build-system cargo-build-system)
> +    (home-page "https://github.com/d-e-s-o/nitrokey-test")
> +    (synopsis "State required and used by the nitrokey-test crate")
> +    (description "State required and used by the nitrokey-test crate.")

Likewise.

> +(define-public rust-progressing-3
> +  (package
> +    (name "rust-progressing")
> +    (version "3.0.2")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "progressing" version))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "06sb1cxpkc8lx56s76c95cfljs0513nsnn35wd6w79sblwcxpdwp"))))
> +    (build-system cargo-build-system)
> +    (arguments
> +     `(#:cargo-inputs
> +       (("log" ,rust-log-0.4))))
> +    (home-page "https://github.com/dominicparga/progressing")
> +    (synopsis "A counting progress-bar for Rust")

The synopsis should start with the word ‘A’ or ‘The’.

> +    (description
> +     "A lightweight, text-based, counting progress-bar for Rust")

Full sentence.

> +    (license license:asl2.0)))
> +
>  (define-public rust-progrs-0.1
>    (package
>      (name "rust-progrs")
> @@ -40394,6 +40587,32 @@ and Jaro-Winkler.")
>       "Parse command line argument by defining a struct.")
>      (license (list license:asl2.0 license:expat))))
>  
> +(define-public rust-structopt-0.3.21
> +  (package
> +    (name "rust-structopt")
> +    (version "0.3.21")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "structopt" version))
> +       (file-name
> +        (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "136j0lvjmpv5syi751vxg8vb30gfyv4k81x8d18kxrj6xvbsqxsj"))))
> +    (build-system cargo-build-system)
> +    (arguments
> +     `(#:skip-build? #t
> +       #:cargo-inputs
> +       (("rust-structopt-derive" ,rust-structopt-derive-0.4.14)
> +        ("rust-lazy-static" ,rust-lazy-static-1)
> +        ("rust-clap" ,rust-clap-2))))
> +    (home-page "https://github.com/TeXitoi/structopt")
> +    (synopsis "Parse command line argument by defining a struct")
> +    (description
> +     "Parse command line argument by defining a struct.")

Full sentence.

> +(define-public rust-structopt-derive-0.4.14
> +  (package
> +   (name "rust-structopt-derive")
> +   (version "0.4.14")
> +   (source
> +    (origin
> +     (method url-fetch)
> +     (uri (crate-uri "structopt-derive" version))
> +     (file-name
> +      (string-append name "-" version ".tar.gz"))
> +     (sha256
> +      (base32
> +       "143gjwvz3s86hwp070km83y25n8kqp5f01kb1dr19f4ilkywvaav"))))
> +   (build-system cargo-build-system)
> +   (arguments
> +    `(#:skip-build? #t
> +      #:cargo-inputs
> +      (("rust-heck" ,rust-heck-0.3)
> +       ("rust-proc-macro-error" ,rust-proc-macro-error-1)
> +       ("rust-proc-macro2" ,rust-proc-macro2-1)
> +       ("rust-syn" ,rust-syn-1)
> +       ("rust-quote" ,rust-quote-1))))
> +   (home-page "https://github.com/TeXitoi/structopt")
> +   (synopsis "Parse command line argument by defining a struct, derive crate")
> +   (description
> +    "Parse command line argument by defining a struct, derive crate.")

Full sentence.

> +(define-public nitrocli
> +  (package
> +    (name "nitrocli")
> +    (version "0.4.1")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (crate-uri "nitrocli" version))
> +	      (file-name (string-append name "-" version ".tar.gz"))
> +              (sha256
> +               (base32
> +                "1djspfvcqjipg17v8hkph8xrhkdg1xqjhq5jk1sr8vr750yavidy"))))
> +    (build-system cargo-build-system)
> +    (arguments
> +     `(#:tests? #f ;; 2/164 tests fail, nitrocli-ext tests failing
> +       #:cargo-inputs
> +       (("rust-anyhow" ,rust-anyhow-1)
> +        ("rust-base32" ,rust-base32-0.4)
> +        ("rust-directories" ,rust-directories-3)
> +        ("rust-envy" ,rust-envy-0.4)
> +        ("rust-libc-0.2" ,rust-libc-0.2)
> +        ("rust-merge" ,rust-merge-0.1)
> +        ("rust-nitrokey" ,rust-nitrokey-0.9)
> +        ("rust-progressing" ,rust-progressing-3)
> +        ("rust-serde" ,rust-serde-1)
> +        ("rust-structopt" ,rust-structopt-0.3.21)
> +        ("rust-termion" ,rust-termion-1)
> +        ("rust-toml" ,rust-toml-0.5))
> +       #:cargo-development-inputs
> +       (("rust-nitrokey-test" ,rust-nitrokey-test-0.5)
> +        ("rust-nitrokey-test-state" ,rust-nitrokey-test-state-0.1)
> +        ("rust-regex" ,rust-regex-1)
> +        ("rust-tempfile" ,rust-tempfile-3))))
> +    (inputs
> +     `(("hidapi" ,hidapi)
> +       ("gnupg" ,gnupg)))
> +    (home-page "https://github.com/d-e-s-o/nitrocli")
> +    (synopsis "Command line tool for Nitrokey devices")
> +    (description
> +     "nitrocli is a program that provides a command line interface
> +for interaction with Nitrokey Pro, Nitrokey Storage, and Librem Key
> +devices.")
> +    (license license:gpl3+)))

Please run ‘guix lint’ before submitting patches, most of these mistakes
should have been caught by it.

Could you send an updated patch set?