Skip to content

recipe: Pillow 12.3.0 links libtiff - #128

Merged
ndonkoHenri merged 1 commit into
flet-dev:mainfrom
ndonkoHenri:pillow-libtiff
Oct 14, 2026
Merged

ndonkoHenri merged 1 commit into
flet-dev:mainfrom
ndonkoHenri:pillow-libtiff

Conversation

@ndonkoHenri

Copy link
Copy Markdown

What

Pillow 12.2.0 → 12.3.0, now linked against flet-libtiff 4.7.0.

Why

Compressed TIFFs (JPEG, LZW, deflate, PackBits) opened but failed in load() with OSError: decoder libtiff not available. Reported in flet-dev/flet#6969: JPEG-compressed (compression 7) radar TIFFs worked on Windows and failed on Android.

flet-libtiff was already published with JPEG_SUPPORT and ZIP_SUPPORT; the Pillow recipe just never declared it, so setup.py built without HAVE_LIBTIFF.

The bump also matters on iOS: PyPI now ships official 12.3.0 iOS wheels (cp313+), which outranked our 12.2.0 on version. At equal versions our build tag wins again, so iOS apps get the forge build.

Changes

  • meta.yaml: flet-libtiff 4.7.0 under host (Android, .so as DT_NEEDED) and host_build (iOS, static, folded into _imaging); version 12.3.0, build 1. Patches apply unchanged.
  • tests/test_pillow.py: three tests: libtiff listed as a codec; JPEG-in-TIFF round-trip in RGB and RGBA; LZW / deflate / PackBits exact round-trips.

Validation

  • Android arm64-v8a emulator, Python 3.14: 14/14 on device. _imaging NEEDs libtiff.so, APK ships it beside libjpeg.so, wheel declares Requires-Dist: flet-libtiff (==4.7.0).
  • iOS simulator, Python 3.14: 14/14 on device; bundled wheel confirmed as the forge one (Build: 1). _imaging is MH_DYLIB, defines TIFFInitJPEG, no runtime flet-lib* deps. It now also links system /usr/lib/liblzma.5.dylib, which Pillow 12.3 adds for libtiff on iOS and which ships with the OS.
  • Desktop (PyPI Pillow 12.3.0): 14/14.
  • CI matrix: this PR's run.

Consumer notes

Apps that read compressed TIFFs need only a rebuild against the new wheel; PIL.features.check("libtiff") returns True on both platforms. No config or code changes. Consumer guidance for Pillow lives in recipes/pillow/README.md on the examples-and-docs branch, which still describes compressed TIFF as unsupported and is updated separately.

Compressed TIFFs (JPEG, LZW, deflate, PackBits) failed in load() with
'decoder libtiff not available'. flet-libtiff already shipped with JPEG
and zlib support; Pillow just never named it. 12.3.0 also stops PyPI's
own iOS wheels outranking ours on version.

Reported in flet-dev/flet discussion #6969.
@ndonkoHenri
ndonkoHenri merged commit 4928b68 into flet-dev:main Oct 14, 2026
12 checks passed
@ndonkoHenri
ndonkoHenri deleted the pillow-libtiff branch October 14, 2026 17:24
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.

1 participant