Subject: Re: [bug#43310] [PATCH] gnu: Add lsp-dsp-lib.

From: Alexandros Theodotou <[email-masked]>
Date: Mon, 14 Sep 2020 15:17:48 +0100

Hi Efraim,

Thanks for the review.

On Mon, 2020-09-14 at 17:02 +0300, Efraim Flashner wrote:
> It looks like everything in the modules directory is vendored. Can we
> build it separately and link it in? 

I asked the author something similar a while back 
https://github.com/sadko4u/lsp-dsp-lib/issues/1#issuecomment-676517050
I think the build system just expects those modules to be there as
sources - not sure if they even build anything to link to. BTW, this is
my initial patch, before the author started to provide an all-inclusive 
tarball in the github releases page:

```scheme
(define-public lsp-dsp-lib
  (package
    (name "lsp-dsp-lib")
    (version "0.5.6")
    (source
      (origin
        (method git-fetch)
        (uri (git-reference
               (url "https://github.com/sadko4u/lsp-dsp-lib")
               (commit (string-append "lsp-dsp-lib-" version))))
        (file-name (git-file-name name version))
        (sha256
         (base32
          "1n5qp9bjsgg1ziy9mqnx034qlzbsp7yl473vk9aigzkyj883dfpj"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f ; no tests
       #:make-flags
       (list "CC=gcc")
       #:phases
       (modify-phases %standard-phases
         (add-before 'build 'copy-modules
           (lambda* (#:key inputs #:allow-other-keys)
             (copy-recursively (assoc-ref inputs "lsp-common-lib")
                               "modules/lsp-common-lib")
             (copy-recursively (assoc-ref inputs "lsp-test-fw")
                               "modules/lsp-test-fw")
             #t))
         (replace 'configure
           (lambda _
             (invoke "make" "config" (string-append "PREFIX=" (assoc-
ref %outputs "out")))
             #t)))))
    (inputs
     `(("lsp-common-lib" ,(origin
         (method git-fetch)
         (uri (git-reference
                (url "https://github.com/sadko4u/lsp-common-lib")
                (commit "lsp-common-lib-1.0.7")))
         (file-name (git-file-name name version))
         (sha256
           (base32
             "1alxv2ryivbj122gryxrrvyicw6zgbdk15wp010lrq6r1nj7mjxh"))))
       ("lsp-test-fw" ,(origin
         (method git-fetch)
         (uri (git-reference
                (url "https://github.com/sadko4u/lsp-test-fw")
                (commit "lsp-test-fw-1.0.5")))
         (file-name (git-file-name name version))
         (sha256
           (base32
             "0n4ircp9bgzwfaa6023bvfsb90qvl2iawbihnwivr5id1js5jq3p"))))
       ))
    (home-page "https://github.com/sadko4u/lsp-dsp-lib")
    (synopsis "Digital signal processing library")
    (description "The LSP DSP library provides a set of functions that
perform
SIMD-optimized computing on several hardware architectures.  All
functions
currently operate on IEEE-754 single-precision floating-point
numbers.")
    (license license:lgpl3+)))
```

> Also, I saw that there were a few
> test directories. Are there tests to be built?

Not sure - I don't see a check/test make target (see `make help`)

> > +    (arguments
> > +     `(#:tests? #f ; no tests
> > +       #:make-flags
> > +       (list "CC=gcc")
> 
> This can be cc-for-target
>          (list (string-append "CC=" ,(cc-for-target)))

ACK

> > +       (modify-phases %standard-phases
> > +         (replace 'configure
> > +           (lambda _
> > +             (invoke "make" "config" (string-append "PREFIX="
> > (assoc-ref %outputs "out")))
> > +             #t)))))
> 
> We'd rather not use %outputs if possible, but to add it to the
> lambda.
> Also invoke already returns #t
> 
>            (lambda* (#:key outputs #:allow-other-keys)
>              (invoke "make" "config"
>                      (string-append "PREFIX=" (assoc-ref outputs
> "out"))))))))

ACK

Please find the updated patch attached.

Thanks,
Alex
From 2efb2e2dfbfe4cd82b90fef44f6d6919a5cac865 Mon Sep 17 00:00:00 2001
From: Alexandros Theodotou <[email-masked]>
Date: Mon, 14 Sep 2020 15:16:30 +0100
Subject: [PATCH] gnu: Add lsp-dsp-lib.

* gnu/packages/audio.scm (lsp-dsp-lib): New variable.
---
 gnu/packages/audio.scm | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 5e6008f31e..38ee4f8bcc 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4778,6 +4778,37 @@ edited, converted, compressed and saved.")
        ,@(package-inputs ztoolkit)))
     (synopsis "ZToolkit with SVG support")))
 
+(define-public lsp-dsp-lib
+  (package
+    (name "lsp-dsp-lib")
+    (version "0.5.8")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://github.com/sadko4u/lsp-dsp-lib/"
+                            "releases/download/lsp-dsp-lib-" version
+                            "/lsp-dsp-lib-" version "-src.tar.gz"))
+        (sha256
+         (base32
+          "07w3d2i0z0xmvi1ngcgs7lc5a0da8jvf7rv4dnjk01md43b7fkh1"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:make-flags
+       (list (string-append "CC=" ,(cc-for-target)))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "make" "config"
+                     (string-append "PREFIX=" (assoc-ref outputs "out"))))))))
+    (home-page "https://github.com/sadko4u/lsp-dsp-lib")
+    (synopsis "Digital signal processing library")
+    (description "The LSP DSP library provides a set of functions that perform
+SIMD-optimized computing on several hardware architectures.  All functions
+currently operate on IEEE-754 single-precision floating-point numbers.")
+    (license license:lgpl3+)))
+
 (define-public codec2
   (package
     (name "codec2")
-- 
2.27.0