Skip to content

fix(deps): pin pillow-heif to 1.4.0 to unbreak the armhf build - #3218

Merged
vpetersson merged 2 commits into
Screenly:masterfrom
vpetersson-bot:fix/pin-pillow-heif-armhf-build
Jul 27, 2026
Merged

fix(deps): pin pillow-heif to 1.4.0 to unbreak the armhf build#3218
vpetersson merged 2 commits into
Screenly:masterfrom
vpetersson-bot:fix/pin-pillow-heif-armhf-build

Conversation

@vpetersson-bot

Copy link
Copy Markdown
Contributor

Problem

The master docker-build.yaml matrix is red — the buildx (pi2) and buildx (pi3) (32-bit armhf) legs fail, publish-latest is skipped as a result (so the floating latest-<board> tags are stale), and no release can be cut (the disk-image preflight requires every board's images in GHCR).

Root cause

The dependabot python-group bump in #3214 moved pillow-heif 1.4.0 → 1.5.0. Confirmed from the sdist sources:

  • pillow_heif-1.5.0/.../_pillow_heif.c contains #error "pillow_heif requires libheif >= 1.23.1" and #include "libheif/heif_tiling.h".
  • 1.4.0 has neither.
  • Debian trixie ships libheif 1.19.8 (apt-cache policy libheif-dev1.19.8-1).

arm64/x86 install a prebuilt pillow-heif wheel, so they never compile and were unaffected. armhf (pi2/pi3) has no wheel → uv builds from source → the compile hits the version guard and fails:

× Failed to build pillow-heif==1.5.0
  _pillow_heif.c:6: error: "pillow_heif requires libheif >= 1.23.1"
  fatal error: libheif/heif_tiling.h: No such file

It's a compile-time #error, so re-running the job does nothing — it needs this pin.

Fix

Pin pillow-heif==1.4.0 (the last version that built on armhf; the deployed fleet already runs it). Only pillow-heif changes in the lockfile — no other dependency drift. Added a comment at the pin telling dependabot/future-us not to bump past 1.4.0 until trixie carries libheif ≥ 1.23.1 (or a 1.5.x with armhf wheels lands).

No product-code change; image behaviour on every board is unchanged from before #3214.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HJ3ucEkn62cbgPoisAZ5LQ

pillow-heif 1.5.0 (introduced by the dependabot python-group bump in
Screenly#3214) requires libheif >= 1.23.1 to build from source — its
_pillow_heif.c carries `#error "pillow_heif requires libheif >= 1.23.1"`
and includes libheif/heif_tiling.h. Debian trixie ships libheif 1.19.8.

arm64/x86 install a prebuilt pillow-heif wheel, so they never compile and
were unaffected. armhf (pi2/pi3) has no wheel: uv builds from source and
the compile fails, which broke the pi2/pi3 server images and turned the
whole master docker-build matrix red (publish-latest skipped, so the
floating latest-<board> tags went stale and no release could be cut).

Hold at 1.4.0 (the last version that built on armhf; the deployed fleet
already runs it) until trixie carries libheif >= 1.23.1 or a 1.5.x with
armhf wheels lands. Only pillow-heif changes in the lockfile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJ3ucEkn62cbgPoisAZ5LQ
@vpetersson-bot
vpetersson-bot requested a review from a team as a code owner July 27, 2026 19:41
Guard the pin from the previous commit: pillow-heif >= 1.5.0 needs
libheif >= 1.23.1 to build from source, which Debian trixie (1.19.8)
can't satisfy on armhf (no wheel), breaking the pi2/pi3 build legs.
Ignore >= 1.5.0 so dependabot won't re-propose it, while still allowing
1.4.x patch updates. Revisit when trixie carries libheif >= 1.23.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HJ3ucEkn62cbgPoisAZ5LQ
@vpetersson-bot

Copy link
Copy Markdown
Contributor Author

Added a matching dependabot guard (f6ceeadd): .github/dependabot.yml now ignores pillow-heif >= 1.5.0 under the uv ecosystem, so the bump can't silently return next week. 1.4.x patch updates are still allowed; revisit when Debian trixie carries libheif >= 1.23.1 (or 1.5.x ships armhf wheels). Pin + guard now travel together in this PR.

@sonarqubecloud

Copy link
Copy Markdown

@codecov

codecov Bot commented Jul 27, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (master@9429dad). Learn more about missing BASE report.

Additional details and impacted files
@@            Coverage Diff            @@
##             master    #3218   +/-   ##
=========================================
  Coverage          ?   89.46%           
=========================================
  Files             ?       76           
  Lines             ?     8340           
  Branches          ?      891           
=========================================
  Hits              ?     7461           
  Misses            ?      665           
  Partials          ?      214           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@vpetersson
vpetersson merged commit fbe83e9 into Screenly:master Jul 27, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants