diff mbox series

[bug#43929] gnu: Add pijul.

Message ID 875z2tdlfh.fsf_-_@asu.edu
State New
Headers show
Series [bug#43929] gnu: Add pijul. | expand

Checks

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

Commit Message

John Soo Feb. 15, 2021, 10:18 p.m. UTC
Hello again,

I rebased these patches on master. Pijul definitely works.

Thanks!

John

Comments

Nicolas Goaziou Feb. 16, 2021, 9:31 a.m. UTC | #1
Hello,

John Soo <jsoo1@asu.edu> writes:

Thank you. I'm adding my grain of salt, if you don't mind!

> +(define-public rust-trust-dns-rustls-0.6
> +  (package
> +    (inherit rust-trust-dns-rustls-0.7)
> +    (name "rust-trust-dns-rustls")

AFAICT, rust-trust-dns-rustls-0.6 already inherits from 0.19, so it is
not strictly necessary to change this inheritance.

> +(define-public rust-yasna-0.1
> +  (package
> +    (name "rust-yasna")
> +    (version "0.1.3")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "yasna" version))
> +       (file-name
> +        (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "1frcd79rzi6dlly7lldjn2avnhfmj6yxrjsgvb2p1k2zbxdzyc9s"))))
> +    (build-system cargo-build-system)
> +    (arguments
> +     `(#:cargo-inputs
> +       (("rust-bit-vec" ,rust-bit-vec-0.4)
> +        ("rust-chrono" ,rust-chrono-0.4)
> +        ("rust-num" ,rust-num-0.1)
> +        ("rust-num-bigint" ,rust-num-bigint-0.1))
> +       #:cargo-development-inputs
> +       (("rust-num-traits" ,rust-num-traits-0.2))))

This should have #:skip-build #t as any non-leaf package.

> +(define-public rust-thrussh-keys-0.11

[...]

> +        ("rust-thrussh-libsodium"
> +         ,rust-thrussh-libsodium-0.1)

Nitpick: indentation.

> +        ("rust-tokio" ,rust-tokio-0.1)
> +        ("rust-yasna" ,rust-yasna-0.1))
> +       #:cargo-development-inputs
> +       (("rust-env-logger" ,rust-env-logger-0.6)
> +        ("rust-tempdir" ,rust-tempdir-0.3)
> +        ("rust-tokio-uds" ,rust-tokio-uds-0.2))))

See above about #:skip-build?

> +    (home-page "https://pijul.org/thrussh")
> +    (synopsis
> +     "Deal with SSH keys in Rust")
> +    (description
> +     "This package provides a rust library to deal with SSH keys.

Nitpick: rust -> Rust

> +        ("rust-thrussh-libsodium"
> +         ,rust-thrussh-libsodium-0.1)

Indentation nitpick and #skip-build again :)

I will not repeat those in the rest of the message.

> +    (synopsis
> +     "Contains function definitions for the Windows API library advapi32")

s/Contains //

> +    (description
> +     "Contains function definitions for the Windows API library advapi32.
> +The winapi crate's types and constants has more details about this
> API.")

The description needs to be a complete sentence.

> +    (synopsis
> +     "Portably retrieve the username of the user running the current thread")

s/Portably //

> +    (description
> +     "Portably retrieve the user name (and possibly other information in
> +future versions) of the user running the current thread.")

Could you write it as a full sentence?

> +(define-public rust-spmc-0.2
> +  (package
> +    (inherit rust-spmc-0.3)
> +    (name "rust-spmc")
> +    (version "0.2.3")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "spmc" version))
> +       (file-name (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32 "1nhbjc65avbb4nffk6b49spbv7rsmmnrppj2qnx39mhwi57spgiw"))))
> +    (arguments
> +     `(#:tests? #f ;; tests hang
> +       #:cargo-development-inputs
> +       (("rust-loom" ,rust-loom-0.2))))
> +    ;; This package is broken before 0.3
> +    ;; Only included for pijul@1
> +    (properties `((hidden? . #t)))))

I suggest to not bother and use #:skip-build?

> +(define-public rust-tokio-tls-0.1
> +  (package
> +    (inherit rust-tokio-tls-0.3)
> +    (version "0.1.4")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "tokio-tls" version))
> +       (file-name
> +        (string-append
> +         (package-name rust-tokio-tls-0.3) "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "04yrdscn8m9qza8ms09pqipbmj6x2q64jgm5n3ipy4b0wl24nbvp"))))
> +    (arguments
> +     `(#:skip-build? #t
> +       #:cargo-inputs
> +       (("rust-futures" ,rust-futures-0.1)
> +        ("rust-native-tls" ,rust-native-tls-0.1)
> +        ("rust-tokio-core" ,rust-tokio-core-0.1)
> +        ("rust-tokio-io" ,rust-tokio-io-0.1)
> +        ("rust-tokio-proto" ,rust-tokio-proto-0.1))
> +       #:cargo-development-inputs
> +       (("rust-cfg-if" ,rust-cfg-if-0.1)
> +        ("rust-env-logger" ,rust-env-logger-0.4)
> +        ("rust-hyper" ,rust-hyper-0.11)
> +        ("rust-openssl" ,rust-openssl-0.9)
> +        ("rust-schannel" ,rust-schannel-0.1)
> +        ("rust-security-framework"
> +         ,rust-security-framework-0.1)
> +        ("rust-tokio-service" ,rust-tokio-service-0.1)
> +        ("rust-winapi" ,rust-winapi-0.3))))))

