fix(snap): put gnome-platform first so SVG icons load (#822)

core24 desktop-launch rebuilds gdk-pixbuf-loaders.cache from the first
LD_LIBRARY_PATH directory that ends in the arch triplet. Stage-packages
drop a gdk-pixbuf tree without libpixbufloader_svg.so at
$SNAP/usr/lib/<triplet>, ahead of gnome-platform, so About-page SVGs
fail with "Image type svg is not supported".

Fixes the same core24 GTK3 gap documented at:
https://forum.snapcraft.io/t/missing-svg-support-for-gtk3-in-core24/48851
This commit is contained in:
Jatin K Malik
2026-09-12 12:43:39 -07:00
committed by GitHub
parent 1fac26ff07
commit 70d5ce7688
2 changed files with 25 additions and 0 deletions
+9
View File
@@ -68,6 +68,15 @@ apps:
PATH: $SNAP/usr/bin:$SNAP/bin:$PATH
# PortAudio opens ALSA first. Point at snap-local config that routes to Pulse.
ALSA_CONFIG_PATH: $SNAP/etc/asound.conf
# core24 gnome-46-2404: desktop-launch rebuilds gdk-pixbuf-loaders.cache
# by running query-loaders, which picks the SVG loader from the first
# LD_LIBRARY_PATH entry ending in /$CRAFT_ARCH_TRIPLET. Stage-packages
# (via libavcodec and friends) put a gdk-pixbuf tree without
# libpixbufloader_svg.so at $SNAP/usr/lib/$CRAFT_ARCH_TRIPLET, ahead of
# gnome-platform. About page and other GdkPixbuf SVG loads then fail
# with "Image type svg is not supported".
# https://forum.snapcraft.io/t/missing-svg-support-for-gtk3-in-core24/48851
LD_LIBRARY_PATH: $SNAP/gnome-platform/usr/lib/$CRAFT_ARCH_TRIPLET:$LD_LIBRARY_PATH
# Make ALSA data/plugins visible at the paths libasound expects.
layout:
+16
View File
@@ -31,6 +31,22 @@ def test_snapcraft_recipe_and_gui_assets() -> None:
assert SNAP_PNG.stat().st_size > 0
def test_snap_puts_gnome_platform_first_on_ld_library_path() -> None:
"""core24 gdk-pixbuf finds libpixbufloader_svg.so only if gnome-platform wins.
Stage-packages pull a second gdk-pixbuf (no SVG loader) into
$SNAP/usr/lib/<triplet>. desktop-launch's query-loaders walks the first
LD_LIBRARY_PATH entry that ends in that triplet, so gnome-platform must
come first or About-page SVGs fail with "Image type svg is not supported".
"""
doc = yaml.safe_load(SNAPCRAFT_YAML.read_text(encoding="utf-8"))
env = (doc.get("apps") or {}).get("vocalinux", {}).get("environment") or {}
ld_path = env.get("LD_LIBRARY_PATH")
assert isinstance(ld_path, str)
assert ld_path.startswith("$SNAP/gnome-platform/usr/lib/$CRAFT_ARCH_TRIPLET:")
assert ld_path.endswith(":$LD_LIBRARY_PATH")
def test_snap_strips_pygobject_and_uses_gnome_gi() -> None:
"""Pip must not build PyGObject; GI comes from the gnome extension."""
text = SNAPCRAFT_YAML.read_text(encoding="utf-8")