From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../jpeg-xl/.github/workflows/conformance.yml | 185 +++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 third_party/jpeg-xl/.github/workflows/conformance.yml (limited to 'third_party/jpeg-xl/.github/workflows/conformance.yml') 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 -- cgit v1.2.3