diff mbox series

[bug#58681,v2] gnu: Add synthpod.

Message ID eliH3oT8t2wMrICbqjyWfhr8eefnVpUx9vKeXY_6nsIBZHz0dhZrvKeOcNxZpgHvzzUV75pEj6ExLKDcmJGMz_zxz5KTbJty6VbXsQZJpXQ=@proton.me
State New
Headers show
Series [bug#58681,v2] gnu: Add synthpod. | expand

Commit Message

Sughosha Jan. 23, 2023, 9:10 p.m. UTC
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

Comments

Ricardo Wurmus Jan. 24, 2023, 11:24 p.m. UTC | #1
Sughosha <Sughosha@proton.me> writes:

> 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.

To me this means that we should also fix ardour, not that we should
ignore the problem in other packages :)

>> 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.

That’s odd, but perhaps it’s the default of an LV2 library that synthpod
uses.

The patch looks good enough to me, so I applied it.  Feel free to
revisit it at a later point to address the remaining minor issues.

Thank you!
diff mbox series

Patch

From a2ae9de66366bf00c9a384f5c7be8b0be17b0a02 Mon Sep 17 00:00:00 2001
From: Sughosha <sughosha@proton.me>
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 <simon@netpanic.org>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;; Copyright © 2021 Thomas Albers Raviola <thomas@thomaslabs.org>
-;;; Copyright © 2022 Sughosha <sughosha@disroot.org>
+;;; Copyright © 2022, 2023 Sughosha <sughosha@proton.me>
 ;;; Copyright © 2022 Remco van 't Veer <remco@remworks.net>
 ;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
@@ -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