Subject: bug#52375: webkitgtk needs gst-plugins-bad

From: Jack Hill <[email-masked]>
Date: Tue, 21 Dec 2021 11:49:19 -0500 (EST)

On Tue, 21 Dec 2021, Jack Hill wrote:

> I asked about this issue on #webkitgtk:gnome.org on IRC. It turns out that 
> what's missing from my environment is gst-plugins-bad (most likely the 
> fakevideosink plugin contained therein). If I install gst-plugins-bad into an 
> environment with a webgkitgtk browser, the crash I was seeing is resolved. 
> Only adding gst-plugins-bad to the inputs of webkitgtk doesn't seem to be 
> enough to solve the problem. I suppose some additional wrapping is needed 
> somewhere (although gst-plugins-base shows up in the webkitgtk references).
>
> What's the best path forward here?

I got permission to quote from the IRC conversation for some additional 
context:

10:52 < jackhill> Hi folks! In the Guix WebKitGTK packages we seem to have introduced a problem that causes tabs to crash on some
                   pages. I'm trying to track it down, but could use a hand in either identifying the solution or in more
                   troubleshooting techniques: https://issues.guix.gnu.org/52375
10:55 < MichaelCatanzaro[m]> jackhill: Looks like you're missing a GStreamer element that is required (do you have:
                              gst-plugins-base, gst-plugins-good, and at least the free half of gst-plugins-bad?)
10:56 < MichaelCatanzaro[m]> Alternatively, maybe try deleting ~/.cache/gstreamer-1.0 in the off chance your registry is corrupt
10:58 < MichaelCatanzaro[m]> jackhill: I think you're missing the fakevideosink element from gst-plugins-bad
11:01 < jackhill> MichaelCatanzaro[m]: thanks. Looking at our package definition we only depend directlyon gst-plugins-base. It
                   seems that we were scared off of -bad at some point in the past:
                   https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/webkit.scm#n255
11:03 < jackhill> I'll look into adding them (and manybe clearing my cache). Were we wrong in our assesment of -bad?
11:06 < MichaelCatanzaro[m]> jackhill: Yup, that is mandatory... and disabling GStreamerGL is not recommended either
11:06 < jackhill> MichaelCatanzaro[m]: yep, adding -bad did it! Is there an official WebKitGTK statement that I can point to when
                   proposing my fix to Guix?
11:06 < MichaelCatanzaro[m]> Not all the elements are mandatory, but some are...
11:07 < MichaelCatanzaro[m]> jackhill: No, we just expect you to have a working gstreamer installation
11:07 < jackhill> hehe, fair enough
11:08 < MichaelCatanzaro[m]> Looks like there is a bug report: https://bugs.webkit.org/show_bug.cgi?id=233949
[daychange]
10:55 < jackhill> MichaelCatanzaro[m]: we're having a conversation in #guix:libera.chat about adding the gst-plugins-bad. Can I
                   quote our conversation yesterday to hopefully bring others up to speed?
11:26 < MichaelCatanzaro[m]> <jackhill> "Michael Catanzaro: we're..." <- Of course, all the history here is public anyway
11:27 < MichaelCatanzaro[m]> You need: gst-plugins-base, gst-plugins-good, and gst-plugins-bad (not gst-plugins-ugly)
11:27 < MichaelCatanzaro[m]> gst-libav especially welcome if available, but not required...
11:29 < MichaelCatanzaro[m]> GStreamer is indeed used inside the bwrap sandbox (most applications do not enable the sandbox, but
                              Ephy does)
11:29 < MichaelCatanzaro[m]> All web content is handled sandboxed :)

> Should leaf applications that use webkitgtk be wrapped to find the right 
> gst-plugins? This seems suboptimal to me. If the plugins are really 
> dependencies of webkitgtk then perhaps they should be encoded that way in 
> Guix.
>
> Should webkitgtk be wrapped somehow to find the plugins on its own? How would 
> this wrapping be done? Do we want to force all webkitgtk applications to 
> carry around these dependencies?

We talked through some of these option on #guix:libera.chat (thanks 
apteryx and cybersyn!) and it sounds like we're leaning towards the first 
option. An additional concern with webkitgtk always pulling in the plugins 
is that it increases the webkitgtk closure size by over 1G!

We're still waiting on webkitgtk builds to finish to help us determine if 
we can enable GSTREAMER_GL.

Best,
Jack