guix-mirrors/gnu/packages/sequoia.scm
Hilton Chain 79752bf11b
gnu: sequoia: Remove unused Rust crates.
* gnu/packages/sequoia.scm (rust-card-backend-0.2, rust-card-backend-pcsc-0.5)
(rust-openpgp-card-0.5, rust-openpgp-cert-d-0.3, rust-sequoia-autocrypt-0.25)
(rust-sequoia-cert-store-0.6, rust-sequoia-directories-0.1)
(rust-sequoia-gpg-agent-0.5, rust-sequoia-ipc-0.35, rust-sequoia-keystore-0.6)
(rust-sequoia-keystore-backend-0.6, rust-sequoia-keystore-gpg-agent-0.4)
(rust-sequoia-keystore-openpgp-card-0.1, rust-sequoia-keystore-softkeys-0.6)
(rust-sequoia-keystore-tpm-0.1, rust-sequoia-net-0.29, rust-sequoia-openpgp-1)
(rust-sequoia-policy-config-0.7, rust-sequoia-policy-config-0.6)
(rust-sequoia-tpm-0.1, rust-sequoia-wot-0.13): Delete variables.

Change-Id: I388d6b27e426e41c3876079dd841aa4ec6f19251
2025-08-21 19:08:49 +08:00

354 lines
16 KiB
Scheme

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019, 2020, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2021, 2023-2025 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages sequoia)
#:use-module (guix build-system cargo)
#:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages base) ; glibc
#:use-module (gnu packages gnupg)
#:use-module (gnu packages hardware)
#:use-module (gnu packages llvm)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages nettle)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages security-token)
#:use-module (gnu packages serialization)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages tls))
(define-public sequoia-chameleon-gnupg
(package
(name "sequoia-chameleon-gnupg")
(version "0.12.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "sequoia-chameleon-gnupg" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "0ydb6wbyznr9p734p4jh896arcc45wi0b4isfjs6znwa40j3s66c"))))
(build-system cargo-build-system)
(arguments
(list
#:install-source? #f
#:features '(list "crypto-nettle")
#:cargo-test-flags
'(list "--"
;; Some tests overly depend on specific versions of input crates.
"--skip=gpg::generate_key"
"--skip=gpg::list_keys"
"--skip=gpg::migrate::migration_from_secring"
"--skip=gpg::print_mds"
"--skip=gpg::quick::add_key_default_default_iso_date"
"--skip=gpg::quick::generate_key_default_default_iso_date"
"--skip=gpg::sign"
"--skip=gpg::verify")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'set-asset-out-dir
(lambda _
(setenv "ASSET_OUT_DIR" "target/assets")))
(add-after 'install 'install-more
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share"))
(bash-completions-dir
(string-append out "/etc/bash_completion.d"))
(zsh-completions-dir
(string-append share "/zsh/site-functions"))
(fish-completions-dir
(string-append share "/fish/vendor_completions.d"))
(elvish-completions-dir
(string-append share "/elvish/lib"))
(man1 (string-append share "/man/man1")))
;; The completions are generated in build.rs.
(mkdir-p bash-completions-dir)
(mkdir-p elvish-completions-dir)
(for-each (lambda (file)
(install-file file man1))
(find-files "target/assets/man-pages" "\\.1$"))
(copy-file "target/assets/shell-completions/gpg-sq.bash"
(string-append bash-completions-dir "/gpg-sq"))
(copy-file "target/assets/shell-completions/gpgv-sq.bash"
(string-append bash-completions-dir "/gpgv-sq"))
(copy-file "target/assets/shell-completions/gpg-sq.elv"
(string-append elvish-completions-dir "/gpg-sq"))
(copy-file "target/assets/shell-completions/gpgv-sq.elv"
(string-append elvish-completions-dir "/gpgv-sq"))
(install-file "target/assets/shell-completions/_gpg-sq"
zsh-completions-dir)
(install-file "target/assets/shell-completions/_gpgv-sq"
zsh-completions-dir)
(install-file "target/assets/shell-completions/gpg-sq.fish"
fish-completions-dir)
(install-file "target/assets/shell-completions/gpgv-sq.fish"
fish-completions-dir)))))))
(inputs
(cons* nettle openssl sqlite (cargo-inputs 'sequoia-chameleon-gnupg)))
(native-inputs
(list clang gnupg pkg-config sequoia-sq))
(home-page "https://sequoia-pgp.org/")
(synopsis "Sequoia's reimplementation of the GnuPG interface")
(description "This package provides Sequoia's reimplementation of the
@code{GnuPG} interface.
@code{gpg-sq} is Sequoia's alternative implementation of a tool following the
GnuPG command line interface. It provides a drop-in but not feature-complete
replacement for the GnuPG project's @code{gpg}.
This Guix package is built to use the nettle cryptographic library.")
(license license:gpl3+)))
(define-public sequoia-sq
(package
(name "sequoia-sq")
(version "1.2.0")
(source
(origin
(method url-fetch)
(uri (crate-uri "sequoia-sq" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "0p3z6njzgffz8hrjnj3c1xk9fwfr8fjp81nmr03v8n2fspzyq6l7"))))
(build-system cargo-build-system)
(arguments
`(#:install-source? #f
#:features '("crypto-nettle"
"sequoia-keystore/gpg-agent"
"sequoia-keystore/openpgp-card"
"sequoia-keystore/softkeys")
#:cargo-test-flags
(list "--"
;; The certificate has an expiration date.
"--skip=sq_autocrypt_import")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-asset-out-dir
(lambda _
(setenv "ASSET_OUT_DIR" "target/assets")))
(add-after 'install 'install-more
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share"))
(bash-completions-dir
(string-append out "/etc/bash_completion.d"))
(zsh-completions-dir
(string-append share "/zsh/site-functions"))
(fish-completions-dir
(string-append share "/fish/vendor_completions.d"))
(elvish-completions-dir
(string-append share "/elvish/lib"))
(man1 (string-append share "/man/man1")))
;; The completions are generated in build.rs.
(mkdir-p bash-completions-dir)
(mkdir-p elvish-completions-dir)
(for-each (lambda (file)
(install-file file man1))
(find-files "target/assets/man-pages" "\\.1$"))
(copy-file "target/assets/shell-completions/sq.bash"
(string-append bash-completions-dir "/sq"))
(install-file "target/assets/shell-completions/_sq"
zsh-completions-dir)
(install-file "target/assets/shell-completions/sq.fish"
fish-completions-dir)
(copy-file "target/assets/shell-completions/sq.elv"
(string-append elvish-completions-dir "/sq"))))))))
(inputs
(cons* nettle openssl pcsc-lite sqlite (cargo-inputs 'sequoia-sq)))
(native-inputs
(list capnproto clang pkg-config))
(home-page "https://sequoia-pgp.org/")
(synopsis "Command-line frontend for Sequoia OpenPGP")
(description "This package provides the command-line frontend for Sequoia
OpenPGP.
This Guix package is built to use the nettle cryptographic library and the
gpg-agent, openpgp-card and softkeys keystore backends.")
(license license:lgpl2.0+)))
(define-public sequoia-sqv
(package
(name "sequoia-sqv")
(version "1.2.1")
(source
(origin
(method url-fetch)
(uri (crate-uri "sequoia-sqv" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "0nizac02bwl5cdmcvn3vjjxdhcy431mnsijyswnq101p764dlkl2"))))
(build-system cargo-build-system)
(inputs
(cons* nettle openssl (cargo-inputs 'sequoia-sqv)))
(native-inputs
(list clang pkg-config))
(arguments
`(#:install-source? #f
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-asset-out-dir
(lambda _
(setenv "ASSET_OUT_DIR" "target/assets")))
(add-after 'install 'install-more
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share"))
(bash-completions-dir
(string-append out "/etc/bash_completion.d"))
(zsh-completions-dir
(string-append share "/zsh/site-functions"))
(fish-completions-dir
(string-append share "/fish/vendor_completions.d"))
(elvish-completions-dir
(string-append share "/elvish/lib"))
(man1 (string-append share "/man/man1")))
;; The completions are generated in build.rs.
(mkdir-p bash-completions-dir)
(mkdir-p elvish-completions-dir)
(for-each (lambda (file)
(install-file file man1))
(find-files "target/assets/man-pages" "\\.1$"))
(copy-file "target/assets/shell-completions/sqv.bash"
(string-append bash-completions-dir "/sqv"))
(install-file "target/assets/shell-completions/_sqv"
zsh-completions-dir)
(install-file "target/assets/shell-completions/sqv.fish"
fish-completions-dir)
(copy-file "target/assets/shell-completions/sqv.elv"
(string-append elvish-completions-dir "/sqv"))))))))
(home-page "https://sequoia-pgp.org/")
(synopsis "Simple OpenPGP signature verification program")
(description "@code{sqv} verifies detached OpenPGP signatures. It is a
replacement for @code{gpgv}. Unlike @code{gpgv}, it can take additional
constraints on the signature into account.
This Guix package is built to use the nettle cryptographic library.")
(license license:lgpl2.0+)))
;; There hasn't been a release cut since the tools were split from the library
;; so we use the 0.1.0 number from tools/Cargo.toml and the tag from the library.
(define-public sequoia-wot-tools
(package
(name "sequoia-wot-tools")
(version "0.1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/sequoia-pgp/sequoia-wot")
(commit "sequoia-wot/v0.13.2")))
(file-name (git-file-name name version))
(sha256
(base32 "0vvq2izz2088x9jvii1xj14z4hls948wn18wb53fpahyhx8kkbvx"))))
(build-system cargo-build-system)
(arguments
(list
#:features '(list "sequoia-openpgp/crypto-nettle")
#:cargo-test-flags '(list "--" "--skip=gpg_trust_roots")
#:install-source? #f
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'chdir
(lambda _
(delete-file "Cargo.lock")
(chdir "tools")))
(add-after 'install 'install-more
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(share (string-append out "/share"))
(man1 (string-append share "/man/man1")))
(for-each (lambda (file)
(install-file file man1))
(find-files "target/release" "\\.1$"))
(mkdir-p (string-append out "/etc/bash_completion.d"))
(mkdir-p (string-append share "/fish/vendor_completions.d"))
(mkdir-p (string-append share "/elvish/lib"))
(copy-file (car (find-files "target/release" "sq-wot.bash"))
(string-append out "/etc/bash_completion.d/sq-wot"))
(copy-file (car (find-files "target/release" "sq-wot.fish"))
(string-append
share "/fish/vendor_completions.d/sq-wot.fish"))
(copy-file (car (find-files "target/release" "sq-wot.elv"))
(string-append share "/elvish/lib/sq-wot"))
(install-file (car (find-files "target/release" "_sq-wot"))
(string-append
share "/zsh/site-functions"))))))))
(inputs
(cons* nettle openssl sqlite (cargo-inputs 'sequoia-wot-tools)))
(native-inputs
(list clang pkg-config))
(home-page "https://sequoia-pgp.org/")
(synopsis "Implementation of OpenPGP's web of trust")
(description
"This package provides an implementation of @code{OpenPGP's} web of trust.
This Guix package is built to use the nettle cryptographic library.")
(license license:lgpl2.0+)))
;;
(define-public sequoia
(package
(name "sequoia")
(version "1.22.0")
(source #f)
(build-system trivial-build-system)
(arguments
(list
#:modules '((guix build utils)
(guix build union)
(guix build gnu-build-system)
(guix build gremlin)
(guix elf))
#:builder
#~(begin
(use-modules (guix build utils)
(guix build union)
(guix build gnu-build-system)
(ice-9 match))
(let ((make-dynamic-linker-cache
(assoc-ref %standard-phases 'make-dynamic-linker-cache))
(ld.so.cache
(string-append #$output "/etc/ld.so.cache")))
(match %build-inputs
(((names . directories) ...)
(union-build #$output directories)))
(delete-file ld.so.cache)
(setenv "PATH"
(string-append (getenv "PATH") ":" #$glibc "/sbin"))
(make-dynamic-linker-cache #:outputs %outputs)))))
(inputs
(list ;glibc ;; for ldconfig in make-dynamic-linker-cache
sequoia-sq
sequoia-sqv
sequoia-wot-tools))
(home-page "https://sequoia-pgp.org")
(synopsis "New OpenPGP implementation (meta-package)")
(description "Sequoia is a new OpenPGP implementation, written in Rust,
consisting of several Rust crates/packages. This Guix meta-package combines
these packages into a single one for convenience. Anyhow, you should not
depend other packages on this one avoid excessive compile-times for users.")
(license license:lgpl2.0+)))