From 598f85a3053b6f46c9273f3bfe34d3555a278d8c Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 1 Mar 2026 09:07:12 -0500 Subject: [PATCH 1/3] ci(vcpkg): Add custom x86-windows triplet with VCPKG_DISABLE_COMPILER_TRACKING --- triplets/x86-windows.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 triplets/x86-windows.cmake diff --git a/triplets/x86-windows.cmake b/triplets/x86-windows.cmake new file mode 100644 index 0000000000..106900a72d --- /dev/null +++ b/triplets/x86-windows.cmake @@ -0,0 +1,9 @@ +# Include the default x86-windows triplet +set(VCPKG_TARGET_ARCHITECTURE x86) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +# Exclude compiler version from ABI hash so that weekly GitHub runner image +# updates don't invalidate the binary cache. Minor MSVC version bumps do not +# cause ABI incompatibilities for this project. +set(VCPKG_DISABLE_COMPILER_TRACKING ON) From 0c6a335a4d6e569cf69a4a10ba3b0086d524cf1f Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 1 Mar 2026 09:07:19 -0500 Subject: [PATCH 2/3] ci(vcpkg): Add VCPKG_OVERLAY_TRIPLETS to default-vcpkg CMake preset --- CMakePresets.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakePresets.json b/CMakePresets.json index 3b0a69e726..fb1da4c5cc 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -83,7 +83,8 @@ "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", "CMAKE_MSVC_DEBUG_INFORMATION_FORMAT": "$<$:Embedded>", "CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded$<$:Debug>DLL", - "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" + "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/triplets" } }, { From 7eb4dca217aa77ab0f41b51371b4be1fb298dba7 Mon Sep 17 00:00:00 2001 From: Bobby Battista Date: Sun, 1 Mar 2026 09:07:25 -0500 Subject: [PATCH 3/3] ci(vcpkg): Stabilize binary cache key by removing compiler tracking and bumping to v3 --- .github/workflows/build-toolchain.yml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-toolchain.yml b/.github/workflows/build-toolchain.yml index 6dcad70e0d..e7494c8473 100644 --- a/.github/workflows/build-toolchain.yml +++ b/.github/workflows/build-toolchain.yml @@ -112,20 +112,13 @@ jobs: run: | $baseline = (Get-Content vcpkg.json | ConvertFrom-Json)."builtin-baseline" - $msvc = $env:VCToolsVersion - if (-not $msvc) { $msvc = "unknown" } - - # Reduce churn: keep major.minor (e.g. 14.44) - $msvcMajorMinor = ($msvc -split '\.')[0..1] -join '.' - $triplet = "x86-windows" if ("${{ inputs.preset }}" -like "x64*") { $triplet = "x64-windows" } "baseline=$baseline" >> $env:GITHUB_OUTPUT - "msvc=$msvcMajorMinor" >> $env:GITHUB_OUTPUT "triplet=$triplet" >> $env:GITHUB_OUTPUT - Write-Host "vcpkg cache key parts: baseline=$baseline, msvc=$msvcMajorMinor, triplet=$triplet" + Write-Host "vcpkg cache key parts: baseline=$baseline, triplet=$triplet" - name: Restore vcpkg binary cache if: startsWith(inputs.preset, 'win32') @@ -133,10 +126,10 @@ jobs: uses: actions/cache/restore@v4 with: path: ${{ github.workspace }}\vcpkg-bincache - key: vcpkg-bincache-v2-${{ runner.os }}-msvc${{ steps.vcpkg_key.outputs.msvc }}-baseline${{ steps.vcpkg_key.outputs.baseline }}-${{ steps.vcpkg_key.outputs.triplet }} + key: vcpkg-bincache-v3-${{ runner.os }}-baseline${{ steps.vcpkg_key.outputs.baseline }}-${{ steps.vcpkg_key.outputs.triplet }}-${{ hashFiles('triplets/*.cmake') }} restore-keys: | - vcpkg-bincache-v2-${{ runner.os }}-msvc${{ steps.vcpkg_key.outputs.msvc }}-baseline${{ steps.vcpkg_key.outputs.baseline }}- - vcpkg-bincache-v2-${{ runner.os }}- + vcpkg-bincache-v3-${{ runner.os }}-baseline${{ steps.vcpkg_key.outputs.baseline }}- + vcpkg-bincache-v3-${{ runner.os }}- - name: Setup vcpkg uses: lukka/run-vcpkg@v11 @@ -157,6 +150,8 @@ jobs: "VCPKG_DEFAULT_BINARY_CACHE=$cacheDir" >> $env:GITHUB_ENV "VCPKG_BINARY_SOURCES=$env:VCPKG_BINARY_SOURCES" >> $env:GITHUB_ENV + "VCPKG_OVERLAY_TRIPLETS=${{ github.workspace }}\triplets" >> $env:GITHUB_ENV + "VCPKG_INSTALL_OPTIONS=--x-abi-tools-use-exact-versions" >> $env:GITHUB_ENV - name: Configure ${{ inputs.game }} with CMake Using ${{ inputs.preset }}${{ inputs.tools && '+t' || '' }}${{ inputs.extras && '+e' || '' }} Preset shell: pwsh @@ -186,7 +181,7 @@ jobs: uses: actions/cache/save@v4 with: path: ${{ github.workspace }}\vcpkg-bincache - key: vcpkg-bincache-v2-${{ runner.os }}-msvc${{ steps.vcpkg_key.outputs.msvc }}-baseline${{ steps.vcpkg_key.outputs.baseline }}-${{ steps.vcpkg_key.outputs.triplet }} + key: vcpkg-bincache-v3-${{ runner.os }}-baseline${{ steps.vcpkg_key.outputs.baseline }}-${{ steps.vcpkg_key.outputs.triplet }}-${{ hashFiles('triplets/*.cmake') }} - name: Collect ${{ inputs.game }} ${{ inputs.preset }}${{ inputs.tools && '+t' || '' }}${{ inputs.extras && '+e' || '' }} Artifact shell: pwsh