Subject: Re: [PATCH v2] gnu: Add synthpod.

From: Sughosha <[email-masked]>
Date: Mon, 23 Jan 2023 21:10:22 +0000

Thanks for reviewing the patch and improving it.

> We should probably also wrap the scripts to set PATH to where “grep”,
“coreutils”, “sed”, and “gawk” are found, but I wasn’t able to add (gnu
packages gawk) to the imports of (gnu packages music).

This is not the only package requiring such basic programs like "sed",
"grep" etc but not wrapped or listed in inputs. The other such package that
I am aware of is ardour, which also requires these programs. I tried
running ardour in a guix shell with --emulate-fhs, then found that ardour
could not start because these programs were not found in the PATH. So I am
not sure if it is required to add these programs to inputs or to wrap them.

> Unfortunately, the program crashes because it can’t find the LV2 files
for Synthpod itself:

I fixed it partially. The binaries are confusing. `synthpod_ui` seems like
not to be run manually. The way that I found to run the ui is
`synthpod_alsa -g` or `synthpod_jack -g`.

Strangely, with the attatched new v3 patch, the program starts only if
installed to guix profile (or maybe something else like guix home, not
tested). Just by building, the program searches for "manifest.ttl" file
in the current working directory and fails to start.

Sughosha

From a2ae9de66366bf00c9a384f5c7be8b0be17b0a02 Mon Sep 17 00:00:00 2001
From: Sughosha <[email-masked]>
Date: Mon, 23 Jan 2023 22:02:42 +0100
Subject: [PATCH v3] gnu: Add synthpod.

* gnu/packages/music.scm (synthpod): New variable.
---
 gnu/packages/music.scm | 68 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 67 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 65bb6d29f7..5c446330fa 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -44,7 +44,7 @@
 ;;; Copyright © 2021 Simon Streit <[email-masked]>
 ;;; Copyright © 2021 Xinglu Chen <[email-masked]>
 ;;; Copyright © 2021 Thomas Albers Raviola <[email-masked]>
-;;; Copyright © 2022 Sughosha <[email-masked]>
+;;; Copyright © 2022, 2023 Sughosha <[email-masked]>
 ;;; Copyright © 2022 Remco van 't Veer <[email-masked]>
 ;;; Copyright © 2022 Maxim Cournoyer <[email-masked]>
 ;;; Copyright © 2022 Wamm K. D. <[email-masked]>
@@ -174,6 +174,7 @@ (define-module (gnu packages music)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages stb)
   #:use-module (gnu packages tcl)
+  #:use-module (gnu packages terminals)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages tex)
   #:use-module (gnu packages time)
@@ -3558,6 +3559,71 @@ (define-public mod-host
 socket or command line.")
       (license license:gpl3+))))
 
+(define-public synthpod
+  (package
+    (name "synthpod")
+    (version "0.1.6507")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://git.open-music-kontrollers.ch/lv2/synthpod")
+                     ;; Version is not tagged but mentioned in VERSION file.
+                     (commit "6e84a075ea8fea95094dcbc2b30f968717a81960")))
+              (file-name (git-file-name name version))
+              (sha256
+                (base32
+                 "1chazkdxjgjzfxqmlk4ywhilkj9l3bybd9xghjg9r67df2diqhbs"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'patch-references
+            (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* '("bin/synthpod_ui"
+                             "bin/synthpod_d2tk")
+                (("lv2info") (search-input-file inputs "/bin/lv2info"))
+                ((" synthpod_sandbox_x11")
+                 (string-append " " #$output "/bin/synthpod_sandbox_x11")))
+              (substitute* "bin/synthpod_bin.c"
+                (("%s/.lv2") (string-append #$output "/lib/lv2"))
+                ((", home_dir") ""))))
+          (add-before 'check 'set-home-directory
+            (lambda _
+              ;; Tests fail with: Fontconfig error: No writable cache
+              ;; directories
+              (setenv "HOME" "/tmp"))))))
+    (inputs (list alsa-lib
+                  cairo
+                  eudev
+                  freetype
+                  font-fira-code
+                  font-fira-sans
+                  fontconfig
+                  glew
+                  glu
+                  jack-2
+                  libvterm
+                  lilv
+                  lv2
+                  libevdev
+                  libinput
+                  libvterm
+                  lv2
+                  pixman
+                  sratom
+                  xcb-util
+                  xcb-util-wm
+                  xcb-util-xrm
+                  zita-alsa-pcmi))
+    (native-inputs (list pkg-config))
+    (home-page "https://open-music-kontrollers.ch/lv2/synthpod/")
+    (synopsis "Nonlinear LV2 plugin container")
+    (description
+     "Synthpod is an LV2 host.  It can be run as a standalone app and be used
+as a tool for live performances or general audio and event filtering.")
+    (license (list license:artistic2.0 license:gpl3+))))
+
 (define-public curseradio
   (let ((commit "1bd4bd0faeec675e0647bac9a100b526cba19f8d")
         (revision "1"))
-- 
2.39.1