Subject: [bug#52045] [PATCH] gnu: Add cl-clm.

From: Guillaume Le Vaillant <[email-masked]>
Date: Tue, 23 Nov 2021 13:00:45 +0000

jgart <[email-masked]> skribis:

> Hi,
>
> This is another WIP patch for the Common Lisp Music package (CLM) for GNU Guix.
> It has a similar package definition to CMN which was successfully packaged and merged 
> today into Guix thanks to the help of Bill, Guillaume, and Pierre:
>
> https://en.wikipedia.org/wiki/Common_Lisp_Music
>
> My goal in packaging clm and cmn is to subsequently be able to package
> slippery-chicken for GNU Guix:
>
> https://github.com/mdedwards/slippery-chicken
>
> slippery-chicken hints at alsa headers required by clm on this line of its' install script:
>
> https://github.com/mdedwards/slippery-chicken/blob/master/sc-install#L29
>
> But, I think that the most immediate issue might be with the asd file in the clm repo:
>
> https://ccrma.stanford.edu/software/clm/clm-5.tar.gz
>
> Here is the asd file printed for convenience (delimited by backticks):
>
> [...]
>
> Guillaume, do you see this asd file as needing a similar fix to your previous patching?
>
> If so, I can try my hands at patching it myself while using your previous
> patch to Bill as a template I can follow. 
>
> I would send a patch to Bill afterwards for review and inclusion in the tarball.
>
> My knowledge of asd file configuration is rather limited. Any advice here is much appreciated.
>
> all best,
>
> jgart

Hi,

Making an asdf system definition for clm similar to the one for cmn
won't be enough, because in addition to compiling lisp files, the
"all.lisp" file is also calling the "configure" script and calling gcc
to compile C code and make a shared library.

The attached modified version of your patch seems to compile clm without
error (although some files end up in a different directory compared to
"regular" lisp libraries), but I have not tested if it works as expected.
From 8a9880fcc51f33e0ad2f8fa1887b71c55a78ffb9 Mon Sep 17 00:00:00 2001
From: jgart <[email-masked]>
Date: Mon, 22 Nov 2021 15:45:28 -0500
Subject: [PATCH] gnu: Add cl-clm.

* gnu/packages/lisp-xyz.scm (cl-clm, sbcl-clm): New variables.

Co-authored-by: Guillaume Le Vaillant <[email-masked]>
---
 gnu/packages/lisp-xyz.scm | 43 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index bb697c4c60..799d8f7bbc 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -69,6 +69,7 @@ (define-module (gnu packages lisp-xyz)
   #:use-module (gnu packages file)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
@@ -19721,6 +19722,48 @@ (define-public cl-cmn
 (define-public ecl-cmn
   (sbcl-package->ecl-package sbcl-cmn))
 
+(define-public sbcl-clm
+  (package
+    (name "sbcl-clm")
+    (version "5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri "https://ccrma.stanford.edu/software/clm/clm-5.tar.gz")
+       (sha256
+        (base32 "1ckgl7rsnxppnf47jqayrbyhm3hv6c4f7n2994ylva6wiy5w7wp8"))))
+    (build-system asdf-build-system/sbcl)
+    (native-inputs
+     `(("gcc" ,gcc)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-build
+           (lambda _
+             (substitute* "configure"
+               (("/bin/sh")
+                (which "bash")))
+             (substitute* '("all.lisp"
+                            "index.cl"
+                            "initmus.lisp")
+               (("/bin/csh")
+                (which "bash")))
+             (substitute* "all.lisp"
+               (("#\\+sbcl \\(shadowing-import 'clm:double\\)" all)
+                (string-append all
+                               " #+sbcl (shadowing-import 'clm:env)"))))))))
+    (home-page "https://ccrma.stanford.edu/software/clm/")
+    (synopsis "Music synthesis and signal processing package")
+    (description
+"Common Lisp Music is a music synthesis and signal processing package
+in the Music V family.")
+    (license license:expat)))
+
+(define-public cl-clm
+  (sbcl-package->cl-source-package sbcl-clm))
+
 (define-public sbcl-cl-https-everywhere
   ;; No release.
   ;; Don't forget to update the https-everywhere input.
-- 
2.33.1