Skip to content

Bundle the GStreamer audio plugins in the Arch AppImage - #43

Merged
ScottMorris merged 1 commit into
mainfrom
ci/bundle-gstreamer-audio-plugins
Oct 30, 2026
Merged

ScottMorris merged 1 commit into
mainfrom
ci/bundle-gstreamer-audio-plugins

Conversation

@ScottMorris

@ScottMorris ScottMorris commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Audio plugins: the Arch AppImage workflow now installs gst-plugins-base, gst-plugins-good and gst-plugin-pipewire by default. WebKitGTK plays audio through GStreamer, and webkit2gtk-4.1 only depends on the GStreamer libraries, so quick-sharun had no plugins to deploy and packaged apps logged GStreamer element autoaudiosink not found.
  • Deploy: DEPLOY_GSTREAMER=1 is set for the assemble step so the plugins are always copied into the AppDir.
  • Guard: the build fails if libgstautodetect.so (which provides autoaudiosink) is missing from the AppDir after quick-sharun runs.
  • Consumers: folio, emoji-nook, jar and lieutenant-fizz call this workflow at @main without overriding extra-pacman-packages, so all four pick up the change. A consumer that passes its own extra-pacman-packages replaces the default and needs to include the three packages.

Test plan

  • Ran the workflow's setup, dependency and assemble steps locally in the pinned Arch container against the lieutenant-fizz 0.3.0 .deb: the guard passed and quick-sharun --test went OK
  • libgstautodetect.so, libgstpipewire.so and libgstalsa.so are present in AppDir/lib/gstreamer-1.0/
  • Launched the resulting AppImage on a desktop Linux host: no autoaudiosink message and no GLib-GObject-CRITICAL lines; only the harmless canberra-gtk-module notice remains
  • Game audio plays from the locally built AppImage
  • Run a consumer release against this branch in CI
  • Check the AppImage size increase is acceptable (107 MB locally)

WebKitGTK plays audio through GStreamer, but `webkit2gtk-4.1` only depends on the GStreamer libraries. The plugin packages were never installed in the packaging container, so `quick-sharun` had nothing to deploy and the AppImage logged `GStreamer element autoaudiosink not found`.

- **Packages:** add `gst-plugins-base`, `gst-plugins-good` and `gst-plugin-pipewire` to the default `extra-pacman-packages`. `autoaudiosink` lives in the `autodetect` plugin from `gst-plugins-good`.
- **Deploy:** set `DEPLOY_GSTREAMER=1` for the assemble step so the plugins are always copied, not only when `quick-sharun` detects a linked `libgstreamer`.
- **Guard:** fail the build if `libgstautodetect.so` is not in the AppDir after `quick-sharun` runs.

Consumers that pass their own `extra-pacman-packages` replace the default and need to include these three packages.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@ScottMorris ScottMorris added infrastructure Shared infrastructure and automation work ci Continuous integration workflows and checks tauri Tauri platform or plugin-specific work labels Oct 30, 2026
@ScottMorris
ScottMorris merged commit 38a48b1 into main Oct 30, 2026
6 checks passed
@ScottMorris
ScottMorris deleted the ci/bundle-gstreamer-audio-plugins branch October 30, 2026 03:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Continuous integration workflows and checks infrastructure Shared infrastructure and automation work tauri Tauri platform or plugin-specific work

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant