[PATCH 00/42] Revising sequoia packaging and update to 1.6

  • Done
  • quality assurance status badge
Details
4 participants
  • Hartmut Goebel
  • Nicolas Goaziou
  • Mathieu Othacehe
  • zimoun
Owner
unassigned
Submitted by
Hartmut Goebel
Severity
normal
Merged with
H
H
Hartmut Goebel wrote on 18 Dec 2021 21:49
(address . guix-patches@gnu.org)
cover.1639859819.git.h.goebel@crazy-compilers.com
This implements the following changes I announced some weeks ago, see
It also updates each sequoia package to its current version.

* Move all sequoia related crates in to sequoia.scm. As of now these are only
rust-sequoia-openpgp-0.9, rust-sequoia-rfc2822-0.9 and there is only on
package depending on them rust-libpijul-0.12

* bufferedreader, rust-nettle and other crates from the sequoia project but
not having "sequoia" (or such) in the name would be kept in crates-io.scm

* In sequoia.scm there would be all sequoia crates, with the app packages
named without "rust-" prefix ("sequoia-sq", …)

* The current "sequoia" package will become a "wrapper", just propagating (or
copying, what ever is more common in guix) the other packages which have an
actual output.

Hartmut Goebel (42):
gnu: rust-nettle: Update to 7.0.2.
gnu: rust-criterion-0.3: Update to 0.3.4.
gnu: rust-serde-1: Update to 1.0.126.
gnu: rust-serde-derive-1: Update to 1.0.126.
gnu: rust-wasm-bindgen-futures-0.4: Update to 0.4.24.
gnu: rust-wasm-bindgen-test-0.3: Update to 0.3.24.
gnu: rust-wasm-bindgen-test-macro-0.3: Update to 0.3.24.
gnu: rust-wasm-bindgen-0.2: Update to 0.2.74.
gnu: rust-wasm-bindgen-backend-0.2: Update to 0.2.74.
gnu: rust-wasm-bindgen-macro-0.2: Update to 0.2.74.
gnu: rust-wasm-bindgen-macro-support-0.2: Update to 0.2.74.
gnu: rust-wasm-bindgen-shared-0.2: Update to 0.2.74.
gnu: rust-js-sys-0.3: Update to 0.3.51.
gnu: rust-web-sys-0.3: Update to 0.3.51.
gnu: rust-version-compare 0.0.11: Fix variable name.
gnu: Add rust-ttf-parser-0.12.
gnu: Add rust-gif-0.11.
gnu: Add rust-fallible-collections-0.3.
gnu: Add rust-target-lexicon-0.11.
gnu: Add rust-dcv-color-primitives-0.1.
gnu: Add rust-cfg-expr-0.7.
gnu: Add rust-system-deps-3.
gnu: Add rust-pathfinder-simd-0.5.
gnu: Add rust-pathfinder-geometry-0.5.
gnu: Add rust-freetype-0.7.
gnu: Add rust-font-kit-0.10.
gnu: Add rust-plotters-backend-0.3.
gnu: Add rust-plotters-bitmap-0.3.
gnu: Add rust-plotters-svg-0.3.
gnu: Add rust-plotters-0.3.
gnu: Add rust-buffered-reader-1.
gnu: Add rust-xxhash-rust-0.8.
gnu: Add rust-sequoia-openpgp-1.
gnu: Add rust-sequoia-net-0.23.
gnu: Add rust-sequoia-ipc-0.25.
gnu: Add rust-sequoia-autocrypt-0.23.
gnu: Add sequoia-sq.
gnu: Add sequoia-sqv.
gnu: Add libsequoia.
gnu: sequoia: Change into a meta-package and update to 1.6.0.
gnu: rust-sequoia-openpgp-0.9: Move to (gnu packages sequoia).
gnu: rust-sequoia-rfc2822-0.9: Move to (gnu packages sequoia).

gnu/local.mk | 2 +
gnu/packages/crates-io.scm | 652 ++++++++++++------
.../patches/libsequoia-fix-ffi-Makefile.patch | 32 +
.../patches/libsequoia-remove-store.patch | 432 ++++++++++++
gnu/packages/sequoia.scm | 600 ++++++++++++----
5 files changed, 1399 insertions(+), 319 deletions(-)
create mode 100644 gnu/packages/patches/libsequoia-fix-ffi-Makefile.patch
create mode 100644 gnu/packages/patches/libsequoia-remove-store.patch