Since you use skip-build?, development inputs are not necessary.

> +(define-public pijul
> +  (package
> +    (name "pijul")
> +    (version "0.12.2")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (crate-uri "pijul" version))
> +       (file-name
> +        (string-append name "-" version ".tar.gz"))
> +       (sha256
> +        (base32
> +         "12aqpfd2si70qbvfnn9kvznxyd5g5gsb1kk1q52wm077cd03yapr"))))
> +    (build-system cargo-build-system)
> +    (inputs
> +     `(("clang" ,clang)
> +       ("libressl" ,libressl)
> +       ("libsodium" ,libsodium)
> +       ("nettle" ,nettle)
> +       ("pkg-config" ,pkg-config)))

Shouldn't pgk-config and clang be native-inputs instead?

Regards,
diff mbox series

Patch

From 271fc728ab7a47630457d6611b0603b705c9097c Mon Sep 17 00:00:00 2001
From: John Soo <jsoo1@asu.edu>
Date: Wed, 17 Jun 2020 18:23:46 -0700
Subject: [PATCH 14/14] gnu: Add pijul.

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

diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 9511cbf308..91924d2322 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -34,10 +34,13 @@ 
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crates-io)
   #:use-module (gnu packages crates-graphics)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages jemalloc)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages nettle)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages tls)
@@ -329,6 +332,117 @@  for distinguishing different kinds of bytes such as NULL bytes, printable ASCII
 characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
     (license (list license:expat license:asl2.0))))
 
+(define-public pijul
+  (package
+    (name "pijul")
+    (version "0.12.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "pijul" version))
+       (file-name
+        (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12aqpfd2si70qbvfnn9kvznxyd5g5gsb1kk1q52wm077cd03yapr"))))
+    (build-system cargo-build-system)
+    (inputs
+     `(("clang" ,clang)
+       ("libressl" ,libressl)
+       ("libsodium" ,libsodium)
+       ("nettle" ,nettle)
+       ("pkg-config" ,pkg-config)))
+    (arguments
+     `(#:cargo-inputs
+       (("rust-atty" ,rust-atty-0.2)
+        ("rust-base64" ,rust-base64-0.9)
+        ("rust-bincode" ,rust-bincode-1)
+        ("rust-bs58" ,rust-bs58-0.2)
+        ("rust-chrono" ,rust-chrono-0.4)
+        ("rust-clap" ,rust-clap-2)
+        ("rust-cryptovec" ,rust-cryptovec-0.4)
+        ("rust-dirs" ,rust-dirs-1)
+        ("rust-env-logger" ,rust-env-logger-0.6)
+        ("rust-failure" ,rust-failure-0.1)
+        ("rust-flate2" ,rust-flate2-1)
+        ("rust-futures" ,rust-futures-0.1)
+        ("rust-getch" ,rust-getch-0.2)
+        ("rust-hex" ,rust-hex-0.3)
+        ("rust-ignore" ,rust-ignore-0.4)
+        ("rust-libpijul" ,rust-libpijul-0.12)
+        ("rust-line" ,rust-line-0.1)
+        ("rust-log" ,rust-log-0.4)
+        ("rust-pathdiff" ,rust-pathdiff-0.1)
+        ("rust-progrs" ,rust-progrs-0.1)
+        ("rust-rand" ,rust-rand-0.6)
+        ("rust-regex" ,rust-regex-1)
+        ("rust-reqwest" ,rust-reqwest-0.9)
+        ("rust-rpassword" ,rust-rpassword-2)
+        ("rust-sequoia-openpgp" ,rust-sequoia-openpgp-0.9)
+        ("rust-serde" ,rust-serde-1)
+        ("rust-serde-derive" ,rust-serde-derive-1)
+        ("rust-shell-escape" ,rust-shell-escape-0.1)
+        ("rust-tar" ,rust-tar-0.4)
+        ("rust-tempfile" ,rust-tempfile-3)
+        ("rust-term" ,rust-term-0.5)
+        ("rust-thrussh" ,rust-thrussh-0.21)
+        ("rust-thrussh-config" ,rust-thrussh-config-0.2)
+        ("rust-thrussh-keys" ,rust-thrussh-keys-0.11)
+        ("rust-tokio" ,rust-tokio-0.1)
+        ("rust-tokio-uds" ,rust-tokio-uds-0.2)
+        ("rust-toml" ,rust-toml-0.4)
+        ("rust-username" ,rust-username-0.2))
+       #:cargo-development-inputs
+       (("rust-walkdir" ,rust-walkdir-2))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'set-clang-env
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv
+              "LIBCLANG_PATH"
+              (string-append (assoc-ref inputs "clang") "/lib"))
+             #t))
+         (add-after 'install 'install-completions
+           (lambda* (#:key outputs #:allow-other-keys)
+             (use-modules (ice-9 popen)
+                          (ice-9 textual-ports))
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (share (string-append out "/share"))
+                    (bash (string-append
+                           share "/bash-completion/completions"))
+                    (zsh (string-append
+                          share "/zsh/site-functions"))
+                    (fish (string-append
+                           share "/fish/vendor_completions.d")))
+               (for-each
+                (lambda (x)
+                  (let ((dir (cddr x))
+                        (file (cadr x))
+                        (shell (car x)))
+                    (mkdir-p dir)
+                    (call-with-output-file (string-append dir "/" file)
+                      (lambda (f)
+                        (let* ((cmd (string-append
+                                     bin "/pijul generate-completions --"
+                                     shell))
+                               (pipe (open-input-pipe cmd))
+                               (completion (get-string-all pipe)))
+                          (format f "~A" completion)
+                          (close-pipe pipe)))) ))
+                `(("bash" . ("pijul" . ,bash))
+                  ("zsh" . ("_pijul" . ,zsh))
+                  ("fish" . ("pijul.fish" . ,fish))))
+               #t))))))
+    (home-page "https://pijul.org/")
+    (synopsis
+     "Patch-based distributed version control system")
+    (description
+     "This package is a version control system based on patches.  Its
+fundamental promise is that two patches producible in parallel always commute.
+This makes the whole system more correct, and much simpler to use.")
+    (license license:gpl2+)))
+
 (define-public ripgrep
   (package
     (name "ripgrep")
-- 
2.30.1