From 6cc7d848a16a8004acf7dd44e0a698e9c9621498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 13 Oct 2026 10:07:16 +0200 Subject: [PATCH 1/8] CI: Run the tests in the build jobs that build them The test job needed the whole build matrix, so it only started once the slowest build was done, though it only used three of its artifacts. Running the tests right after those three builds also saves the artifact download and a second round of package installs. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/build.yml | 70 ++++++++----------------------------- 1 file changed, 15 insertions(+), 55 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eef05126ad..35a7477d2c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -515,70 +515,30 @@ jobs: as well as the [downloads section](https://ppsspp.org/downloads.html) for other platforms. - test: - strategy: - fail-fast: false - matrix: - os: [ubuntu-26.04, ubuntu-26.04-arm, macos-latest] - - runs-on: ${{ matrix.os }} - needs: build - timeout-minutes: 30 - steps: - - uses: actions/checkout@v7 - with: - submodules: false - - - name: Fetch tests - working-directory: ${{ env.GITHUB_WORKSPACE }} - # Doing this to avoid ffmpeg and other large submodules. - run: git submodule update --init pspautotests frametests - - - name: Install Linux dependencies - if: runner.os == 'Linux' - run: | - sudo apt-get update -y -qq - sudo apt-get install libsdl3-dev libgl1-mesa-dev libglu1-mesa-dev libsdl3-ttf-dev libfontconfig1-dev libcurl4-openssl-dev - - - name: Install macOS dependencies - if: runner.os == 'macOS' - run: brew install sdl3 sdl3_ttf - - - name: Download build - uses: actions/download-artifact@v8 - with: - name: ${{ matrix.os }} build - path: ppsspp/ - - # Not sure where it's ending up, but test.py can't find it... - - name: Fix headless permissions - working-directory: ${{ env.GITHUB_WORKSPACE }} - run: | - cp `find . -name PPSSPPHeadless` . - chmod +x PPSSPPHeadless - cp `find . -name PPSSPPUnitTest` . - chmod +x PPSSPPUnitTest - + # The test entries run the tests right here. A job of their own could only wait for the whole + # build matrix, which held them back until the slowest unrelated build was done. These come + # last, so the artifacts and releases above don't depend on them, as before. - name: Execute unit tests - working-directory: ${{ env.GITHUB_WORKSPACE }} - run: ./PPSSPPUnitTest ALL + if: matrix.extra == 'test' + timeout-minutes: 30 + run: build/PPSSPPUnitTest ALL - name: Execute headless tests - if: runner.os != 'Linux' - working-directory: ${{ env.GITHUB_WORKSPACE }} - run: python test.py -g --graphics=software + if: matrix.extra == 'test' && runner.os != 'Linux' + timeout-minutes: 30 + run: python3 test.py -g --graphics=software # The Linux runners carry the CPU backend coverage, on both x86-64 and arm64. Elsewhere the # default (JIT) is enough - the backends are shared code, and four runs everywhere adds up. # test.py picks a wall clock to match the backend, so the slower ones don't time out. - name: Execute headless tests (all CPU backends) - if: runner.os == 'Linux' - working-directory: ${{ env.GITHUB_WORKSPACE }} + if: matrix.extra == 'test' && runner.os == 'Linux' + timeout-minutes: 30 run: | fail=0 for cpu in jit jit-ir ir interpreter; do echo "::group::CPU backend: $cpu" - python test.py -g --graphics=software --cpu=$cpu || fail=1 + python3 test.py -g --graphics=software --cpu=$cpu || fail=1 echo "::endgroup::" done exit $fail @@ -587,13 +547,13 @@ jobs: # 23 of the 30 dumps differ there, one of them by an MSE of 100. That's a real difference and # worth chasing, but it predates the arm64 runner - it just never had a CI job to show up in. - name: Execute frametests - if: matrix.os == 'ubuntu-26.04' - working-directory: ${{ env.GITHUB_WORKSPACE }} + if: matrix.id == 'clang-normal' + timeout-minutes: 30 run: python3 frametests.py frametests/frametests.json --out-mode=failures - name: Upload frametest report uses: actions/upload-artifact@v7 - if: matrix.os == 'ubuntu-26.04' && always() + if: matrix.id == 'clang-normal' && always() with: name: frametest-report path: frametests/out/ From 3ad5657ff46baa4a847b2e7d299c6aba3db750e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 13 Oct 2026 10:10:11 +0200 Subject: [PATCH 2/8] CI: Only save ccache on master, cap the AppImage one The Actions cache was full (10 GB), mostly with caches saved by PR runs that only that PR could restore, and the AppImage ccache had no size limit. Master's got evicted, so even master builds found no cache and hit 0.3% of the time. PRs still restore master's. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/appimage.yml | 12 +++++++++++- .github/workflows/build.yml | 6 ++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index 9496b35925..f9a426e6d2 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -42,6 +42,8 @@ jobs: container: ghcr.io/pkgforge-dev/archlinux:latest env: CCACHE_DIR: ${{ github.workspace }}/.ccache + # Unlimited, a cache once reached 1.2 GB. + CCACHE_MAXSIZE: 500M CCACHE_COMPILERCHECK: content CCACHE_SLOPPINESS: time_macros steps: @@ -68,8 +70,9 @@ jobs: git remote add upstream https://github.com/hrydgard/ppsspp.git # fetching from official repo as a fallback git fetch --deepen=15000 --no-recurse-submodules --tags --force upstream || exit 0 + # Only master saves the cache (see build.yml), so restoring and saving are separate. - name: Set up ccache for ${{ matrix.id }} - uses: actions/cache@v6.1.0 + uses: actions/cache/restore@v6.1.0 with: path: ${{ env.CCACHE_DIR }} key: ${{ runner.os }}-ccache-${{ matrix.id }}-${{ github.sha }} @@ -170,6 +173,13 @@ jobs: popd ccache -s -v + - name: Save ccache for ${{ matrix.id }} + if: github.ref == 'refs/heads/master' + uses: actions/cache/save@v6.1.0 + with: + path: ${{ env.CCACHE_DIR }} + key: ${{ runner.os }}-ccache-${{ matrix.id }}-${{ github.sha }} + - name: Create AppImage shell: bash run: | diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 35a7477d2c..602830d69f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -395,6 +395,9 @@ jobs: if: matrix.id != 'macos' with: key: ${{ matrix.id }} + # Only master saves. The Actions cache holds 10 GB, and PR runs filled it with caches + # only that PR could use, evicting master's, which every run restores from. + save: ${{ github.ref == 'refs/heads/master' }} - name: Execute build env: @@ -578,6 +581,9 @@ jobs: - name: Setup ccache uses: hendrikmuhs/ccache-action@f09c25b45002a07be2955cbe52e8cee55643f89d # v1.2.24 + with: + # See the other ccache setup. + save: ${{ github.ref == 'refs/heads/master' }} - name: Compile ffmpeg run: | From 39321af8472fefdc28f2731533059a0eec532e1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 13 Oct 2026 10:10:12 +0200 Subject: [PATCH 3/8] CI: Cancel a PR's running builds when it gets a new push Co-Authored-By: Claude Opus 5.5 --- .github/workflows/appimage.yml | 6 ++++++ .github/workflows/build.yml | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index f9a426e6d2..a37af77373 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -21,6 +21,12 @@ on: - '.{editorconfig,gitattributes,gitignore}' - 'appveyor.yml' +# A new push to a PR makes its running build pointless, so cancel it and free the runners. +# Master and tags build every push. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + env: SDL_AUDIODRIVER: "dummy" #"disk" #SDL_VIDEODRIVER: "dummy" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 602830d69f..8efba6d138 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,6 +22,12 @@ on: - '.{editorconfig,gitattributes,gitignore}' - 'appveyor.yml' +# A new push to a PR makes its running build pointless, so cancel it and free the runners. +# Master and tags build every push. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + env: BUILD_CONFIGURATION: Release From 5866231f661670be2eb2f169e446a603d0a41383 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 13 Oct 2026 10:32:40 +0200 Subject: [PATCH 4/8] CI: Cache the FFmpeg that the Alpine job builds Keyed on the FFmpeg submodule, its build script and the Alpine release. Saves the 3.3 minutes it took to compile it every run. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/build.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8efba6d138..bf40db0a91 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -591,10 +591,33 @@ jobs: # See the other ccache setup. save: ${{ github.ref == 'refs/heads/master' }} + # The prebuilt Linux FFmpeg is linked against glibc, so this builds it for musl, into the same + # folder. That takes a few minutes, so the result is cached until FFmpeg, its build script + # or Alpine changes. + - name: FFmpeg cache key + id: ffmpeg-key + run: | + echo "key=alpine-ffmpeg-$(cat /etc/alpine-release)-$(git rev-parse HEAD:ffmpeg)-$(sha1sum ffmpeg/linux_x86-64.sh | cut -c1-12)" >> $GITHUB_OUTPUT + + - name: Restore FFmpeg + id: ffmpeg-cache + uses: actions/cache/restore@v6.1.0 + with: + path: ffmpeg/linux/x86_64 + key: ${{ steps.ffmpeg-key.outputs.key }} + - name: Compile ffmpeg + if: steps.ffmpeg-cache.outputs.cache-hit != 'true' run: | cd ffmpeg && ./linux_x86-64.sh + - name: Save FFmpeg + if: steps.ffmpeg-cache.outputs.cache-hit != 'true' && github.ref == 'refs/heads/master' + uses: actions/cache/save@v6.1.0 + with: + path: ffmpeg/linux/x86_64 + key: ${{ steps.ffmpeg-key.outputs.key }} + - name: Build for testing run: | ./b.sh --headless --unittest From 11d16ece2d8da49d45a6d962c025f9b6de18f8eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 13 Oct 2026 10:35:21 +0200 Subject: [PATCH 5/8] CI: Build the iOS and tvOS libretro cores in one job Only five macOS jobs run at once, and with six, one waited about ten minutes for a runner. The two builds take under five minutes each, a separate job mostly added another checkout. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/build.yml | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bf40db0a91..8fbf9025f6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -325,18 +325,13 @@ jobs: cxx: clang++ args: ./b-tvos.sh id: tvos + # One job for both, since only five macOS jobs run at once and the rest wait in line. - os: macos-latest - extra: libretro_ios + extra: libretro_ios_tvos cc: clang cxx: clang++ - args: ./b.sh --ios --libretro - id: ios-libretro - - os: macos-latest - extra: libretro_tvos - cc: clang - cxx: clang++ - args: ./b.sh --tvos --libretro - id: tvos-libretro + args: ./b.sh --ios --libretro && ./b.sh --tvos --libretro + id: ios-tvos-libretro runs-on: ${{ matrix.os }} steps: From 4bdfb8604cd22288e43df9cabf3b6f0d995b6b80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 13 Oct 2026 10:47:22 +0200 Subject: [PATCH 6/8] CI: Only check out the FFmpeg libraries each build uses FFmpeg has prebuilt libraries for every platform, 1.5 GB, and every job checked all of it out, taking 2-3 minutes. checkout-submodules.sh fetches the other submodules as before, and FFmpeg as a partial clone with a sparse checkout of the given folders, plus the source headers since some builds have the ffmpeg folder on the include path. A Linux x86-64 build gets 67 MB. Alpine, which builds FFmpeg itself, gets the sources and none of the libraries. Co-Authored-By: Claude Opus 5.5 --- .github/checkout-submodules.sh | 27 +++++++++++++++++ .github/workflows/appimage.yml | 9 +++++- .github/workflows/build.yml | 53 +++++++++++++++++++++++++++------- 3 files changed, 78 insertions(+), 11 deletions(-) create mode 100755 .github/checkout-submodules.sh diff --git a/.github/checkout-submodules.sh b/.github/checkout-submodules.sh new file mode 100755 index 0000000000..859b5a4c23 --- /dev/null +++ b/.github/checkout-submodules.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# Checks out the submodules like actions/checkout's "submodules: recursive" does, except that of +# FFmpeg, which holds prebuilt libraries for every platform (1.5 GB), only the given paths are +# fetched. They're sparse checkout patterns relative to ffmpeg/, like /linux/x86_64/. The source +# tree's headers always come along, since some builds have the ffmpeg folder on the include path. +# +# Run from the repository root, after a checkout without submodules: +# .github/checkout-submodules.sh /linux/x86_64/ + +set -e + +# On Windows, keep Git Bash from turning the patterns into Windows paths on the way to git.exe. +export MSYS_NO_PATHCONV=1 +export MSYS2_ARG_CONV_EXCL='*' + +others=$(git config -f .gitmodules --get-regexp '^submodule\..*\.path$' | awk '$2 != "ffmpeg" {print $2}') +git submodule update --init --recursive --depth 1 --jobs 8 -- $others + +# A partial clone, so only the blobs the sparse checkout needs get downloaded. +sha=$(git rev-parse HEAD:ffmpeg) +url=$(git config -f .gitmodules submodule.ffmpeg.url) +git -C ffmpeg init -q +git -C ffmpeg remote add origin "$url" +git -C ffmpeg sparse-checkout set --no-cone '/*.h' '/lib*/**/*.h' "$@" +git -C ffmpeg fetch -q --depth 1 --filter=blob:none origin "$sha" +git -C ffmpeg checkout -q FETCH_HEAD +du -sh ffmpeg diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index a37af77373..eebf0eae41 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -59,7 +59,6 @@ jobs: - uses: actions/checkout@v7 with: fetch-depth: 0 - submodules: recursive - name: Check Valid Version Tags id: valid-tags @@ -76,6 +75,14 @@ jobs: git remote add upstream https://github.com/hrydgard/ppsspp.git # fetching from official repo as a fallback git fetch --deepen=15000 --no-recurse-submodules --tags --force upstream || exit 0 + # Only the FFmpeg libraries this build uses. See the script. + - name: Check out submodules + shell: bash + run: | + # The container runs as another user than the one that owns the checkout. + git config --global --add safe.directory '*' + .github/checkout-submodules.sh /linux/${{ matrix.id }}/ + # Only master saves the cache (see build.yml), so restoring and saving are separate. - name: Set up ccache for ${{ matrix.id }} uses: actions/cache/restore@v6.1.0 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8fbf9025f6..d4b5bcb074 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,8 +41,11 @@ jobs: runs-on: windows-latest steps: - uses: actions/checkout@v7 - with: - submodules: recursive + + # Only the FFmpeg libraries this build uses. See the script. + - name: Check out submodules + shell: bash + run: .github/checkout-submodules.sh ${{ matrix.platform == 'x64' && '/Windows/x86_64/' || '/Windows/aarch64/' }} /WindowsInclude/ - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3.0.0 @@ -128,8 +131,11 @@ jobs: runs-on: windows-latest steps: - uses: actions/checkout@v7 - with: - submodules: recursive + + # Only the FFmpeg libraries this build uses. See the script. + - name: Check out submodules + shell: bash + run: .github/checkout-submodules.sh /Windows10/x64/ /WindowsInclude/ - name: Add MSBuild to PATH uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3.0.0 @@ -163,8 +169,11 @@ jobs: timeout-minutes: 90 steps: - uses: actions/checkout@v7 - with: - submodules: recursive + + # Only the FFmpeg libraries this build uses. See the script. + - name: Check out submodules + shell: bash + run: .github/checkout-submodules.sh /Windows/${{ matrix.arch == 'x64' && 'x86_64' || 'x86' }}/ # Needs a real MSYS2 (make, bash, cygpath) - the one preinstalled on the runner image isn't on # PATH and has no make. path-type: inherit keeps the Windows PATH, which the Makefile needs for @@ -228,11 +237,13 @@ jobs: cxx: clang++ args: ./b.sh --headless --unittest id: clang-normal + ffmpeg: /linux/x86_64/ - os: ubuntu-26.04 cc: gcc cxx: g++ args: ./b.sh --headless --unittest id: gcc-normal + ffmpeg: /linux/x86_64/ # Gives the headless tests an arm64 host to run the CPU backends on - the arm64 JIT is a # different backend from the x86-64 one, and nothing else in the matrix tests it on Linux. @@ -242,6 +253,7 @@ jobs: cxx: clang++ args: ./b.sh --headless --unittest id: clang-arm64 + ffmpeg: /linux/aarch64/ - os: ubuntu-26.04 extra: android @@ -249,30 +261,35 @@ jobs: cxx: clang++ args: cd android && ./ab.sh APP_ABI=arm64-v8a UNITTEST=1 HEADLESS=1 id: android-arm64 + ffmpeg: /android/arm64/ - os: ubuntu-26.04 extra: android cc: clang cxx: clang++ args: cd android && ./ab.sh APP_ABI=armeabi-v7a UNITTEST=1 HEADLESS=1 id: android-arm32 + ffmpeg: /android/armv7/ - os: ubuntu-26.04 extra: android cc: clang cxx: clang++ args: cd android && ./ab.sh APP_ABI=x86_64 UNITTEST=1 HEADLESS=1 id: android-x86_64 + ffmpeg: /android/x86_64/ - os: ubuntu-26.04 extra: android cc: clang cxx: clang++ args: cd android && ./ab.sh APP_ABI=arm64-v8a OPENXR=1 id: android-vr + ffmpeg: /android/arm64/ - os: ubuntu-26.04 extra: android cc: clang cxx: clang++ args: ./b.sh --libretro_android ppsspp_libretro id: android-libretro + ffmpeg: /android/ - os: ubuntu-26.04 extra: libretro @@ -280,12 +297,14 @@ jobs: cxx: g++ args: make -C libretro -f Makefile -j2 id: gcc-libretro + ffmpeg: /linux/x86_64/ - os: ubuntu-26.04 extra: libretro cc: clang cxx: clang++ args: make -C libretro -f Makefile -j2 id: clang-libretro + ffmpeg: /linux/x86_64/ - os: ubuntu-26.04 extra: loongarch64 @@ -293,6 +312,7 @@ jobs: cxx: g++ args: ./b.sh --loongarch64 --unittest PPSSPPHeadless PPSSPPUnitTest id: loongarch64 + ffmpeg: /linux/loongarch64/ - os: ubuntu-26.04 extra: riscv64 @@ -300,6 +320,7 @@ jobs: cxx: g++ args: ./b.sh --riscv64 --unittest PPSSPPHeadless PPSSPPUnitTest id: riscv64 + ffmpeg: /linux/riscv64/ - os: macos-latest extra: test @@ -307,24 +328,28 @@ jobs: cxx: clang++ args: ./b.sh --headless --unittest --no-png id: macos + ffmpeg: /macosx/universal/ - os: macos-latest extra: libretro_mac cc: clang cxx: clang++ args: ./b.sh --libretro id: macos-libretro + ffmpeg: /macosx/universal/ - os: macos-latest extra: ios cc: clang cxx: clang++ args: ./b-ios.sh id: ios + ffmpeg: /ios/universal/ - os: macos-latest extra: tvos cc: clang cxx: clang++ args: ./b-tvos.sh id: tvos + ffmpeg: /tvos/arm64/ # One job for both, since only five macOS jobs run at once and the rest wait in line. - os: macos-latest extra: libretro_ios_tvos @@ -332,12 +357,16 @@ jobs: cxx: clang++ args: ./b.sh --ios --libretro && ./b.sh --tvos --libretro id: ios-tvos-libretro + ffmpeg: /ios/universal/ /tvos/arm64/ runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v7 - with: - submodules: recursive + + # Only the FFmpeg libraries this build uses. See the script. + - name: Check out submodules + shell: bash + run: .github/checkout-submodules.sh ${{ matrix.ffmpeg }} - name: Fetch tags for macOS releases if: runner.os == 'macOS' @@ -573,13 +602,17 @@ jobs: apk add build-base wget git bash cmake python3 glu-dev sdl3-dev sdl3_ttf-dev curl-dev - uses: actions/checkout@v7 - with: - submodules: recursive + - name: Fix git detected dubious ownership in repository run: | chown -R $(id -u):$(id -g) $PWD + # The FFmpeg sources, which this builds, without the prebuilt libraries. See the script. + - name: Check out submodules + run: | + .github/checkout-submodules.sh '/*' '!/Windows/' '!/Windows10/' '!/WindowsInclude/' '!/android/' '!/blackberry/' '!/ios/' '!/linux/' '!/macosx/' '!/symbian/' '!/tvos/' '!/wiiu/' + - name: Setup ccache uses: hendrikmuhs/ccache-action@f09c25b45002a07be2955cbe52e8cee55643f89d # v1.2.24 with: From 39f4d64abc7a1d8cc1a8e20b5095cc16b61841dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 13 Oct 2026 10:48:50 +0200 Subject: [PATCH 7/8] CI: Suppress the MINGW64/MINGW32 deprecation warnings Only make and bash come from MSYS2 in the libretro Windows builds, the compiler is MSVC. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d4b5bcb074..13833e1481 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -184,6 +184,9 @@ jobs: msystem: ${{ matrix.msystem }} path-type: inherit install: make + # Deprecated in favour of UCRT64/CLANG64, but only make and bash come from MSYS2 here, + # the compiler is MSVC. + suppress-deprecation-warnings: msystem-mingw64 msystem-mingw32 # The Makefile can locate Visual Studio by itself, but only through "cmd //c bash VSWhere.sh", # which depends on COMSPEC and ProgramFiles(x86) surviving into the MSYS2 shell. Resolving it From fd79fb00076e76bca3a1650cb61fcf0b2515dfab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Tue, 13 Oct 2026 10:51:24 +0200 Subject: [PATCH 8/8] Revert "CI: Cancel a PR's running builds when it gets a new push" Cancelled runs show as failures on their commits, and PRs rarely get pushed to often enough for it to pay off. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/appimage.yml | 6 ------ .github/workflows/build.yml | 6 ------ 2 files changed, 12 deletions(-) diff --git a/.github/workflows/appimage.yml b/.github/workflows/appimage.yml index eebf0eae41..0d6f097ad1 100644 --- a/.github/workflows/appimage.yml +++ b/.github/workflows/appimage.yml @@ -21,12 +21,6 @@ on: - '.{editorconfig,gitattributes,gitignore}' - 'appveyor.yml' -# A new push to a PR makes its running build pointless, so cancel it and free the runners. -# Master and tags build every push. -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - env: SDL_AUDIODRIVER: "dummy" #"disk" #SDL_VIDEODRIVER: "dummy" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 13833e1481..1056fc85f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,12 +22,6 @@ on: - '.{editorconfig,gitattributes,gitignore}' - 'appveyor.yml' -# A new push to a PR makes its running build pointless, so cancel it and free the runners. -# Master and tags build every push. -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - env: BUILD_CONFIGURATION: Release