Subject: [PATCH v2] gnu: Add petri-foo.

From: Sughosha <[email-masked]>
Date: Fri, 30 Dec 2022 20:28:27 +0000

* gnu/packages/music.scm (petri-foo): New public variable.
* gnu/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch
* gnu/local.mk (GNU_SYSTEM_MODULES): Add the new patch file.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/music.scm                        | 41 +++++++++++++++++++
 ...foo-0.1.87-fix-recent-file-not-exist.patch | 24 +++++++++++
 3 files changed, 66 insertions(+)
 create mode 100644 gnu/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 0d4028a161..0234ecf52c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1627,6 +1627,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/password-store-tree-compat.patch		\
   %D%/packages/patches/pciutils-hurd-configure.patch		\
   %D%/packages/patches/pciutils-hurd-fix.patch			\
+  %D%/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch			\
   %D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
   %D%/packages/patches/pocketfft-cpp-prefer-preprocessor-if.patch			\
   %D%/packages/patches/pokerth-boost.patch			\
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 5be767a138..257a68af81 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -2178,6 +2178,47 @@ (define-public jalv-select
 users to select LV2 plugins and run them with jalv.")
     (license license:public-domain)))
 
+(define-public petri-foo
+  (package
+    (name "petri-foo")
+    (version "0.1.87")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/petri-foo/Source"
+                                  "/petri-foo-" version ".tar.bz2"))
+              (sha256
+                (base32
+                 "0b25iicgn8c42487fdw32ycfrll1pm2zjgy5djvgw6mfcaa4gizh"))
+              (modules '((guix build utils)))
+              ;; https://github.com/petri-foo/Petri-Foo/pull/43
+              (snippet '(begin
+                          (substitute* "gui/gui.c"
+                            (("#include \\\"waveform\\.h\\\"")
+                             (string-append
+                               "#include \"waveform.h\""
+                               "\n\nGtkRecentManager *recent_manager;")))
+                          (substitute* "gui/gui.h"
+                            (("GtkRecentManager \\*recent_manager;")
+                             "extern GtkRecentManager *recent_manager;"))))))
+    (build-system cmake-build-system)
+    (arguments (list #:tests? #f)) ;no test target
+    (native-inputs (list pkg-config))
+    (inputs (list alsa-lib
+                  glib
+                  jack-1
+                  libgnomecanvas
+                  liblo
+                  libsamplerate
+                  libsndfile
+                  libxml2
+                  openssl))
+    (home-page "https://petri-foo.sourceforge.net/")
+    (synopsis "Audio sampler for JACK")
+    (description
+     "Petri-Foo is a fork of the Specimen sampler project intended to run under
+a JACK session.")
+    (license license:gpl2)))
+
 (define-public mixxx
   (package
     (name "mixxx")
diff --git a/gnu/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch b/gnu/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch
new file mode 100644
index 0000000000..3e88487b07
--- /dev/null
+++ b/gnu/packages/patches/petri-foo-0.1.87-fix-recent-file-not-exist.patch
@@ -0,0 +1,24 @@
+diff -Naur a/gui/bank-ops.c b/gui/bank-ops.c
+--- a/gui/bank-ops.c	2012-08-06 05:33:34.000000000 +0200
++++ b/gui/bank-ops.c	2012-08-07 17:57:28.580145691 +0200
+@@ -393,6 +393,8 @@
+          g_signal_connect_swapped(G_OBJECT(msg), "response",
+                                    G_CALLBACK(gtk_widget_destroy), msg);
+          gtk_widget_show (msg);
++
++         gtk_recent_manager_remove_item(recent_manager, filename, NULL);
+     }
+     else
+     {
+diff -Naur a/libpetrifui/dish_file.c b/libpetrifui/dish_file.c
+--- a/libpetrifui/dish_file.c	2012-08-06 05:33:34.000000000 +0200
++++ b/libpetrifui/dish_file.c	2012-08-07 17:56:09.063909801 +0200
+@@ -1440,7 +1440,7 @@
+ 
+     if (stat(path, &st) != 0)
+     {
+-        msg_log(MSG_ERROR, "file '%s' does not exist\n");
++        msg_log(MSG_ERROR, "file '%s' does not exist\n", path);
+         return -1;
+     }
+ 
-- 
2.38.1