Subject: Re: bug#47274: Linphone Packages

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 23 Mar 2021 22:25:35 -0400

Hi!

Raghav Gururajan <[email-masked]> writes:

> * gnu/packages/crypto.scm (libdecaf): New variable.
> ---
>  gnu/packages/crypto.scm | 63 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 63 insertions(+)
>
> diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
> index 0000e7fbf2..3959464d56 100644
> --- a/gnu/packages/crypto.scm
> +++ b/gnu/packages/crypto.scm
> @@ -47,9 +47,11 @@
>    #:use-module (gnu packages compression)
>    #:use-module (gnu packages crates-io)
>    #:use-module (gnu packages cryptsetup)
> +  #:use-module (gnu packages documentation)
>    #:use-module (gnu packages gettext)
>    #:use-module (gnu packages gnupg)
>    #:use-module (gnu packages golang)
> +  #:use-module (gnu packages graphviz)
>    #:use-module (gnu packages image)
>    #:use-module (gnu packages kerberos)
>    #:use-module (gnu packages libbsd)
> @@ -88,6 +90,67 @@
>    #:use-module (srfi srfi-1)
>    #:use-module (srfi srfi-26))
>  
> +(define-public libdecaf
> +  (package
> +    (name "libdecaf")
> +    (version "1.0.1")
> +    (source (origin
> +              (method git-fetch)
> +              (uri (git-reference
> +                    (url "git://git.code.sf.net/p/ed448goldilocks/code")
> +                    (commit
> +                     (string-append "v" version))))
> +              (file-name
> +               (git-file-name name version))
> +              (sha256
> +               (base32 "1ajgmyvc6a4m1h2hg1g4wz7ibx10x1xys9m6ancnmmf1f2srlfly"))))
> +    (build-system cmake-build-system)
> +    (outputs '("out" "python" "doc"))
> +    (arguments
> +     `(#:configure-flags '("-DENABLE_STATIC=OFF")
> +       #:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'patch-python-binding
> +           (lambda _
> +             (substitute* "python/setup.py"
> +               (("gmake")
> +                "make")
> +               (("'\\.\\.', 'build', 'lib', 'libdecaf\\.so'")
> +                "'..', '..', 'build', 'src', 'libdecaf.so'"))
> +             #t))

Ending phases with #t is no longer required on core-updates, and we can
stop doing it on master and staging already too, to save us the hassle
of editing them out at some later point in time :-)

> +         (add-after 'install 'install-python-binding
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (with-directory-excursion "../source/python"
> +               (invoke "python" "setup.py" "install"
> +                       (string-append "--prefix=" (assoc-ref outputs "python"))
> +                       "--root=/"))
> +             #t))
> +         (add-after 'install-python-binding 'install-documentation
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (invoke "make" "doc")
> +             (let* ((doc (assoc-ref outputs "doc"))
> +                    (dest (string-append doc "/share/doc")))
> +               (copy-recursively "doc" dest))
> +             #t)))))
> +    (native-inputs
> +     `(("dot" ,graphviz)
> +       ("doxygen" ,doxygen)
> +       ("python" ,python-wrapper)))
> +    (inputs
> +     `(("python2" ,python-2.7)
> +       ("python3" ,python)))

This inputs field seems unnecessary, especially we don't want to add a
dependency to Python 2, which is slowly being carved out of Guix.

> +    (synopsis "Decaf Elliptic Curve Library")
> +    (description "The libdecaf library is an implementation of elliptic curve
> +cryptography using the Montgomery and Edwards curves Curve25519, Ed25519,
> +Ed448-Goldilocks and Curve448, using the Decaf encoding.")
> +    (home-page "http://ed448goldilocks.sourceforge.net/")
> +    (license
> +     (list
> +      ;; Library.
> +      license:expat
> +      ;; Binding.
> +      license:bsd-2))))

I personally prefer the more compact (and common?) indentation of the
licenses list as:

    (license (list license:expat        ;library
                   license:bsd-2))))    ;python bindings

It's down to personal preferences, but I tend to value compactness in
thousand lines long modules :-).

I've made the following changes:

--8<---------------cut here---------------start------------->8---
1 file changed, 5 insertions(+), 15 deletions(-)
gnu/packages/crypto.scm | 20 +++++---------------

modified   gnu/packages/crypto.scm
@@ -116,40 +116,30 @@
                (("gmake")
                 "make")
                (("'\\.\\.', 'build', 'lib', 'libdecaf\\.so'")
-                "'..', '..', 'build', 'src', 'libdecaf.so'"))
-             #t))
+                "'..', '..', 'build', 'src', 'libdecaf.so'"))))
          (add-after 'install 'install-python-binding
            (lambda* (#:key outputs #:allow-other-keys)
              (with-directory-excursion "../source/python"
                (invoke "python" "setup.py" "install"
                        (string-append "--prefix=" (assoc-ref outputs "python"))
-                       "--root=/"))
-             #t))
+                       "--root=/"))))
          (add-after 'install-python-binding 'install-documentation
            (lambda* (#:key outputs #:allow-other-keys)
              (invoke "make" "doc")
              (let* ((doc (assoc-ref outputs "doc"))
                     (dest (string-append doc "/share/doc")))
-               (copy-recursively "doc" dest))
-             #t)))))
+               (copy-recursively "doc" dest)))))))
     (native-inputs
      `(("dot" ,graphviz)
        ("doxygen" ,doxygen)
        ("python" ,python-wrapper)))
-    (inputs
-     `(("python2" ,python-2.7)
-       ("python3" ,python)))
     (synopsis "Decaf Elliptic Curve Library")
     (description "The libdecaf library is an implementation of elliptic curve
 cryptography using the Montgomery and Edwards curves Curve25519, Ed25519,
 Ed448-Goldilocks and Curve448, using the Decaf encoding.")
     (home-page "http://ed448goldilocks.sourceforge.net/")
-    (license
-     (list
-      ;; Library.
-      license:expat
-      ;; Binding.
-      license:bsd-2))))
+    (license (list license:expat        ;library
+                   license:bsd-2))))    ;python bindings
 
 (define-public libsodium
   (package
--8<---------------cut here---------------end--------------->8---

And pushed as commit c221d49510.

Thank you!

Maxim