diff mbox series

[bug#64521] gnu: tuba: Fix video-player crash and webp support.

Message ID 41881946b2ae618d37e9c9939bf3d878116a70dc.1688758089.git.lilah@lunabee.space
State New
Headers show
Series [bug#64521] gnu: tuba: Fix video-player crash and webp support. | expand

Commit Message

Lilah Tascheter July 7, 2023, 7:28 p.m. UTC
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(-)


base-commit: 3e9915724718948f0d74d83aaac1b3c8061c26d2

Comments

Juliana Sims July 7, 2023, 9:08 p.m. UTC | #1
Hello,

First of all, could you split this into multiple patches? Specifically, 
could you split the fix apart from the argument modernization?

My other major concern is the inclusion of all those gstreamer plugins. 
Do we really need all of them? Ideally we want to avoid *-ugly and 
*-bad if we can.

I'm not sure if this is an issue with the Guix package, my personal 
setup, or Tuba itself, but while testing the patch I ran into an issue 
signing in. Because spaces are used to separate the permissions the 
application requests, my browser seems to interpret them as indicating 
new URLs instead. If you're able to fix that, that would be great!

Also, feel free to add a copyright line to the top of the file as part 
of your first patch ;)

Thanks,
Juli
Lilah Tascheter July 8, 2023, 5:08 a.m. UTC | #2
hey juli!

> First of all, could you split this into multiple patches?
yep!

> My other major concern is the inclusion of all those gstreamer
> plugins. Do we really need all of them? Ideally we want to avoid
> *-ugly and *-bad if we can.
-ugly can definately be removed; looks like it only provides DVD
decoding stuff. -bad, though, is required in order to play .mp4 video.

> Because spaces are used to separate the permissions the application
> requests, my browser seems to interpret them as indicating new URLs
> instead.
I just reported it upstream; the scopes aren't properly urlencoded.

thank you so much!
~lunabee
diff mbox series

Patch

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,