mirror of
https://github.com/Screenly/Anthias.git
synced 2026-06-10 00:57:38 -04:00
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>