block / block/buzz

Linux AppImage: bundled libsoup-3.0/libnghttp2 shadow system libs on non-Debian distros, breaking system GStreamer WebRTC plugins

Open
#3,494 3 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.