name: Test on: push: branches: - master pull_request: concurrency: cancel-in-progress: ${{ forge.event_name == 'pull_request' }} jobs: run_fate: name: Fate (${{ matrix.runner }}, ${{ matrix.shared }}, ${{ matrix.bits }} bit) strategy: fail-fast: false matrix: runner: [linux-aarch64] shared: ['static'] bits: ['64'] include: - runner: linux-amd64 shared: 'static' bits: '32' - runner: linux-amd64 shared: 'shared' bits: '64' runs-on: ${{ matrix.runner }} steps: - name: Checkout uses: actions/checkout@v6 - name: Configure run: | ./configure --enable-gpl --enable-nonfree --enable-memory-poisoning --assert-level=2 \ $([ "${{ matrix.bits }}" != "32" ] || echo --arch=x86_32 --extra-cflags=-m32 --extra-cxxflags=-m32 --extra-ldflags=-m32) \ $([ "${{ matrix.shared }}" != "shared" ] || echo --enable-shared --disable-static) \ || CFGRES=$? cat ffbuild/config.log exit ${CFGRES:-0} - name: Build run: make -j$(nproc) - name: Restore Cached Fate-Suite id: cache uses: actions/cache/restore@v5 with: path: fate-suite key: fate-suite restore-keys: | fate-suite- - name: Sync Fate-Suite id: fate run: | make fate-rsync SAMPLES=$PWD/fate-suite echo "hash=$(find fate-suite -type f -printf "%P %s %T@\n" | sort | sha256sum | cut -d' ' -f1)" >> $FORGEJO_OUTPUT - name: Cache Fate-Suite uses: actions/cache/save@v5 if: ${{ format('fate-suite-{0}', steps.fate.outputs.hash) != steps.cache.outputs.cache-matched-key }} with: path: fate-suite key: fate-suite-${{ steps.fate.outputs.hash }} - name: Run Fate run: | LD_LIBRARY_PATH="$(printf "%s:" "$PWD"/lib*)$PWD" make fate fate-build SAMPLES="$PWD/fate-suite" -j$(nproc) || FATERES=$? find . -name "*.err" -exec printf '::group::%s\n' {} \; -exec cat {} \; -exec printf '::endgroup::\n' \; exit ${FATERES:-0} run_fate_full: name: Fate (Full, ${{ matrix.target_exec }}) strategy: fail-fast: false matrix: image: ['ghcr.io/btbn/ffmpeg-builds/win64-gpl:latest'] target_exec: ['wine'] runs-on: linux-amd64 container: ${{ matrix.image }} steps: - name: Checkout uses: actions/checkout@v6 - name: Configure run: | ./configure --pkg-config-flags="--static" $FFBUILD_TARGET_FLAGS $FF_CONFIGURE \ --cc="$CC" --cxx="$CXX" --ar="$AR" --ranlib="$RANLIB" --nm="$NM" \ --extra-cflags="$FF_CFLAGS" --extra-cxxflags="$FF_CXXFLAGS" \ --extra-libs="$FF_LIBS" --extra-ldflags="$FF_LDFLAGS" --extra-ldexeflags="$FF_LDEXEFLAGS" \ --enable-memory-poisoning --assert-level=2 --target-exec="${{ matrix.target_exec }}" \ --enable-hardcoded-tables \ || CFGRES=$? cat ffbuild/config.log exit ${CFGRES:-0} - name: Build run: make -j$(nproc) - name: Restore Cached Fate-Suite id: cache uses: actions/cache/restore@v5 with: path: fate-suite key: fate-suite restore-keys: | fate-suite- - name: Sync Fate-Suite id: fate run: | make fate-rsync SAMPLES=$PWD/fate-suite echo "hash=$(find fate-suite -type f -printf "%P %s %T@\n" | sort | sha256sum | cut -d' ' -f1)" >> $FORGEJO_OUTPUT - name: Cache Fate-Suite uses: actions/cache/save@v5 if: ${{ format('fate-suite-{0}', steps.fate.outputs.hash) != steps.cache.outputs.cache-matched-key }} with: path: fate-suite key: fate-suite-${{ steps.fate.outputs.hash }} - name: Run Fate run: | if [[ "${{ matrix.target_exec }}" == "wine" ]]; then export WINEDEBUG=-all export FREI0R_PATH="$(winepath -w "$FREI0R_PATH")" fi LD_LIBRARY_PATH="$(printf "%s:" "$PWD"/lib*)$PWD" make fate fate-build SAMPLES="$PWD/fate-suite" -j$(nproc) || FATERES=$? find . -name "*.err" -exec printf '::group::%s\n' {} \; -exec cat {} \; -exec printf '::endgroup::\n' \; exit ${FATERES:-0}