summaryrefslogtreecommitdiffstats
path: root/third_party/jpeg-xl/.github/workflows/conformance.yml
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /third_party/jpeg-xl/.github/workflows/conformance.yml
parentInitial commit. (diff)
downloadthunderbird-upstream.tar.xz
thunderbird-upstream.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--third_party/jpeg-xl/.github/workflows/conformance.yml185
1 files changed, 185 insertions, 0 deletions
diff --git a/third_party/jpeg-xl/.github/workflows/conformance.yml b/third_party/jpeg-xl/.github/workflows/conformance.yml
new file mode 100644
index 0000000000..9c85878f98
--- /dev/null
+++ b/third_party/jpeg-xl/.github/workflows/conformance.yml
@@ -0,0 +1,185 @@
+# Copyright (c) the JPEG XL Project Authors. All rights reserved.
+#
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# Workflow for running conformance tests.
+
+name: Conformance
+on:
+ push:
+ branches:
+ - main
+ - v*.*.x
+ pull_request:
+ types: [opened, reopened, labeled, synchronize]
+
+env:
+ LIBJXL_VERSION: 0.8.0
+ LIBJXL_ABI_VERSION: 0.8
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
+
+jobs:
+ warmup: # If necessary, fetch files just once, before tests are run.
+ name: Warmup caches
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout the conformance source
+ uses: actions/checkout@v2
+ with:
+ repository: libjxl/conformance
+ # TODO(eustas): move ref to a global variable / file?
+ ref: 43d8135b50e53167ee6fee0b842b9eb15cfc4aa2
+ path: conformance
+ - name: Cache
+ uses: actions/cache@v2
+ with:
+ path: ${{ github.workspace }}/conformance/.objects
+ key: conformance-refs
+ - name: Download and link conformance files
+ run: |
+ ${{ github.workspace }}/conformance/scripts/download_and_symlink.sh
+
+ build:
+ name: Conformance Build ${{ matrix.name }}
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - name: AVX3
+ cflags: -DHWY_DISABLED_TARGETS=HWY_AVX3-1
+ - name: AVX2
+ cflags: -DHWY_DISABLED_TARGETS=HWY_AVX2-1
+ - name: SSE4
+ cflags: -DHWY_DISABLED_TARGETS=HWY_SSE4-1
+ - name: SSSE3
+ cflags: -DHWY_DISABLED_TARGETS=HWY_SSSE3-1
+ - name: EMU128
+ cflags: -DHWY_COMPILE_ONLY_EMU128=1
+ - name: SCALAR
+ cflags: -DHWY_COMPILE_ONLY_SCALAR=1
+ - name: SCALAR_ASAN
+ cflags: -DHWY_COMPILE_ONLY_SCALAR=1
+ build_type: asan
+ env:
+ CCACHE_DIR: ${{ github.workspace }}/.ccache
+ steps:
+ - name: Install build deps
+ run: |
+ sudo apt update
+ sudo apt install -y \
+ ccache \
+ clang-7 \
+ cmake \
+ doxygen \
+ libbenchmark-dev \
+ libbenchmark-tools \
+ libbrotli-dev \
+ libgdk-pixbuf2.0-dev \
+ libgif-dev \
+ libgtest-dev \
+ libgtk2.0-dev \
+ libjpeg-dev \
+ libopenexr-dev \
+ libpng-dev \
+ libwebp-dev \
+ ninja-build \
+ pkg-config \
+ xvfb \
+ ${{ matrix.apt_pkgs }} \
+ #
+ echo "CC=clang-7" >> $GITHUB_ENV
+ echo "CXX=clang++-7" >> $GITHUB_ENV
+ - name: Checkout the jxl source
+ uses: actions/checkout@v2
+ with:
+ submodules: true
+ fetch-depth: 2
+ - name: Git environment
+ id: git-env
+ run: |
+ echo "::set-output name=parent::$(git rev-parse ${{ github.sha }}^)"
+ shell: bash
+ - name: ccache
+ uses: actions/cache@v2
+ with:
+ path: ${{ env.CCACHE_DIR }}
+ # When the cache hits the key it is not updated, so if this is a rebuild
+ # of the same Pull Request it will reuse the cache if still around. For
+ # either Pull Requests or new pushes to main, this will use the parent
+ # hash as the starting point from the restore-keys entry.
+ key: conformance-${{ runner.os }}-${{ github.sha }}-${{ matrix.name }}
+ restore-keys: |
+ conformance-${{ runner.os }}-${{ steps.git-env.outputs.parent }}-${{ matrix.name }}
+ - name: Build
+ run: |
+ mkdir -p ${CCACHE_DIR}
+ echo "max_size = 200M" > ${CCACHE_DIR}/ccache.conf
+ CMAKE_FLAGS="${{ matrix.cflags }}" \
+ ./ci.sh ${{ matrix.build_type || 'release' }} -DJPEGXL_FORCE_SYSTEM_BROTLI=ON \
+ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
+ -DBUILD_TESTING=OFF
+ # Flatten the artifacts directory structure
+ cp tools/conformance/conformance.py build/tools/conformance
+ cp tools/conformance/lcms2.py build/tools/conformance
+ cp build/tools/djxl build/tools/conformance
+ cp build/libjxl.so.${{ env.LIBJXL_VERSION }} build/tools/conformance
+ cp build/libjxl_threads.so.${{ env.LIBJXL_VERSION }} build/tools/conformance
+ env:
+ SKIP_TEST: 1
+ - uses: actions/upload-artifact@v2
+ with:
+ name: conformance_binary-${{ matrix.name }}
+ path: |
+ build/tools/conformance/conformance.py
+ build/tools/conformance/lcms2.py
+ build/tools/conformance/djxl
+ build/tools/conformance/libjxl.so.${{ env.LIBJXL_VERSION }}
+ build/tools/conformance/libjxl_threads.so.${{ env.LIBJXL_VERSION }}
+ - name: ccache stats
+ run: ccache --show-stats
+
+ run:
+ name: Conformance Test ${{ matrix.name }} on ${{ matrix.target }}
+ needs: [warmup, build]
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ name: [main_level5, main_level10]
+ target: [AVX3, AVX2, SSE4, SSSE3, EMU128, SCALAR, SCALAR_ASAN]
+ steps:
+ - name: Install deps
+ run: |
+ pip install numpy
+ - name: Checkout the conformance source
+ uses: actions/checkout@v2
+ with:
+ repository: libjxl/conformance
+ ref: 43d8135b50e53167ee6fee0b842b9eb15cfc4aa2
+ path: conformance
+ - name: Cache
+ uses: actions/cache@v2
+ with:
+ path: ${{ github.workspace }}/conformance/.objects
+ key: conformance-refs
+ - name: Download and link conformance files
+ run: |
+ ${{ github.workspace }}/conformance/scripts/download_and_symlink.sh
+ - uses: actions/download-artifact@v2
+ with:
+ name: conformance_binary-${{ matrix.target }}
+ - name: Run conformance tests
+ run: |
+ chmod +x djxl
+ ln -s libjxl.so.${{ env.LIBJXL_VERSION }} libjxl.so.${{ env.LIBJXL_ABI_VERSION }}
+ ln -s libjxl_threads.so.${{ env.LIBJXL_VERSION }} libjxl_threads.so.${{ env.LIBJXL_ABI_VERSION }}
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`
+ python conformance.py \
+ --decoder=`pwd`/djxl \
+ --corpus=`pwd`/conformance/testcases/${{ matrix.name }}.txt