Subject: [PATCH] gnu: tuba: Fix video-player crash and webp support.

From: Lilah Tascheter <[email-masked]>
Date: Fri, 7 Jul 2023 14:28:51 -0500

Without gstreamer, tuba will crash every time the user clicks on a
video. libwepb was included as an input but without a pixbuf loader, so
webp support was compiled in but didn't work.

* gnu/packages/mastodon.scm (tuba)[arguments]: Update to new style.

  (tuba)[arguments]<phases>: Add lib-vars-wrap phase to set
  GST_PLUGIN_SYSTEM_PATH and GDK_PIXBUF_MODULE_FILE variables.

  (tuba)[native-inputs]: Add gdk-pixbuf.

  (tuba)[inputs]: Add gstreamer, plugins, and webp-pixbuf-loader.
---
 gnu/packages/mastodon.scm | 41 +++++++++++++++++++++++++++------------
 1 file changed, 29 insertions(+), 12 deletions(-)

diff --git a/gnu/packages/mastodon.scm b/gnu/packages/mastodon.scm
index feef8c61f9..e3334ac868 100644
--- a/gnu/packages/mastodon.scm
+++ b/gnu/packages/mastodon.scm
@@ -21,6 +21,7 @@
 (define-module (gnu packages mastodon)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
@@ -32,6 +33,7 @@ (define-module (gnu packages mastodon)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages pkg-config)
@@ -94,21 +96,35 @@ (define-public tuba
         (base32 "1xhyz6wi17g4m76lr6qc75q4xnnw7c3dh3d04dg8m5gzk6j0y89x"))))
     (build-system meson-build-system)
     (arguments
-     `(#:glib-or-gtk? #t
-       #:configure-flags (list "-Ddistro=true")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'glib-or-gtk-wrap 'symlink-package
-           (lambda* (#:key outputs #:allow-other-keys)
-             (with-directory-excursion
-               (string-append (assoc-ref outputs "out") "/bin")
-               (symlink "dev.geopjr.Tuba" "tuba")))))))
+      (list
+        #:glib-or-gtk? #t
+        #:configure-flags ''("-Ddistro=true")
+        #:phases
+        #~(modify-phases %standard-phases
+            (add-after 'glib-or-gtk-wrap 'lib-vars-wrap
+              (lambda _
+                (let ((gstvar "GST_PLUGIN_SYSTEM_PATH")
+                      (pixvar "GDK_PIXBUF_MODULE_FILE"))
+                  (wrap-program (string-append #$output "/bin/dev.geopjr.Tuba")
+                    `(,gstvar ":" suffix (,(getenv gstvar)))
+                    `(,pixvar ":" = (,(getenv pixvar)))))))
+            (add-after 'lib-vars-wrap 'symlink-package
+              (lambda _
+                (with-directory-excursion
+                  (string-append #$output "/bin")
+                  (symlink "dev.geopjr.Tuba" "tuba")))))))
     (native-inputs
-     (list gettext-minimal
+     (list gdk-pixbuf ; so pixbuf loader cache (for webp) is generated
+           gettext-minimal
            `(,glib "bin") ; for glib-compile-resources
            pkg-config))
     (inputs
-     (list gtk
+     (list gst-plugins-bad
+           gst-plugins-base
+           gst-plugins-good
+           gst-plugins-ugly
+           gstreamer
+           gtk
            gtksourceview
            json-glib
            libadwaita
@@ -117,7 +133,8 @@ (define-public tuba
            libsecret
            libwebp
            libxml2
-           vala))
+           vala
+           webp-pixbuf-loader))
     (home-page "https://tuba.geopjr.dev/")
     (synopsis "GTK client for Mastodon")
     (description "Tuba is a GTK client for Mastodon.  It provides a clean,

base-commit: 3e9915724718948f0d74d83aaac1b3c8061c26d2
-- 
2.40.1