--
2.30.2
H
H
Hartmut Goebel wrote on 18 Dec 2021 21:49
[PATCH 37/42] gnu: Add sequoia-sq.
(address . guix-patches@gnu.org)
b01cade38662a0ad65d0b18daf33fd40a60d83b7.1639859823.git.h.goebel@crazy-compilers.com
* gnu/packages/sequoia.scm (sequoia-sq): New variable.
---
gnu/packages/sequoia.scm | 51 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (64 lines)
diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm
index f228caf734..802feaba4f 100644
--- a/gnu/packages/sequoia.scm
+++ b/gnu/packages/sequoia.scm
@@ -248,6 +248,57 @@ version 3 compatibility) have been left out. The developers have also updated
some OpenPGP defaults to avoid foot guns (e.g., they selected modern algorithm
defaults).
+This Guix package is built to use the nettle cryptographic library.")
+ (license license:lgpl2.0+)))
+
+(define-public sequoia-sq
+ (package
+ (name "sequoia-sq")
+ (version "0.25.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "sequoia-sq" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0j26vpp98i7zwwhqsvwj0zknj4s0s0ilfqpynj1vgd5laanhyr0d"))))
+ (build-system cargo-build-system)
+ (inputs
+ (list nettle openssl))
+ (native-inputs
+ (list clang pkg-config))
+ (arguments
+ `(#:tests? #f ;; tests require data-files not provided in the package
+ #:install-source? #f
+ #:cargo-inputs
+ (("rust-anyhow" ,rust-anyhow-1)
+ ("rust-buffered-reader" ,rust-buffered-reader-1)
+ ("rust-chrono" ,rust-chrono-0.4)
+ ("rust-clap" ,rust-clap-2)
+ ("rust-clap" ,rust-clap-2)
+ ("rust-itertools" ,rust-itertools-0.9)
+ ("rust-rpassword" ,rust-rpassword-5)
+ ("rust-sequoia-autocrypt" ,rust-sequoia-autocrypt-0.23)
+ ("rust-sequoia-net" ,rust-sequoia-net-0.23)
+ ("rust-sequoia-openpgp" ,rust-sequoia-openpgp-1)
+ ("rust-tempfile" ,rust-tempfile-3)
+ ("rust-term-size" ,rust-term-size-0.3)
+ ("rust-tokio" ,rust-tokio-0.2))
+ #:cargo-development-inputs
+ (("rust-assert-cli" ,rust-assert-cli-0.6))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'remove-other-crypto-features
+ (lambda _
+ (substitute* "Cargo.toml"
+ (("^crypto-cng =" line) (string-append "# " line))
+ (("^crypto-rust =" line) (string-append "# " line)))
+ #t)))))
+ (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.")
(license license:lgpl2.0+)))
--
2.30.2
H
H
Hartmut Goebel wrote on 18 Dec 2021 21:49
[PATCH 38/42] gnu: Add sequoia-sqv.
(address . guix-patches@gnu.org)
856cde2f6f5108cd8badfe44c584757bacc760f5.1639859823.git.h.goebel@crazy-compilers.com
* gnu/packages/sequoia.scm (sequoia-sqv): New variable.
---
gnu/packages/sequoia.scm | 44 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)

Toggle diff (57 lines)
diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm
index 802feaba4f..70ac2e89cd 100644
--- a/gnu/packages/sequoia.scm
+++ b/gnu/packages/sequoia.scm
@@ -299,6 +299,50 @@ This Guix package is built to use the nettle cryptographic library.")
(description "This package provides the command-line frontend for Sequoia
OpenPGP.
+This Guix package is built to use the nettle cryptographic library.")
+ (license license:lgpl2.0+)))
+
+(define-public sequoia-sqv
+ (package
+ (name "sequoia-sqv")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "sequoia-sqv" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0nrfjn64fm038x5dssipf7jxi27z741m5n5a7zsa9768zab1hr9d"))))
+ (build-system cargo-build-system)
+ (inputs
+ (list nettle openssl))
+ (native-inputs
+ (list clang pkg-config))
+ (arguments
+ `(#:tests? #f ;; tests require data-files not provided in the package
+ #:install-source? #f
+ #:cargo-inputs
+ (("rust-anyhow" ,rust-anyhow-1)
+ ("rust-chrono" ,rust-chrono-0.4)
+ ("rust-clap" ,rust-clap-2)
+ ("rust-clap" ,rust-clap-2)
+ ("rust-sequoia-openpgp" ,rust-sequoia-openpgp-1))
+ #:cargo-development-inputs
+ (("rust-assert-cli" ,rust-assert-cli-0.6))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'remove-other-crypto-features
+ (lambda _
+ (substitute* "Cargo.toml"
+ (("^crypto-cng =" line) (string-append "# " line))
+ (("^crypto-rust =" line) (string-append "# " line)))
+ #t)))))
+ (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+)))
--
2.30.2
H
H
Hartmut Goebel wrote on 18 Dec 2021 21:49
[PATCH 42/42] gnu: rust-sequoia-rfc2822-0.9: Move to (gnu packages sequoia).
(address . guix-patches@gnu.org)
632c7b34d32c7ba4053528da8d379f8f21370bef.1639859823.git.h.goebel@crazy-compilers.com
* gnu/packages/crates-io.scm (rust-sequoia-rfc2822-0.9): Move package to ...
* gnu/packages/sequoia.scm: ... here. [arguments]<skip-build?> Add.
<cargo-development-inputs>: Remove. [description] Reformat and add markup.
---
gnu/packages/crates-io.scm | 39 --------------------------------------
gnu/packages/sequoia.scm | 28 +++++++++++++++++++++++++++
2 files changed, 28 insertions(+), 39 deletions(-)

Toggle diff (91 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2fb35277a4..5d62156abe 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -46923,45 +46923,6 @@ formats:
fragment of code.")
(license (list license:expat license:asl2.0))))
-(define-public rust-sequoia-rfc2822-0.9
- (package
- (name "rust-sequoia-rfc2822")
- (version "0.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (crate-uri "sequoia-rfc2822" version))
- (file-name
- (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1aj34i6862718m162rqfv69fkmvdw063s6ws7hbp42n73gb08p5c"))))
- (build-system cargo-build-system)
- (arguments
- `(#:cargo-inputs
- (("rust-failure" ,rust-failure-0.1)
- ("rust-lalrpop" ,rust-lalrpop-0.17)
- ("rust-lalrpop-util" ,rust-lalrpop-util-0.17))
- #:cargo-development-inputs
- (("rust-lazy-static" ,rust-lazy-static-1)
- ("rust-quickcheck" ,rust-quickcheck-0.8)
- ("rust-rand" ,rust-rand-0.6))))
- (home-page "https://sequoia-pgp.org/")
- (synopsis "RFC 2822 name-addr parser")
- (description
- "Currently, this crate only recognizes the RFC 2822 name-addr and
-addr-spec productions, i.e., things of the form:
-
-Name (Comment) <email@@example.org>
-
-and
-
-email@@example.org
-
-Although the above appear simple to parse, RFC 2822's whitespace and comment
-rules are rather complex. This crate implements the whole grammar." )
- (license license:gpl3)))
-
(define-public rust-serde-1
(package
(name "rust-serde")
diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm
index 3db85a9eba..bbab42bff8 100644
--- a/gnu/packages/sequoia.scm
+++ b/gnu/packages/sequoia.scm
@@ -283,6 +283,34 @@ This Guix package is built to use the nettle cryptographic library.")
("rust-sequoia-rfc2822" ,rust-sequoia-rfc2822-0.9)
("rust-time" ,rust-time-0.1))))))
+(define-public rust-sequoia-rfc2822-0.9
+ (package
+ (name "rust-sequoia-rfc2822")
+ (version "0.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "sequoia-rfc2822" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1aj34i6862718m162rqfv69fkmvdw063s6ws7hbp42n73gb08p5c"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:skip-build? #t
+ #:cargo-inputs
+ (("rust-failure" ,rust-failure-0.1)
+ ("rust-lalrpop" ,rust-lalrpop-0.17)
+ ("rust-lalrpop-util" ,rust-lalrpop-util-0.17))))
+ (home-page "https://sequoia-pgp.org/")
+ (synopsis "RFC 2822 name-addr parser")
+ (description "Currently, this crate only recognizes the RFC 2822 name-addr
+and addr-spec productions, i.e., things of the form: @code{Name (Comment)
+<email@@example.org>} and @code{email@@example.org}
+
+Although the above appear simple to parse, RFC 2822's whitespace and comment
+rules are rather complex. This crate implements the whole grammar." )
+ (license license:gpl3)))
+
(define-public sequoia-sq
(package
(name "sequoia-sq")
--
2.30.2
H
H
Hartmut Goebel wrote on 18 Dec 2021 21:49
[PATCH 41/42] gnu: rust-sequoia-openpgp-0.9: Move to (gnu packages sequoia).
(address . guix-patches@gnu.org)
7b5d84faa458368491795524d7dda4c3b428b056.1639859823.git.h.goebel@crazy-compilers.com
* gnu/packages/crates-io.scm (rust-sequoia-openpgp-0.9): Move package to ...
* gnu/packages/sequoia.scm: ... here. Inherit from
rust-sequoia-openpgp-1. [arguments]<skip-build?> add,
<cargo-development-inputs>: Remove.
---
gnu/packages/crates-io.scm | 52 +-------------------------------------
gnu/packages/sequoia.scm | 32 +++++++++++++++++++++++
2 files changed, 33 insertions(+), 51 deletions(-)

Toggle diff (115 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index af194df56b..2fb35277a4 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -73,6 +73,7 @@
#:use-module (gnu packages python)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
+ #:use-module (gnu packages sequoia)
#:use-module (gnu packages serialization)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages ssh)
@@ -46922,57 +46923,6 @@ formats:
fragment of code.")
(license (list license:expat license:asl2.0))))
-(define-public rust-sequoia-openpgp-0.9
- (package
- (name "rust-sequoia-openpgp")
- (version "0.9.0")
- (source
- (origin
- (method url-fetch)
- (uri (crate-uri "sequoia-openpgp" version))
- (file-name
- (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "007h2pi7lcph5jf5bxjydm7hjwjai33yk6dic3cxknki22lxlkfw"))))
- (build-system cargo-build-system)
- (arguments
- `(#:cargo-inputs
- (("rust-base64" ,rust-base64-0.9)
- ("rust-buffered-reader" ,rust-buffered-reader-0.9)
- ("rust-bzip2" ,rust-bzip2-0.3)
- ("rust-failure" ,rust-failure-0.1)
- ("rust-flate2" ,rust-flate2-1)
- ("rust-idna" ,rust-idna-0.1)
- ("rust-lalrpop" ,rust-lalrpop-0.17)
- ("rust-lalrpop-util" ,rust-lalrpop-util-0.17)
- ("rust-lazy-static" ,rust-lazy-static-1)
- ("rust-memsec" ,rust-memsec-0.5)
- ("rust-nettle" ,rust-nettle-5)
- ("rust-quickcheck" ,rust-quickcheck-0.8)
- ("rust-rand" ,rust-rand-0.6)
- ("rust-sequoia-rfc2822" ,rust-sequoia-rfc2822-0.9)
- ("rust-time" ,rust-time-0.1))
- #:cargo-development-inputs
- (("rust-rpassword" ,rust-rpassword-3))))
- (native-inputs
- (list pkg-config))
- (inputs
- (list clang nettle))
- (home-page "https://sequoia-pgp.org/")
- (synopsis "OpenPGP data types and associated machinery")
- (description
- "This crate aims to provide a complete implementation of OpenPGP as
-defined by RFC 4880 as well as some extensions (e.g., RFC 6637, which
-describes ECC cryptography) for OpenPGP. This includes support for unbuffered
-message processing.
-
-A few features that the OpenPGP community considers to be deprecated (e.g.,
-version 3 compatibility) have been left out. We have also updated some
-OpenPGP defaults to avoid foot guns (e.g., we selected modern algorithm
-defaults). If some functionality is missing, please file a bug report.")
- (license license:gpl3)))
-
(define-public rust-sequoia-rfc2822-0.9
(package
(name "rust-sequoia-rfc2822")
diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm
index 16488ca073..3db85a9eba 100644
--- a/gnu/packages/sequoia.scm
+++ b/gnu/packages/sequoia.scm
@@ -251,6 +251,38 @@ defaults).
This Guix package is built to use the nettle cryptographic library.")
(license license:lgpl2.0+)))
+(define-public rust-sequoia-openpgp-0.9
+ (package
+ (inherit rust-sequoia-openpgp-1)
+ (name "rust-sequoia-openpgp")
+ (version "0.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "sequoia-openpgp" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "007h2pi7lcph5jf5bxjydm7hjwjai33yk6dic3cxknki22lxlkfw"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:skip-build? #t
+ #:cargo-inputs
+ (("rust-base64" ,rust-base64-0.9)
+ ("rust-buffered-reader" ,rust-buffered-reader-0.9)
+ ("rust-bzip2" ,rust-bzip2-0.3)
+ ("rust-failure" ,rust-failure-0.1)
+ ("rust-flate2" ,rust-flate2-1)
+ ("rust-idna" ,rust-idna-0.1)
+ ("rust-lalrpop" ,rust-lalrpop-0.17)
+ ("rust-lalrpop-util" ,rust-lalrpop-util-0.17)
+ ("rust-lazy-static" ,rust-lazy-static-1)
+ ("rust-memsec" ,rust-memsec-0.5)
+ ("rust-nettle" ,rust-nettle-5)
+ ("rust-quickcheck" ,rust-quickcheck-0.8)
+ ("rust-rand" ,rust-rand-0.6)
+ ("rust-sequoia-rfc2822" ,rust-sequoia-rfc2822-0.9)
+ ("rust-time" ,rust-time-0.1))))))
+
(define-public sequoia-sq
(package
(name "sequoia-sq")
--
2.30.2
H
H
Hartmut Goebel wrote on 18 Dec 2021 21:49
[PATCH 40/42] gnu: sequoia: Change into a meta-package and update to 1.6.0.
(address . guix-patches@gnu.org)
7a938985ee6d71c3ecdd81b6e5fc494b2642e1d5.1639859823.git.h.goebel@crazy-compilers.com
* gnu/packages/sequoia.scm (sequoia): Update to 1.6.0.
Change into a meta-package for all sequoia related binaries.
[source, native-inputs]: Remove.
[build-system]: Use trivial-build-system.
[inputs]: Replace with list of packages to be merged.
[arguments]: Replace by a trivial build step.
[synopsis, description]: Adopt to being a meta-package.
[license]: Adjust to license change of project.
---
gnu/packages/sequoia.scm | 211 ++++++++-------------------------------
1 file changed, 40 insertions(+), 171 deletions(-)

Toggle diff (245 lines)
diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm
index 811beb823a..16488ca073 100644
--- a/gnu/packages/sequoia.scm
+++ b/gnu/packages/sequoia.scm
@@ -19,12 +19,14 @@
(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 utils)
#:use-module (gnu packages)
+ #:use-module (gnu packages base) ; glibc
#:use-module (gnu packages check) ;; python-pytest
#:use-module (gnu packages crates-io)
#:use-module (gnu packages libffi) ;; python-cffi
@@ -35,8 +37,6 @@
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz) ;; python-setuptools
#:use-module (gnu packages rust)
- #:use-module (gnu packages serialization)
- #:use-module (gnu packages sqlite)
#:use-module (gnu packages tls))
(define-public rust-sequoia-autocrypt-0.23
@@ -469,176 +469,45 @@ even go away.")
(define-public sequoia
(package
(name "sequoia")
- (version "1.1.0")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://gitlab.com/sequoia-pgp/sequoia.git")
- (commit (string-append "openpgp/v" version))))
- (sha256
- (base32 "0knkm0nw1h4ww51vks4jnnp1yc45llfi7j0i70f6vf2bcknnbmci"))
- (file-name (git-file-name name version))))
- (build-system cargo-build-system)
+ (version "1.6.0")
+ (source #f)
+ (build-system trivial-build-system)
(outputs '("out" "python"))
- (native-inputs
- (list clang pkg-config python-pytest python-pytest-runner
- python-wrapper))
(inputs
- (list capnproto
- gmp
- nettle
- openssl
- python
- python-cffi
- sqlite))
+ `(("glibc" ,glibc) ;; for ldconfig in make-dynamic-linker-cache
+ ("libsequoia" ,libsequoia)
+ ("libsequoia:python" ,libsequoia "python")
+ ("sequoia-sq" ,sequoia-sq)
+ ("sequoia-sqv" ,sequoia-sqv)))
(arguments
- `(#:tests? #f ;; building the tests requires 9.7GB total
- #:rust ,rust
- #:cargo-inputs
- (("rust-anyhow" ,rust-anyhow-1)
- ("rust-backtrace" ,rust-backtrace-0.3)
- ("rust-base64" ,rust-base64-0.13)
- ;;("rust-buffered-reader" included
- ("rust-bzip2" ,rust-bzip2-0.4)
- ("rust-capnp" ,rust-capnp-0.13)
- ("rust-capnp-rpc" ,rust-capnp-rpc-0.13)
- ("rust-capnpc" ,rust-capnpc-0.13)
- ("rust-chrono" ,rust-chrono-0.4) ;; for sqv, sop
- ("rust-clap" ,rust-clap-2) ;; for sqv
- ("rust-colored" ,rust-colored-1.9.1)
- ("rust-crossterm" ,rust-crossterm-0.13)
- ("rust-ctor" ,rust-ctor-0.1)
- ("rust-dirs" ,rust-dirs-2)
- ("rust-dyn-clone" ,rust-dyn-clone-1)
- ("rust-ed25519-dalek" ,rust-ed25519-dalek-1)
- ("rust-eax" ,rust-eax-0.3)
- ;;("rust-failure" included
- ("rust-filetime" ,rust-filetime-0.2)
- ("rust-flate2" ,rust-flate2-1)
- ("rust-fs2" ,rust-fs2-0.4)
- ("rust-futures" ,rust-futures-0.3)
- ("rust-futures-util" ,rust-futures-util-0.3)
- ("rust-http" ,rust-http-0.2)
- ("rust-hyper" ,rust-hyper-0.13)
- ("rust-hyper-tls" ,rust-hyper-tls-0.4)
- ("rust-idna" ,rust-idna-0.2)
- ("rust-itertools" ,rust-itertools-0.9) ;; for sq
- ("rust-lalrpop" ,rust-lalrpop-0.19)
- ("rust-lalrpop-util" ,rust-lalrpop-util-0.19)
- ("rust-lazy-static" ,rust-lazy-static-1)
- ("rust-libc" ,rust-libc-0.2)
- ("rust-memsec" ,rust-memsec-0.6)
- ("rust-native-tls" ,rust-native-tls-0.2)
- ("rust-nettle" ,rust-nettle-7)
- ("rust-num-bigint-dig" ,rust-num-bigint-dig-0.6)
- ("rust-parity-tokio-ipc" ,rust-parity-tokio-ipc-0.4)
- ("rust-percent-encoding" ,rust-percent-encoding-2)
- ("rust-prettytable-rs" ,rust-prettytable-rs-0.8) ;; for sq
- ("rust-proc-macro2" ,rust-proc-macro2-1)
- ("rust-quickcheck" ,rust-quickcheck-0.9)
- ("rust-rand" ,rust-rand-0.7)
- ("rust-regex" ,rust-regex-1)
- ("rust-rusqlite" ,rust-rusqlite-0.24)
- ("rust-sha1collisiondetection" ,rust-sha1collisiondetection-0.2)
- ("rust-socket2", rust-socket2-0.3)
- ("rust-structopt" ,rust-structopt-0.3) ;; for sop
- ("rust-tempfile" ,rust-tempfile-3) ;; for sq
- ("rust-thiserror" ,rust-thiserror-1)
- ("rust-tokio" ,rust-tokio-0.2)
- ("rust-tokio-core" ,rust-tokio-core-0.1)
- ("rust-unicode-normalization" ,rust-unicode-normalization-0.1)
- ("rust-url" ,rust-url-2)
- ("rust-win-crypto-ng" ,rust-win-crypto-ng-0.4)
- ("rust-winapi" ,rust-winapi-0.3)
- ("rust-zbase32" ,rust-zbase32-0.1))
- #:cargo-development-inputs
- (("rust-assert-cli" ,rust-assert-cli-0.6) ;; dev-dep for for sq, sqv
- ("rust-bindgen" ,rust-bindgen-0.51) ;; FIXME for nettle-sys and rusqlite
- ;;("rust-lalrpop" ,rust-lalrpop-0.19)
- ("rust-quickcheck" ,rust-quickcheck-0.9)
- ("rust-rand" ,rust-rand-0.7)
- ("rust-rpassword" ,rust-rpassword-5))
- #:phases
- (modify-phases %standard-phases
- ;; Run make instead of using the rust build system, as
- ;; suggested by the installation instructions
- (replace 'build (lambda _ (invoke "make" "build-release") #t))
- (delete 'package) ;; cargo can't package a multi-crate workspace
- (replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
- (if tests?
- (invoke "make" "check")
- #t)))
- (replace 'install (lambda _ (invoke "make" "install") #t))
- (add-after 'unpack 'fix-rand-dependency
- (lambda _
- (substitute* "ipc/Cargo.toml"
- ;; required: enable rand::rngs::OsRng in rand >= 0.8
- (("(^rand =.*,) default-features = false(.*)" _ a b)
- (string-append a " features = [\"getrandom\"]" b)))
- #t))
- (add-after 'unpack 'fix-permissions
- (lambda _
- (chmod "sq/src/sq-usage.rs" #o644)
- (chmod "sqv/src/sqv-usage.rs" #o644)
- #t))
- (add-after 'unpack 'fix-environment
- (lambda* (#:key outputs #:allow-other-keys)
- ;; adjust prefix
- (setenv "PREFIX" (assoc-ref outputs "out"))
- ;; fix install script detection
- (setenv "INSTALL" "install")
- #t))
- (add-after 'unpack 'fix-fo-python-output
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (pyout (assoc-ref outputs "python")))
- (substitute* "ffi/lang/python/Makefile"
- ;; adjust prefix for python package
- (("PREFIX\\s*\\??=.*")
- (string-append "PREFIX = " pyout "\n"))
- ;; fix rpath to include the main package
- (("\\WLDFLAGS=" text)
- (string-append text "'-Wl,-rpath=" out "/lib '"))
- ;; make setuptools install into the prefix, see
- ;; guix/build/python-build-system.scm for explanation
- (("\\ssetup.py\\s+install\\s")
- " setup.py install --root=/ --single-version-externally-managed "))
- #t)))
- (add-after 'unpack 'fix-pkgconfig-file-substitutes
- ;; preempt Makefiles replacing PREFIX by pwd
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (substitute* "ffi/sequoia.pc.in"
- (("PREFIX") out))
- (substitute* "openpgp-ffi/sequoia-openpgp.pc.in"
- (("PREFIX") out))
- #t)))
- (add-after 'unpack 'keep-SOURCE_DATE_EPOCH
- (lambda _
- ;; preempt Makefiles replacing SOURCE_DATE_EPOCH
- (substitute* "Makefile"
- (("SOURCE_DATE_EPOCH\\s=" line)
- (string-append "#" line)))
- #t))
- (add-after 'unpack 'set-missing-env-vars
- (lambda* (#:key inputs #:allow-other-keys)
- ;; FIXME: why do we need to set this here?
- (setenv "LIBCLANG_PATH"
- (string-append (assoc-ref inputs "clang") "/lib"))
- #t))
- (add-after 'unpack 'unpin-deps
- (lambda _
- ;; As the comment in that file explains, upstream encourages
- ;; unpinning, as the pinned version is only to make sure the crate
- ;; compiles on older versions of rustc
- (substitute* '("openpgp/Cargo.toml" "sq/Cargo.toml")
- (("= \"=") "= \""))
- #t)))))
+ `(#:modules ((guix build utils) (guix build gnu-build-system)
+ (guix build gremlin) (guix elf))
+ #:builder
+ (begin
+ (use-modules (guix build utils) (guix build gnu-build-system))
+ (let ((make-dynamic-linker-cache
+ (assoc-ref %standard-phases 'make-dynamic-linker-cache))
+ (ld.so.cache
+ (string-append (assoc-ref %outputs "out") "/etc/ld.so.cache")))
+ (copy-recursively (assoc-ref %build-inputs "libsequoia")
+ (assoc-ref %outputs "out"))
+ (copy-recursively (assoc-ref %build-inputs "sequoia-sq")
+ (assoc-ref %outputs "out"))
+ (delete-file ld.so.cache)
+ (copy-recursively (assoc-ref %build-inputs "sequoia-sqv")
+ (assoc-ref %outputs "out"))
+ (delete-file ld.so.cache)
+ (copy-recursively (assoc-ref %build-inputs "libsequoia:python")
+ (assoc-ref %outputs "python"))
+ (setenv "PATH"
+ (string-append (getenv "PATH") ":"
+ (assoc-ref %build-inputs "glibc") "/sbin"))
+ (make-dynamic-linker-cache #:outputs %outputs)
+ #t))))
(home-page "https://sequoia-pgp.org")
- (synopsis "New OpenPGP implementation")
- (description "Sequoia is a new OpenPGP implementation. It consists of
-several crates, providing both a low-level and a high-level API for dealing
-with OpenPGP data.")
- (license license:gpl2+)))
+ (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+)))
--
2.30.2
H
H
Hartmut Goebel wrote on 18 Dec 2021 21:49
[PATCH 39/42] gnu: Add libsequoia.
(address . guix-patches@gnu.org)
15bedd1793dc1262db443a37a46f776344491474.1639859823.git.h.goebel@crazy-compilers.com
* gnu/packages/sequoia.scm (sequoia-package-origin): New variable.
(libsequoia): New variable.
* gnu/packages/patches/sequoia-fix-ffi-Makefile.patch,
gnu/packages/patches/sequoia-remove-store.patch New files.
* gnu/local.mk (dist_patch_DATA): Add them.
---
gnu/local.mk | 2 +
.../patches/libsequoia-fix-ffi-Makefile.patch | 32 ++
.../patches/libsequoia-remove-store.patch | 432 ++++++++++++++++++
gnu/packages/sequoia.scm | 120 +++++
4 files changed, 586 insertions(+)
create mode 100644 gnu/packages/patches/libsequoia-fix-ffi-Makefile.patch
create mode 100644 gnu/packages/patches/libsequoia-remove-store.patch

Toggle diff (551 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index 33e108c752..598a85f512 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1785,6 +1785,8 @@ dist_patch_DATA = \
%D%/packages/patches/sendgmail-accept-ignored-gsuite-flag.patch \
%D%/packages/patches/sendgmail-remove-domain-restriction.patch \
%D%/packages/patches/seq24-rename-mutex.patch \
+ %D%/packages/patches/libsequoia-fix-ffi-Makefile.patch \
+ %D%/packages/patches/libsequoia-remove-store.patch \
%D%/packages/patches/serf-python3.patch \
%D%/packages/patches/shakespeare-spl-fix-grammar.patch \
%D%/packages/patches/sharutils-CVE-2018-1000097.patch \
diff --git a/gnu/packages/patches/libsequoia-fix-ffi-Makefile.patch b/gnu/packages/patches/libsequoia-fix-ffi-Makefile.patch
new file mode 100644
index 0000000000..21f5a1e4df
--- /dev/null
+++ b/gnu/packages/patches/libsequoia-fix-ffi-Makefile.patch
@@ -0,0 +1,32 @@
+From ed641d2048d131e077f54043764741b7e7b7fe03 Mon Sep 17 00:00:00 2001
+From: Hartmut Goebel <hartmut.goebel@pep.security>
+Date: Tue, 7 Dec 2021 16:42:43 +0100
+Subject: [PATCH] ffi: Update Makefile, remove rule remaining from store
+ removal.
+
+---
+ ffi/Makefile | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/ffi/Makefile b/ffi/Makefile
+index a5540db3..07328589 100644
+--- a/ffi/Makefile
++++ b/ffi/Makefile
+@@ -62,7 +62,6 @@ build-release:
+ $(CARGO) build $(CARGO_FLAGS) --release --package sequoia-ffi
+ $(MAKE) -Clang/python build-release
+ $(call sequoia_pc,$(CARGO_TARGET_DIR)/release,true)
+- $(MAKE) -C../store build-release
+
+ .PHONY: install
+ install: build-release
+@@ -82,7 +82,6 @@ install: build-release
+ $(DESTDIR)$(PREFIX)/lib/libsequoia_ffi.$(_SEQ_LIB_EXT)
+ $(INSTALL) $(CARGO_TARGET_DIR)/release/libsequoia_ffi.a \
+ $(DESTDIR)$(PREFIX)/lib/libsequoia_ffi.a
+- $(MAKE) -C../store install
+ # Now the bindings.
+ $(MAKE) -Clang/python install
+
+--
+
diff --git a/gnu/packages/patches/libsequoia-remove-store.patch b/gnu/packages/patches/libsequoia-remove-store.patch
new file mode 100644
index 0000000000..e7e1a91ee3
--- /dev/null
+++ b/gnu/packages/patches/libsequoia-remove-store.patch
@@ -0,0 +1,432 @@
+Shortend version of
+From 351ad5e5e2dd67f427b7eb2e4d5d0b35d90ffaf7 Mon Sep 17 00:00:00 2001
+From: Justus Winter <justus@sequoia-pgp.org>
+Date: Wed, 24 Nov 2021 15:09:34 +0100
+Subject: [PATCH] store: Drop crate.
+
+ - The store has never been really used, and never reached a maturity
+ where it was useful. And, we're on the verge of replacing it with
+ the Shared PGP Certificate Directory.
+---
+ Cargo.toml | 1 -
+ ffi/Cargo.toml | 4 +-
+ ffi/include/sequoia.h | 1 -
+ ffi/include/sequoia/store.h | 409 ------
+ ffi/lang/python/sequoia/__init__.py | 1 -
+ ffi/lang/python/sequoia/prelude.py | 1 -
+ ffi/lang/python/sequoia/sequoia_build.py | 3 +-
+ ffi/lang/python/sequoia/store.py | 246 ----
+ ffi/lang/python/tests/test_store.py | 47 -
+ ffi/src/lib.rs | 2 -
+ ffi/src/store.rs | 659 ----------
+ 25 files changed, 3 insertions(+), 5064 deletions(-)
+ delete mode 100644 ffi/include/sequoia/store.h
+ delete mode 100644 ffi/lang/python/sequoia/store.py
+ delete mode 100644 ffi/lang/python/tests/test_store.py
+ delete mode 100644 ffi/src/store.rs
+
+diff --git a/Cargo.toml b/Cargo.toml
+index a4f48520..a573ddbf 100644
+--- a/Cargo.toml
++++ b/Cargo.toml
+@@ -10,7 +10,6 @@ members = [
+ "openpgp",
+ "openpgp-ffi",
+ "sq",
+- "store",
+ ]
+
+ [profile.release]
+diff --git a/ffi/Cargo.toml b/ffi/Cargo.toml
+index 53ddaf68..2ec84e6e 100644
+--- a/ffi/Cargo.toml
++++ b/ffi/Cargo.toml
+@@ -24,7 +24,6 @@ maintenance = { status = "actively-developed" }
+ [dependencies]
+ sequoia-ffi-macros = { path = "../ffi-macros", version = "0.22" }
+ sequoia-openpgp = { path = "../openpgp", version = "1.0.0", default-features = false }
+-sequoia-store = { path = "../store", version = "0.22", default-features = false }
+ sequoia-net = { path = "../net", version = "0.23", default-features = false }
+ sequoia-ipc = { path = "../ipc", version = "0.26", default-features = false }
+ anyhow = "1.0.18"
+@@ -42,10 +41,9 @@ crate-type = ["cdylib", "staticlib"]
+ bench = false
+
+ [features]
+-default = ["sequoia-openpgp/default", "sequoia-store/default"]
++default = ["sequoia-openpgp/default"]
+ crypto-nettle = ["sequoia-openpgp/crypto-nettle"]
+ crypto-cng = ["sequoia-openpgp/crypto-cng"]
+ compression = ["sequoia-openpgp/compression"]
+ compression-deflate = ["sequoia-openpgp/compression-deflate"]
+ compression-bzip2 = ["sequoia-openpgp/compression-bzip2"]
+-background-services = ["sequoia-store/background-services"]
+diff --git a/ffi/include/sequoia.h b/ffi/include/sequoia.h
+index 8c62ba8f..c32a2f3e 100644
+--- a/ffi/include/sequoia.h
++++ b/ffi/include/sequoia.h
+@@ -5,6 +5,5 @@
+ #include <sequoia/core.h>
+ #include <sequoia/openpgp.h>
+ #include <sequoia/net.h>
+-#include <sequoia/store.h>
+
+ #endif
+diff --git a/ffi/lang/python/sequoia/__init__.py b/ffi/lang/python/sequoia/__init__.py
+index 4f84346e..fc170e20 100644
+--- a/ffi/lang/python/sequoia/__init__.py
++++ b/ffi/lang/python/sequoia/__init__.py
+@@ -4,5 +4,4 @@ from . import (
+ openpgp,
+ core,
+ net,
+- store,
+ )
+diff --git a/ffi/lang/python/sequoia/prelude.py b/ffi/lang/python/sequoia/prelude.py
+index 42b0156a..61efbab0 100644
+--- a/ffi/lang/python/sequoia/prelude.py
++++ b/ffi/lang/python/sequoia/prelude.py
+@@ -3,4 +3,3 @@ from .error import *
+ from .openpgp import *
+ from .core import *
+ from .net import *
+-from .store import *
+diff --git a/ffi/lang/python/sequoia/sequoia_build.py b/ffi/lang/python/sequoia/sequoia_build.py
+index a3ce2786..058f1380 100644
+--- a/ffi/lang/python/sequoia/sequoia_build.py
++++ b/ffi/lang/python/sequoia/sequoia_build.py
+@@ -14,8 +14,7 @@ defs = "".join(l
+ open(join(pgp_inc, "openpgp/serialize.h")).readlines(),
+ open(join(pgp_inc, "openpgp.h")).readlines(),
+ open(join(sq_inc, "core.h")).readlines(),
+- open(join(sq_inc, "net.h")).readlines(),
+- open(join(sq_inc, "store.h")).readlines())
++ open(join(sq_inc, "net.h")).readlines())
+ if not l.startswith('#'))
+
+ defs = defs.replace("INT_MAX", "{}".format(1<<31))
+diff --git a/ffi/lang/python/sequoia/store.py b/ffi/lang/python/sequoia/store.py
+deleted file mode 100644
+index 57d1b18f..00000000
+--- a/ffi/lang/python/sequoia/store.py
++++ /dev/null
+@@ -1,246 +0,0 @@
+-from _sequoia import ffi, lib
+-
+-from .error import Error
+-from .glue import _str, _static_str, SQObject, sq_iterator, sq_time
+-from .net import NetworkPolicy
+-from .openpgp import Fingerprint, Cert
+-
+-class Store(object):
+- @classmethod
+- def log(cls, ctx):
+- yield from sq_iterator(
+- ffi.gc(
+- lib.sq_store_server_log(ctx.ref()),
+- lib.sq_log_iter_free),
+- lib.sq_log_iter_next,
+- lambda x: Log(x, context=ctx))
+-
+- @classmethod
+- def list_keys(cls, ctx):
+- def next_fn(i):
+- fpp = ffi.new("pgp_fingerprint_t[1]")
+- key = lib.sq_key_iter_next(i, fpp)
+- if key == ffi.NULL:
+- return ffi.NULL
+- else:
+- return (Fingerprint(fpp[0], ctx),
+- Key(key, ctx))
+-
+- yield from sq_iterator(
+- ffi.gc(
+- lib.sq_store_list_keys(ctx.ref()),
+- lib.sq_key_iter_free),
+- next_fn)
+-
+-class Mapping(SQObject):
+- _del = lib.sq_mapping_free
+-
+- # Keys used for communications.
+- REALM_CONTACTS = _static_str(lib.SQ_REALM_CONTACTS)
+-
+- # Keys used for signing software updates.
+- REALM_SOFTWARE_UPDATES = _static_str(lib.SQ_REALM_SOFTWARE_UPDATES)
+-
+- @classmethod
+- def open(cls, ctx, network_policy=NetworkPolicy.Encrypted, realm=REALM_CONTACTS, name="default"):
+- return Mapping(lib.sq_mapping_open(ctx.ref(), network_policy.value,
+- realm.encode(), name.encode()),
+- context=ctx)
+-
+-
+- def add(self, label, fingerprint):
+- return Binding(lib.sq_mapping_add(self.context().ref(), self.ref(),
+- label.encode(), fingerprint.ref()),
+- context=self.context())
+-
+- def import_(self, label, cert):
+- return Cert(lib.sq_mapping_import(self.context().ref(), self.ref(),
+- label.encode(), cert.ref()),
+- context=self.context())
+-
+- def lookup(self, label):
+- return Binding(lib.sq_mapping_lookup(self.context().ref(), self.ref(),
+- label.encode()),
+- self.context())
+-
+- def delete(self):
+- if lib.sq_mapping_delete(self.ref()):
+- raise Error._last(self.context())
+- super(Mapping, self)._delete(skip_free=True)
+-
+- def iter(self):
+- def next_fn(i):
+- labelp = ffi.new("char *[1]")
+- fpp = ffi.new("pgp_fingerprint_t[1]")
+- binding = lib.sq_binding_iter_next(i, labelp, fpp)
+- if binding == ffi.NULL:
+- return ffi.NULL
+- else:
+- return (_str(labelp[0]),
+- Fingerprint(fpp[0], self.context()),
+- Binding(binding, self.context()))
+-
+- yield from sq_iterator(
+- ffi.gc(
+- lib.sq_mapping_iter(self.context().ref(), self.ref()),
+- lib.sq_binding_iter_free),
+- next_fn)
+-
+- def log(self):
+- yield from sq_iterator(
+- ffi.gc(
+- lib.sq_mapping_log(self.context().ref(), self.ref()),
+- lib.sq_log_iter_free),
+- lib.sq_log_iter_next,
+- lambda x: Log(x, context=self.context()))
+-
+-class Binding(SQObject):
+- _del = lib.sq_binding_free
+-
+- def stats(self):
+- return Stats(lib.sq_binding_stats(self.context().ref(), self.ref()),
+- self.context())
+-
+- def key(self):
+- return Key(lib.sq_binding_key(self.context().ref(), self.ref()),
+- self.context())
+-
+- def cert(self):
+- return Cert(lib.sq_binding_cert(self.context().ref(), self.ref()),
+- self.context())
+-
+- def import_(self, cert):
+- return Cert(lib.sq_binding_import(self.context().ref(), self.ref(), cert),
+- self.context())
+-
+- def rotate(self, cert):
+- return Cert(lib.sq_binding_rotate(self.context().ref(), self.ref(), cert),
+- self.context())
+-
+- def delete(self):
+- if lib.sq_binding_delete(self.ref()):
+- raise Error._last(self.context())
+- super(Binding, self)._delete(skip_free=True)
+-
+- def log(self):
+- yield from sq_iterator(
+- ffi.gc(
+- lib.sq_binding_log(self.context().ref(), self.ref()),
+- lib.sq_log_iter_free),
+- lib.sq_log_iter_next,
+- lambda x: Log(x, context=self.context()))
+-
+-class Key(SQObject):
+- _del = lib.sq_key_free
+-
+- def stats(self):
+- return Stats(lib.sq_key_stats(self.context().ref(), self.ref()),
+- self.context())
+-
+- def cert(self):
+- return Cert(lib.sq_key_cert(self.context().ref(), self.ref()),
+- self.context())
+-
+- def import_(self, cert):
+- return Cert(lib.sq_key_import(self.context().ref(), self.ref(), cert),
+- self.context())
+-
+- def log(self):
+- yield from sq_iterator(
+- ffi.gc(
+- lib.sq_key_log(self.context().ref(), self.ref()),
+- lib.sq_log_iter_free),
+- lib.sq_log_iter_next)
+-
+-
+-class Stats(SQObject):
+- _del = lib.sq_stats_free
+- def __init__(self, o, context=None):
+- super(Stats, self).__init__(o, context=context)
+- self.encryption = Stamps(ffi.addressof(o, "encryption"))
+- self.verification = Stamps(ffi.addressof(o, "verification"))
+-
+- @property
+- def created(self):
+- return sq_time(self.ref().created)
+-
+- @property
+- def updated(self):
+- return sq_time(self.ref().updated)
+-
+- def __str__(self):
+- return \
+- "Stats{{created={}, updated={}, encryption={}, verification={}}}" \
+- .format(self.created, self.updated, self.encryption,
+- self.verification)
+-
+-class Stamps(SQObject):
+- @property
+- def count(self):
+- return self.ref().count
+-
+- @property
+- def first(self):
+- return sq_time(self.ref().first)
+-
+- @property
+- def last(self):
+- return sq_time(self.ref().last)
+-
+- def __str__(self):
+- return "Stamps{{count={}, first={}, last={}}}".format(
+- self.count, self.first, self.last)
+-
+-class Log(SQObject):
+- _del = lib.sq_log_free
+-
+- @property
+- def timestamp(self):
+- return sq_time(self.ref().timestamp)
+-
+- @property
+- def store(self):
+- if self.ref().store == ffi.NULL:
+- return None
+- else:
+- return Store(self.ref().store, context=self.context(),
+- owner=self)
+-
+- @property
+- def binding(self):
+- if self.ref().binding == ffi.NULL:
+- return None
+- else:
+- return Binding(self.ref().binding, context=self.context(),
+- owner=self)
+-
+- @property
+- def key(self):
+- if self.ref().key == ffi.NULL:
+- return None
+- else:
+- return Key(self.ref().key, context=self.context(),
+- owner=self)
+-
+- @property
+- def slug(self):
+- return ffi.string(self.ref().slug).decode()
+-
+- @property
+- def status(self):
+- return ffi.string(self.ref().status).decode()
+-
+- @property
+- def error(self):
+- if self.ref().error == ffi.NULL:
+- return None
+- else:
+- return ffi.string(self.ref().error).decode()
+-
+- def __str__(self):
+- if self.error:
+- return "{}: {}: {}: {}".format(
+- self.timestamp, self.slug, self.status, self.error)
+- else:
+- return "{}: {}: {}".format(
+- self.timestamp, self.slug, self.status)
+diff --git a/ffi/lang/python/tests/test_store.py b/ffi/lang/python/tests/test_store.py
+deleted file mode 100644
+index 7b06cc1a..00000000
+--- a/ffi/lang/python/tests/test_store.py
++++ /dev/null
+@@ -1,47 +0,0 @@
+-from sequoia.prelude import Context, Store, Mapping, Fingerprint
+-
+-def test_open():
+- c = Context(ephemeral=True)
+- Mapping.open(c)
+-
+-def test_add():
+- c = Context(ephemeral=True)
+- s = Mapping.open(c)
+- fp = Fingerprint.from_hex("7DCA58B54EB143169DDEE15F247F6DABC84914FE")
+- s.add("?ριστοτ?λης", fp)
+-
+-def test_iterate():
+- c = Context(ephemeral=True)
+- s = Mapping.open(c)
+- fp = Fingerprint.from_hex("7DCA58B54EB143169DDEE15F247F6DABC84914FE")
+- s.add("?ριστοτ?λης", fp)
+- l = list(s.iter())
+- assert len(l) == 1
+- l = list(Store.list_keys(c))
+- assert len(l) == 1
+- fpi, key = l[0]
+- assert fpi == fp
+-
+-def test_logs():
+- c = Context(ephemeral=True)
+- s = Mapping.open(c)
+- fp = Fingerprint.from_hex("7DCA58B54EB143169DDEE15F247F6DABC84914FE")
+- b = s.add("?ριστοτ?λης", fp)
+- l = list(s.iter())
+- assert len(l) == 1
+-
+- # global logs
+- logs = list(Store.log(c))
+- assert len(logs) > 0
+-
+- # per store logs
+- logs = list(s.log())
+- assert len(logs) > 0
+-
+- # per binding logs
+- logs = list(b.log())
+- assert len(logs) > 0
+-
+- # per key logs
+- logs = list(b.key().log())
+- assert len(logs) > 0
+diff --git a/ffi/src/lib.rs b/ffi/src/lib.rs
+index 40e3672e..9b4577eb 100644
+--- a/ffi/src/lib.rs
++++ b/ffi/src/lib.rs
+@@ -130,7 +130,6 @@ pub(crate) use crate::openpgp::{
+ MoveResultIntoRaw,
+ Maybe,
+ maybe_time,
+- to_time_t,
+ };
+
+ /* Error handling with implicit context. */
+@@ -146,5 +145,4 @@ macro_rules! ffi_make_fry_from_ctx {
+ pub mod core;
+ pub mod error;
+ pub mod net;
+-pub mod store;
+
+GitLab
+
diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm
index 70ac2e89cd..811beb823a 100644
--- a/gnu/packages/sequoia.scm
+++ b/gnu/packages/sequoia.scm
@@ -346,6 +346,126 @@ constraints on the signature into account.
This Guix package is built to use the nettle cryptographic library.")
(license license:lgpl2.0+)))
+(define (sequoia-package-origin version)
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://gitlab.com/sequoia-pgp/sequoia.git")
+ (commit (string-append "openpgp/v" version))))
+ (sha256
+ (base32 "1cq1xgvllbpii5hfl3wlia2ayznpvhv8lq8g8ygwxga86ijg98lq"))
+ (file-name (git-file-name "sequoia" version))
+ (patches (search-patches "libsequoia-remove-store.patch"
+ "libsequoia-fix-ffi-Makefile.patch"))))
+
+(define-public libsequoia
+ (package
+ (name "libsequoia")
+ (version "0.22.0")
+ (source (sequoia-package-origin "1.6.0"))
+ (build-system cargo-build-system)
+ (outputs '("out" "python"))
+ (native-inputs
+ (list clang pkg-config python-pytest python-pytest-runner
+ python-wrapper))
+ (inputs
+ (list gmp nettle openssl python python-cffi))
+ (arguments
+ `(#:tests? #f ;; TODO make python tests find the shared object file
+ #:cargo-inputs
+ (("rust-anyhow" ,rust-anyhow-1)
+ ("rust-lazy-static" ,rust-lazy-static-1)
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-memsec" ,rust-memsec-0.6)
+ ("rust-native-tls" ,rust-native-tls-0.2)
+ ("rust-proc-macro2" ,rust-proc-macro2-1) ;; for ffi-macros
+ ("rust-quote" ,rust-quote-1) ;; for ffi-macros
+ ("rust-sequoia-ipc" ,rust-sequoia-ipc-0.26)
+ ("rust-sequoia-net" ,rust-sequoia-net-0.23)
+ ("rust-sequoia-openpgp" ,rust-sequoia-openpgp-1)
+ ("rust-sha2" ,rust-sha2-0.8) ;; for ffi-macros
+ ("rust-tokio" ,rust-tokio-1.8))
+ #:cargo-development-inputs
+ (("rust-filetime" ,rust-filetime-0.2))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'configure 'set-PREFIX
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "PREFIX" out)
+ #t)))
+ (replace 'build
+ (lambda _
+ (invoke "make" "-C" "openpgp-ffi" "build-release")
+ (invoke "make" "-C" "ffi" "build-release")))
+ (delete 'package) ;; cargo can't package a multi-crate workspace
+ (replace 'ch
This message was truncated. Download the full message here.
M
M
Mathieu Othacehe wrote on 19 Dec 2021 16:18
control message for bug #52610
(address . control@debbugs.gnu.org)
87o85cei7q.fsf@meije.i-did-not-set--mail-host-address--so-tickle-me
merge 52610 52610
quit
Z
Z
zimoun wrote on 21 Dec 2021 09:10
control message for bug #52609
(address . control@debbugs.gnu.org)
86czlqs7i9.fsf@gmail.com
merge 52609 52610
quit
Z
Z
zimoun wrote on 21 Dec 2021 09:11
control merge #52610
(address . control@debbugs.gnu.org)
868rwes7g9.fsf@gmail.com
merge 52610 52611
merge 52610 52612
merge 52610 52613
merge 52610 52614
merge 52610 52615
merge 52610 52616
merge 52610 52617
merge 52610 52618
merge 52610 52619
merge 52610 52620
merge 52610 52621
merge 52610 52622
merge 52610 52623
merge 52610 52624
merge 52610 52625
merge 52610 52626
merge 52610 52627
merge 52610 52628
merge 52610 52629
merge 52610 52630
merge 52610 52631
merge 52610 52632
merge 52610 52633
merge 52610 52634
merge 52610 52635
merge 52610 52636
merge 52610 52637
merge 52610 52638
merge 52610 52639
merge 52610 52640
merge 52610 52641
merge 52610 52642
merge 52610 52643
merge 52610 52644
quit
N
N
Nicolas Goaziou wrote on 30 Dec 2021 01:27
Re: [bug#52610] [PATCH 00/42] Revising sequoia packaging and update to 1.6
(name . Hartmut Goebel)(address . h.goebel@crazy-compilers.com)(address . 52610@debbugs.gnu.org)
87r19v6iow.fsf@nicolasgoaziou.fr
Hello

Hartmut Goebel <h.goebel@crazy-compilers.com> writes:

Toggle quote (18 lines)
> This implements the following changes I announced some weeks ago, see
> <https://lists.gnu.org/archive/html/guix-devel/2021-11/msg00221.html>.
> It also updates each sequoia package to its current version.
>
> * Move all sequoia related crates in to sequoia.scm. As of now these are only
> rust-sequoia-openpgp-0.9, rust-sequoia-rfc2822-0.9 and there is only on
> package depending on them rust-libpijul-0.12
>
> * bufferedreader, rust-nettle and other crates from the sequoia project but
> not having "sequoia" (or such) in the name would be kept in crates-io.scm
>
> * In sequoia.scm there would be all sequoia crates, with the app packages
> named without "rust-" prefix ("sequoia-sq", …)
>
> * The current "sequoia" package will become a "wrapper", just propagating (or
> copying, what ever is more common in guix) the other packages which have an
> actual output.

Nice.

Note that some patches are not necessary anymore (e.g., updating
rust-criterion-0.3).

Also, please remove trailing #t in packages definitions (snippets and
phases) and make sequoia use new package style (e.g., $#sequoia-sqv
instead of (assoc-ref %build-inputs "sequoia-sqv") and $#output instead
of (assoc-ref %outputs "out")).

Otherwise, LGTM.

Regards,
--
Nicolas Goaziou
H
H
Hartmut Goebel wrote on 30 Dec 2021 21:41
(name . Nicolas Goaziou)(address . mail@nicolasgoaziou.fr)(address . 52610@debbugs.gnu.org)
cfafa091-199b-ba84-fd25-1512a1cee5df@crazy-compilers.com
Updated and pushed as bf7ed7c9f2083e5bf81fffa41e2e7213817d5acd.
Thanks for the review

It took me quite some time to figure out how toe use the new gexp/ungexp
since documentation and examples are rare. So now we have an example how
to use gexp and cargo-inputs :-)
--

Regards
Hartmut Goebel

| Hartmut Goebel | h.goebel@crazy-compilers.com |
| www.crazy-compilers.com | compilers which you thought are impossible |
H
H
Hartmut Goebel wrote on 30 Dec 2021 21:42
(address . 52610-close@debbugs.gnu.org)
d0a03e63-1efc-ede1-ad1a-a9b75cfbe883@crazy-compilers.com

?