Files
Viktor Petersson 4e47d70d87 fix(build): ship libwebpdemux2 so pi3 Pillow can save WebP (#3042)
The upload image-normalisation pipeline converts HEIC/HEIF/TIFF/etc. to
lossless WebP via Pillow. On 32-bit Pi (armv7) there's no Pillow wheel,
so it's compiled from source against libwebp-dev and dynamically links
the whole webp family at runtime: libwebp7, libwebpmux3 *and*
libwebpdemux2 (Pillow's _webp uses WebPAnimDecoder).

The runtime image only pulled libwebp7 + libwebpmux3 — both transitive
deps of ffmpeg's libavcodec — but NOT libwebpdemux2, which nothing else
depends on. Without it, ``import PIL._webp`` fails to resolve
libwebpdemux.so.2, the WebP plugin registers no save handler, and the
conversion dies with ``KeyError: 'WEBP'`` (Sentry ANTHIAS-1Y, 11 events,
all pi3).

Add libwebp7 / libwebpdemux2 / libwebpmux3 to the runtime
base_apt_dependencies explicitly so the pipeline never depends on
ffmpeg's transitive graph — same rationale as the libheif1 entry beside
them. Inert on 64-bit boards (their Pillow wheel bundles its own webp
libs), so listed unconditionally for simplicity, matching libheif1.

Verified: a from-source Pillow 12.2.0 _webp.so on debian:trixie links
libwebp.so.7, libwebpmux.so.3, libwebpdemux.so.2 and libsharpyuv.so.0;
installing ffmpeg+libheif1 leaves libwebpdemux2 absent.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 08:44:45 +02:00
..