diff --git a/.github/workflows/wheels-dependencies.sh b/.github/workflows/wheels-dependencies.sh index 226fcdb6a..9759ccac5 100755 --- a/.github/workflows/wheels-dependencies.sh +++ b/.github/workflows/wheels-dependencies.sh @@ -102,6 +102,7 @@ HARFBUZZ_VERSION=12.2.0 LIBPNG_VERSION=1.6.50 JPEGTURBO_VERSION=3.1.2 OPENJPEG_VERSION=2.5.4 +JPEGXL_VERSION=0.11.1 XZ_VERSION=5.8.1 ZSTD_VERSION=1.5.7 TIFF_VERSION=4.7.1 @@ -173,6 +174,21 @@ function build_brotli { touch brotli-stamp } +function build_jpegxl { + if [ -e jpegxl-stamp ]; then return; fi + + local out_dir=$(fetch_unpack https://github.com/google/highway/archive/1.3.0.tar.gz) + (cd $out_dir \ + && cmake -DCMAKE_INSTALL_PREFIX=$BUILD_PREFIX -DCMAKE_INSTALL_LIBDIR=$BUILD_PREFIX/lib -DCMAKE_INSTALL_NAME_DIR=$BUILD_PREFIX/lib $HOST_CMAKE_FLAGS . \ + && make install) + + local out_dir=$(fetch_unpack https://github.com/libjxl/libjxl/archive/v$JPEGXL_VERSION.tar.gz) + (cd $out_dir \ + && cmake -DCMAKE_INSTALL_PREFIX=$BUILD_PREFIX -DCMAKE_INSTALL_LIBDIR=$BUILD_PREFIX/lib -DCMAKE_INSTALL_NAME_DIR=$BUILD_PREFIX/lib -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_ENABLE_SKCMS=OFF -DBUILD_TESTING=OFF $HOST_CMAKE_FLAGS . \ + && make install) + touch jpegxl-stamp +} + function build_harfbuzz { if [ -e harfbuzz-stamp ]; then return; fi python3 -m pip install meson ninja @@ -335,6 +351,10 @@ function build { # On iOS, there's no vendor-provided raqm, and we can't ship it due to # licensing, so there's no point building harfbuzz. build_harfbuzz + + if [[ "$MB_ML_VER" != 2014 ]]; then + build_jpegxl + fi fi } diff --git a/checks/check_wheel.py b/checks/check_wheel.py index f716c8498..9d5574630 100644 --- a/checks/check_wheel.py +++ b/checks/check_wheel.py @@ -1,5 +1,6 @@ from __future__ import annotations +import os import platform import sys @@ -25,6 +26,8 @@ def test_wheel_modules() -> None: elif sys.platform == "ios": # tkinter is not available on iOS expected_modules.remove("tkinter") + elif os.environ.get("AUDITWHEEL_POLICY") != "manylinux2014": + expected_modules.add("jpegxl") assert set(features.get_supported_modules()) == expected_modules