GNU bug report logs - #52610
[PATCH 00/42] Revising sequoia packaging and update to 1.6

Previous Next

Package: guix-patches;

Reported by: Hartmut Goebel <h.goebel <at> crazy-compilers.com>

Date: Sat, 18 Dec 2021 20:51:03 UTC

Severity: normal

Tags: patch

Merged with 52609, 52611, 52612, 52613, 52614, 52615, 52616, 52617, 52618, 52619, 52620, 52621, 52622, 52623, 52624, 52625, 52626, 52627, 52628, 52629, 52630, 52631, 52632, 52633, 52634, 52635, 52636, 52637, 52638, 52639, 52640, 52641, 52642, 52643, 52644, 52645

Done: Hartmut Goebel <h.goebel <at> crazy-compilers.com>

Bug is archived. No further changes may be made.

Full log


Message #20 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Hartmut Goebel <h.goebel <at> crazy-compilers.com>
To: guix-patches <at> gnu.org
Subject: [PATCH 40/42] gnu: sequoia: Change into a meta-package and update to
 1.6.0.
Date: Sat, 18 Dec 2021 21:49:51 +0100
* 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(-)

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





This bug report was last modified 3 years and 139 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.