Skip to content

packaging: depend on the gtk4 GStreamer sink used by the GUI preview - #5

Open
jordanful wants to merge 1 commit into
funinkina:mainfrom
jordanful:fix/gui-gtk4-paintablesink-dep
Open

jordanful wants to merge 1 commit into
funinkina:mainfrom
jordanful:fix/gui-gtk4-paintablesink-dep

Conversation

@jordanful

@jordanful jordanful commented Aug 26, 2026

Copy link
Copy Markdown

What

The GUI package doesn't declare the plugin that provides gtk4paintablesink, so the
live preview is broken on a clean install.

Symptom

Fresh install of the released 0.1.4 Arch packages, then opening the preview:

failed to find element factory with name 'gtk4paintablesink'

Why a build doesn't catch it

Preview resolves the sink at runtime (gui/src/preview.rs:150):

let sink = gst::ElementFactory::make("gtk4paintablesink").build()?;

so the package builds, installs and launches fine — only showing the preview fails.
Nothing at compile or package time references the plugin.

Cause

gtk4paintablesink ships in gst-plugins-rs, which distros package separately from
gst-plugins-{base,good}:

distro package provides
Arch gst-plugin-gtk4 (extra) /usr/lib/gstreamer-1.0/libgstgtk4.so
Debian/Ubuntu gstreamer1.0-gtk4 libgstgtk4.so

packaging/nfpm-gui.yaml declares gtk4 and libadwaita, but not this.

Verification

Built the GUI package both ways with nfpm 2.47 and read .PKGINFO:

package Depends On
released openeffects-0.1.4-1-x86_64.pkg.tar.zst openeffectsd gtk4 libadwaita
local rebuild, unpatched openeffectsd gtk4 libadwaita (faithful repro)
local rebuild, patched openeffectsd gtk4 libadwaita gst-plugin-gtk4

Then end-to-end in a clean archlinux:latest container, installing openeffectsd plus
the GUI package:

  • unpatched: error: package 'gst-plugin-gtk4' was not found; gtk4paintablesink MISSING
  • patched: pacman resolves and pulls gst-plugin-gtk4 0.15.3-1 from extra; gtk4paintablesink OK

Note on the rpm override

I left overrides.rpm untouched on purpose. I couldn't find a Fedora package shipping this
plugin — gstreamer1-plugins-rs and gstreamer1-plugin-gtk4 don't resolve in Fedora's
package index.

`Preview` builds its pipeline around a `gtk4paintablesink` element
(gui/src/preview.rs), but neither the Arch nor the Debian package declares
the plugin that provides it. Because the element is resolved at runtime via
`ElementFactory::make`, a clean install builds and launches fine and only
fails when the preview is first shown:

    failed to find element factory with name 'gtk4paintablesink'

gtk4paintablesink ships in gst-plugins-rs, packaged separately from
gst-plugins-{base,good}: gst-plugin-gtk4 on Arch, gstreamer1.0-gtk4 on
Debian/Ubuntu.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant