heifsave: disable HBR support #1412
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request, workflow_dispatch] | |
permissions: {} | |
jobs: | |
CI: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- name: "Linux x64 (Ubuntu 22.04) - GCC 11" | |
os: ubuntu-22.04 | |
build: { cc: gcc, cxx: g++, linker: ld } | |
shell: bash | |
- name: "Linux x64 (Ubuntu 22.04) - Clang 15 with ASan and UBSan" | |
os: ubuntu-22.04 | |
build: { cc: clang-15, cxx: clang++-15, linker: ld.lld-15, sanitize: true } | |
shell: bash | |
- name: "macOS (13.6) - Xcode 15.2" | |
os: macos-13 | |
build: { cc: clang, cxx: clang++, linker: ld.lld } | |
shell: bash | |
# TODO: Re-enable self-hosted M1 runner provided by MacStadium | |
#- name: "macOS (10.15) - Xcode 12.4 - M1" | |
# os: macos-m1 | |
# build: { cc: clang, cxx: clang++, linker: ld.lld } | |
# shell: "/usr/bin/arch -arch arm64e /bin/bash -l {0}" | |
defaults: | |
run: | |
shell: ${{ matrix.shell }} | |
env: | |
CC: ${{ matrix.build.cc }} | |
CXX: ${{ matrix.build.cxx }} | |
LD: ${{ matrix.build.linker }} | |
CPPFLAGS: -Wall | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Update apt | |
if: runner.os == 'Linux' | |
run: sudo apt-get update -qq | |
- name: Install Ubuntu dependencies | |
if: runner.os == 'Linux' | |
run: | |
sudo apt-get install -fqq | |
meson | |
python3-pip python3-setuptools python3-wheel | |
libfftw3-dev libexif-dev libjpeg-turbo8-dev | |
libpng-dev libwebp-dev libtiff5-dev | |
libheif-dev libexpat1-dev libcfitsio-dev | |
libmatio-dev libnifti-dev libhwy-dev | |
liblcms2-dev libpoppler-glib-dev librsvg2-dev | |
libopenexr-dev libpango1.0-dev libarchive-dev | |
libopenslide-dev libffi-dev libopenjp2-7-dev | |
libimagequant-dev libcgif-dev | |
- name: Install macOS dependencies | |
if: runner.os == 'macOS' | |
run: | | |
brew install meson ninja fftw fontconfig glib libexif libarchive little-cms2 highway pango pkg-config | |
brew install cfitsio cgif jpeg-xl libheif libimagequant mozjpeg libmatio librsvg libspng libtiff openexr openjpeg openslide poppler webp | |
- name: Install Clang 15 | |
if: runner.os == 'Linux' && matrix.build.cc == 'clang-15' | |
run: | |
sudo apt-get install -fqq | |
clang-15 libomp-15-dev lld-15 llvm-15 | |
- name: Prepare macOS environment | |
if: runner.os == 'macOS' | |
run: | | |
echo "PKG_CONFIG_PATH=$(brew --prefix mozjpeg)/lib/pkgconfig:$(brew --prefix libarchive)/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV | |
- name: Prepare sanitizers | |
if: matrix.build.sanitize | |
env: | |
LLVM_PREFIX: /usr/lib/llvm-15 | |
run: | | |
ASAN_DSO=`$CC -print-file-name=libclang_rt.asan-x86_64.so` | |
echo "LDSHARED=$CC -shared" >> $GITHUB_ENV | |
echo "CPPFLAGS=-g -fsanitize=address,undefined -fno-omit-frame-pointer -fopenmp -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" >> $GITHUB_ENV | |
echo "LDFLAGS=-g -fsanitize=address,undefined -shared-libasan -fopenmp=libomp" >> $GITHUB_ENV | |
echo "ASAN_DSO=$ASAN_DSO" >> $GITHUB_ENV | |
# Glib is built without -fno-omit-frame-pointer. We need | |
# to disable the fast unwinder to get full stacktraces. | |
# FIXME: remove `intercept_tls_get_addr=0` once we update to LLVM 17 | |
# https://github.com/google/sanitizers/issues/1322 | |
# https://github.com/llvm/llvm-project/commit/b1bd52cd0d8627df1187448b8247a9c7a4675019 | |
echo "ASAN_OPTIONS=suppressions=${{ github.workspace }}/suppressions/asan.supp:fast_unwind_on_malloc=0:allocator_may_return_null=1:intercept_tls_get_addr=0" >> $GITHUB_ENV | |
echo "LSAN_OPTIONS=suppressions=${{ github.workspace }}/suppressions/lsan.supp:fast_unwind_on_malloc=0" >> $GITHUB_ENV | |
echo "TSAN_OPTIONS=suppressions=${{ github.workspace }}/suppressions/tsan.supp" >> $GITHUB_ENV | |
# Ensure UBSan issues causes the program to abort. | |
echo "UBSAN_OPTIONS=suppressions=${{ github.workspace }}/suppressions/ubsan.supp:halt_on_error=1:abort_on_error=1:print_stacktrace=1" >> $GITHUB_ENV | |
echo "LD_LIBRARY_PATH=$LLVM_PREFIX/lib:`dirname $ASAN_DSO`" >> $GITHUB_ENV | |
echo "$LLVM_PREFIX/bin" >> $GITHUB_PATH | |
# Workaround for https://github.com/google/sanitizers/issues/89 | |
# otherwise libIlmImf-2_3.so ends up as <unknown module>. | |
echo "DLCLOSE_PRELOAD=${{ github.workspace }}/dlclose.so" >> $GITHUB_ENV | |
echo -e '#include <stdio.h>\nint dlclose(void*handle){return 0;}' | $CC -shared -xc -odlclose.so - | |
- name: Configure libvips | |
run: | |
meson setup build | |
-Ddebug=true | |
-Ddeprecated=false | |
-Dmagick=disabled | |
|| (cat build/meson-logs/meson-log.txt && exit 1) | |
- name: Build libvips | |
run: ninja -C build | |
- name: Check libvips | |
run: ninja -C build test | |
- name: Install libvips | |
run: sudo ninja -C build install | |
- name: Rebuild the shared library cache | |
if: runner.os == 'Linux' | |
run: sudo ldconfig | |
- name: Install pyvips | |
run: pip3 install pyvips[test] | |
- name: Run test suite | |
env: | |
VIPS_LEAK: 1 | |
LD_PRELOAD: ${{ env.ASAN_DSO }} ${{ env.DLCLOSE_PRELOAD }} | |
run: python3 -m pytest -sv --log-cli-level=WARNING test/test-suite |