Subject: Re: [PATCH] Adding jack-mixer audio package

From: Divya Ranjan <[email-masked]>
Date: Mon, 11 Nov 2024 01:17:07 +0000

Ekaitz Zarraga <[email-masked]> writes:

> Hi,
>
> The commit message should follow the Changelog format as described the
> Submitting-Patches section of the manual.
>
> That said:
>
>> Hello Guix devs,
>> Apologies, I forgot to `--annotate` the git send-email, the
>> following patch adds the jack-mixer application to the `(gnu
>> packages audio)`. It's a python package built with meson, I've
>> tested it with my system and it is deterministic.
>> Let me know if any changes need to be done.
>> P.S: CC me, since I'm not subscribed to the mailing list.
>> Regards,
>> On 8 November 2024 00:01:01 GMT, Divya Ranjan
>> <[email-masked]> wrote:
>> >---
>> > gnu/packages/audio.scm | 68 ++++++++++++++++++++++++++++++++++++++++++
>> > 1 file changed, 68 insertions(+)
>> >
>> >diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
>> >index 467dc4a74f..70477d1071 100644
>> >--- a/gnu/packages/audio.scm
>> >+++ b/gnu/packages/audio.scm
>> >@@ -79,6 +79,7 @@ (define-module (gnu packages audio)
>> >   #:use-module (gnu packages check)
>> >   #:use-module (gnu packages cdrom)
>> >   #:use-module (gnu packages compression)
>> >+  #:use-module (gnu packages commencement)
>
> This is already included in the `build-system` so you don't need to
> add it. In fact, it breaks Guix when you do :)
>
>> >   #:use-module (gnu packages cpp)
>> >   #:use-module (gnu packages curl)
>> >   #:use-module (gnu packages dbm)
>> >@@ -160,6 +161,7 @@ (define-module (gnu packages audio)
>> >   #:use-module (guix build-system python)
>> >   #:use-module (guix build-system trivial)
>> >   #:use-module (guix build-system waf)
>> >+  #:use-module (guix build utils)
>> >   #:use-module (guix download)
>> >   #:use-module (guix gexp)
>> >   #:use-module (guix git-download)
>> >@@ -2772,6 +2774,72 @@ (define-public jacktrip
>> > audio signal streaming.")
>> >     (license (list license:gpl3+ license:lgpl3 license:expat))))
>> >  >+(define-public jack-mixer
>> >+  (package
>> >+    (name "jack-mixer")
>> >+    (version "19")
>> >+    (source
>> >+     (origin
>> >+       (method git-fetch)
>> >+       (uri (git-reference
>> >+             (url "https://github.com/jack-mixer/jack_mixer")
>> >+             (commit (string-append "release-" version))))
>> >+       (sha256
>> >+        (base32 "18m6a9asbwaslw418i2w04kgc6jgdpw01i3kawdqy903kw66hnhj"))))
>> >+    (build-system meson-build-system)
>> >+    (arguments
>> >+     (list
>> >+      #:build-type "release"
>> >+      #:phases #~(modify-phases %standard-phases
>> >+                   ;; Replaces hardcoded path with /gnu/store
>> >+                   (add-after 'unpack 'path-patch
>> >+                     (lambda _
>> >+                       (substitute* '("meson.build")
>> >+                         (("'/', 'etc', 'xdg'")
>> >+                          (string-append "'"
>> >+                                         #$output "'")))))
>> >+
>> >+                   ;; To wrap the paths for python and GTK
>> >+                   (add-after 'install 'wrap-path
>> >+                     (lambda* (#:key outputs #:allow-other-keys)
>> >+                       (let* ((out (assoc-ref outputs "out"))
>> >+                              (bin (string-append out "/bin/"))
>> >+			      (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
>> >+                              (version #$(version-major+minor (package-version
>> >+                                                               (this-package-input
>> >+                                                                "python"))))
>> >+                              (lib (string-append out "/lib/python" version
>> >+                                                  "/site-packages")))
>> >+                         (wrap-program (string-append bin "jack_mixer")
>> >+                           `("GUIX_PYTHONPATH" ":" prefix
>> >+                             (,(getenv "GUIX_PYTHONPATH") ,lib))
>> >+			   `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
>> >+    (native-inputs
>> >+     (list gcc-toolchain
>
> As said, remove gcc-toolchain
>
>> >+           pkg-config
>> >+           python-cython
>> >+           python-docutils
>> >+           gnu-gettext
>> >+           glib))
>> >+    (propagated-inputs
>> >+     (list gtk+
>> >+	   `(,gtk+ "bin") ;; Required during runtime.
>> >+	   python
>> >+	   bash-minimal
>> >+	   python-wrapper
>> >+	   python-pygobject
>> >+	   python-pycairo
>> >+	   python-platformdirs ;; Required to save sessions.
>> >+	   jack-2))
>> >+    (synopsis
>> >+     "JACK Mixer: A multi-channel audio mixer for the JACK Audio Connection Kit")
>> >+    (description
>> >+     "The jack_mixer is a GTK+ JACK audio mixer app with a look & handling
>> >+similar to hardware mixing desks.  It has lot of useful features, apart
>> >+from being able to mix multiple JACK audio streams.")
>> >+    (home-page "https://rdio.space/jackmixer/")
>> >+    (license license:gpl2+)))
>> >+
>> > (define-public jalv
>> >   (package
>> >     (name "jalv")
>> >--  >2.46.0
>
> Also when running `./pre-inst-env guix lint jack-mixer` there are
> several problems with the package.
>
> Some you can fix with `./pre-inst-env style jack-mixer` but some
> others you have to fix by hand:
>
> 	guix/gnu/packages/audio.scm:2777:2: jack-mixer@19: 'gettext'
> 	should probably switched for its minimal variant
> 	gnu/packages/audio.scm:2777:2: jack-mixer@19: "bash-minimal"
> 	should be in 'inputs' when 'wrap-program' is used
> 	...
>
> Please, run the linter and fix the problems.
>
> Thanks for the patch!
>

Thank you for reminding me about the linter issues and the fact that gcc stuff doesn’t need to be added, I’ve made the changes in the attached patch. Also, let me know if the commit message is okay.

Regards,
>From cd0d5e07739357d1bbb5e979746a4663a5000433 Mon Sep 17 00:00:00 2001
From: Divya Ranjan <[email-masked]>
Date: Mon, 11 Nov 2024 01:11:15 +0000
Subject: [PATCH] gnu: audio: Add jack-mixer

---
 gnu/packages/audio.scm | 60 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 467dc4a74f..f97bbb4126 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2772,6 +2772,66 @@ (define-public jacktrip
 audio signal streaming.")
     (license (list license:gpl3+ license:lgpl3 license:expat))))
 
+(define-public jack-mixer
+  (package
+    (name "jack-mixer")
+    (version "19")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/jack-mixer/jack_mixer")
+             (commit (string-append "release-" version))))
+       (sha256
+        (base32 "18m6a9asbwaslw418i2w04kgc6jgdpw01i3kawdqy903kw66hnhj"))))
+    (build-system meson-build-system)
+    (arguments
+     (list
+      #:build-type "release"
+      #:phases #~(modify-phases %standard-phases
+                   (add-after 'unpack 'path-patch
+                     (lambda _
+                       (substitute* '("meson.build")
+                         (("'/', 'etc', 'xdg'")
+                          (string-append "'"
+                                         #$output "'")))))
+                   (add-after 'install 'wrap-path
+                     (lambda* (#:key outputs #:allow-other-keys)
+                       (let* ((out (assoc-ref outputs "out"))
+                              (bin (string-append out "/bin/"))
+			      (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
+                              (version #$(version-major+minor (package-version
+                                                               (this-package-input
+                                                                "python"))))
+                              (lib (string-append out "/lib/python" version
+                                                  "/site-packages")))
+                         (wrap-program (string-append bin "jack_mixer")
+                           `("GUIX_PYTHONPATH" ":" prefix
+                             (,(getenv "GUIX_PYTHONPATH") ,lib))
+			   `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))))))
+    (native-inputs (list pkg-config
+                         python-cython
+                         python-docutils
+                         gnu-gettext-minimal
+                         glib))
+    (inputs (list bash-minimal))
+    (propagated-inputs (list gtk+
+			     `(,gtk+ "bin")
+			     python
+			     python-wrapper
+			     python-pygobject
+			     python-pycairo
+			     python-platformdirs
+			     jack-2))
+    (synopsis
+     "JACK Mixer: A multi-channel audio mixer for the JACK Audio Connection Kit")
+    (description
+     "The jack_mixer is a GTK+ JACK audio mixer app with a look & handling
+similar to hardware mixing desks.  It has lot of useful features, apart
+from being able to mix multiple JACK audio streams.")
+    (home-page "https://rdio.space/jackmixer/")
+    (license licens:gpl2+)))
+
 (define-public jalv
   (package
     (name "jalv")
-- 
2.46.0

-- 
Divya Ranjan,
Philosophy, Mathematics, Libre Software.