Linux AppImage: bundled libsoup-3.0/libnghttp2 shadow system libs on non-Debian distros, breaking system GStreamer WebRTC plugins
- Dominant language
- Rust
- Stars
- 32.7k
- Forks
- 4.3k
- Avg merge
- 1d 13h
- Merged PRs (30d)
- 253
Description
#2176 (make Linux AppImage GStreamer work on non-Debian distros) removed the bundled
GStreamer plugins so the system ones load — thank you, 0.5.0 now launches natively on
Arch. But two bundled libraries remain that undo that fix for the WebRTC half:
- The AppImage bundles `usr/lib/libsoup-3.0.so.0` (Ubuntu's build). On Arch, the system
`libgstnice.so` / `libgstwebrtc.so` link against system `libgupnp-1.6`, which is built
against libsoup 3.6.x. With the bundled (older) libsoup first on the loader path, the
plugin scanner fails both plugins:
Failed to load plugin '/usr/lib/gstreamer-1.0/libgstnice.so':
/usr/lib/libgupnp-1.6.so.0: undefined symbol: soup_server_message_pause
(identical for libgstwebrtc.so)
→ no `webrtcbin` → huddles have no media pipeline.
- Renaming the bundled libsoup exposes the second one: system libsoup 3.6.6 needs a
newer libnghttp2 than the bundled `usr/lib/libnghttp2.so.14`:
symbol lookup error: /usr/lib/libsoup-3.0.so.0:
undefined symbol: nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation
**Workaround (verified):** rename both bundled libs so the system copies load:
cd squashfs-root/usr/lib
mv libsoup-3.0.so.0 libsoup-3.0.so.0.bak
mv libnghttp2.so.14 libnghttp2.so.14.bak
After this (and clearing `~/.cache/gstreamer-1.0/registry.x86_64.bin` — the scanner
caches blacklisted plugins), a full rescan shows libgstwebrtc/libgstnice loading
cleanly; the only remaining failures are optional codecs (openexr, spandsp) with no
huddle impact. App runs stably with system libsoup (soname-compatible).
**Suggested fix:** drop `libsoup-3.0.so.0` and `libnghttp2.so.14` from the AppImage
(same rationale as removing bundled libsystemd in #2353 and bundled GStreamer in
#2176) — the bundled WebKit is happy with the system copies, soname is stable across
both.
**Environment:** Buzz Desktop 0.5.0 AppImage (extracted, AppRun), Arch Linux
(EndeavourOS), webkit2gtk-4.1 2.52.5 (system), gstreamer 1.28.5, libsoup3 3.6.6,
gupnp 1.6.10, libnice 0.1.23, PipeWire 1.6.8.
---
Contributor guide
Research direction
Start with the AppImage packaging path and inspect how squashfs-root/usr/lib/libsoup-3.0.so.0 and libnghttp2.so.14 are included. Reproduce the issue on a non-Debian system, clear the GStreamer registry cache, and rescan the plugins. Done means both bundled libraries are absent and libgstwebrtc.so and libgstnice.so load without the reported symbol errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux
- Domain
- build-system, release
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100