From 45d1c4162b9666281857f3b5d38fdefdbf9b1979 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Thu, 22 May 2025 15:55:43 +1000 Subject: [PATCH 1/4] Do not build against libavif < 1 --- setup.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/setup.py b/setup.py index 5d41e27d9..ab36c6b17 100644 --- a/setup.py +++ b/setup.py @@ -224,13 +224,14 @@ def _add_directory( path.insert(where, subdir) -def _find_include_file(self: pil_build_ext, include: str) -> int: +def _find_include_file(self: pil_build_ext, include: str) -> str | None: for directory in self.compiler.include_dirs: _dbg("Checking for include file %s in %s", (include, directory)) - if os.path.isfile(os.path.join(directory, include)): + path = os.path.join(directory, include) + if os.path.isfile(path): _dbg("Found %s", include) - return 1 - return 0 + return path + return None def _find_library_file(self: pil_build_ext, library: str) -> str | None: @@ -852,9 +853,13 @@ class pil_build_ext(build_ext): if feature.want("avif"): _dbg("Looking for avif") - if _find_include_file(self, "avif/avif.h"): - if _find_library_file(self, "avif"): - feature.set("avif", "avif") + if avif_h := _find_include_file(self, "avif/avif.h"): + with open(avif_h, "rb") as fp: + major_version = int( + fp.read().split(b"#define AVIF_VERSION_MAJOR ")[1].split()[0] + ) + if major_version >= 1 and _find_library_file(self, "avif"): + feature.set("avif", "avif") for f in feature: if not feature.get(f) and feature.require(f): From e018dc99faf8d7196ec2a2e7d2760cede851fbd9 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sat, 24 May 2025 08:51:51 +1000 Subject: [PATCH 2/4] Updated libpng to 1.6.48 --- .github/workflows/wheels-dependencies.sh | 2 +- winbuild/build_prepare.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/wheels-dependencies.sh b/.github/workflows/wheels-dependencies.sh index a6b52064c..1583435c1 100755 --- a/.github/workflows/wheels-dependencies.sh +++ b/.github/workflows/wheels-dependencies.sh @@ -39,7 +39,7 @@ ARCHIVE_SDIR=pillow-depends-main # Package versions for fresh source builds FREETYPE_VERSION=2.13.3 HARFBUZZ_VERSION=11.2.1 -LIBPNG_VERSION=1.6.47 +LIBPNG_VERSION=1.6.48 JPEGTURBO_VERSION=3.1.0 OPENJPEG_VERSION=2.5.3 XZ_VERSION=5.8.1 diff --git a/winbuild/build_prepare.py b/winbuild/build_prepare.py index d23f0eb5b..6e176e29c 100644 --- a/winbuild/build_prepare.py +++ b/winbuild/build_prepare.py @@ -118,7 +118,7 @@ V = { "LCMS2": "2.17", "LIBAVIF": "1.3.0", "LIBIMAGEQUANT": "4.3.4", - "LIBPNG": "1.6.47", + "LIBPNG": "1.6.48", "LIBWEBP": "1.5.0", "OPENJPEG": "2.5.3", "TIFF": "4.7.0", From 4eb89f8e5bcd19ad64ed2328c9566061a7116cc2 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 21 May 2025 20:36:19 +1000 Subject: [PATCH 3/4] Reduced number of bytes read for header --- src/PIL/WmfImagePlugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PIL/WmfImagePlugin.py b/src/PIL/WmfImagePlugin.py index f709d026b..d569cb4b8 100644 --- a/src/PIL/WmfImagePlugin.py +++ b/src/PIL/WmfImagePlugin.py @@ -81,7 +81,7 @@ class WmfStubImageFile(ImageFile.StubImageFile): def _open(self) -> None: # check placable header - s = self.fp.read(80) + s = self.fp.read(44) if s.startswith(b"\xd7\xcd\xc6\x9a\x00\x00"): # placeable windows metafile From 57b77bde96484d4a1d6f92adec9a2c2b86485f55 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sat, 24 May 2025 11:55:18 +1000 Subject: [PATCH 4/4] Removed CMAKE_POLICY_VERSION_MINIMUM=3.5 --- .ci/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/install.sh b/.ci/install.sh index d065e7ab5..acb84f046 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -66,7 +66,7 @@ if [[ $(uname) != CYGWIN* ]]; then pushd depends && ./install_raqm.sh && popd # libavif - pushd depends && CMAKE_POLICY_VERSION_MINIMUM=3.5 ./install_libavif.sh && popd + pushd depends && ./install_libavif.sh && popd # extra test images pushd depends && ./install_extra_test_images.sh && popd