Update vcpkg to the 2026.07.29 release - #14525
Merged
Merged
Conversation
Rebase the fork-local patches onto microsoft/vcpkg tag 2026.07.29 (9e593bb18ea69cc5095e012465dcd675a822ed0d): drop /Z7 from the vcpkg Windows toolchain, and set CMAKE_POLICY_VERSION_MINIMUM for the x64-linux and x64-windows triplets. The previous submodule commit was based on upstream from January 2025, which pinned msys2-runtime-3.5.4-2. That distfile has been pruned from all MSYS2 mirrors, so any Windows build with a cold vcpkg binary cache failed with a 404 while rapidjson acquired pkgconf. The new base pins msys2-runtime-3.6.5-1, which is still hosted. The ports baseline in vcpkg-configuration.json is left unchanged.
The RHEL8 job pins its own older ports baseline in vcpkg-configuration-rhel8.json for Rocky Linux 8 compatibility. At that baseline arrow 18.1.0 passes -DCMAKE_SYSTEM_PROCESSOR=x64, which the updated linux toolchain reads as a cross build and answers with a nonexistent x64-linux-gnu-gcc. The January 2025 toolchain had no such inference, so the mismatch used to be harmless. Bump the vcpkg submodule to normalize the vcpkg triplet architecture to the GNU processor name before the cross-compilation check. The default baseline is unaffected: arrow 21.0.0 there no longer passes the flag, upstream having removed it in microsoft/vcpkg#47958.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the
ThirdParty/vcpkgsubmodule froma353d2c04ftodf31882c43, rebasing the fork-local patches onto microsoft/vcpkg tag 2026.07.29 (9e593bb18e) and adding one new patch for RHEL8.Why
The previous submodule commit sat on upstream from January 2025, which pins
msys2-runtime-3.5.4-2. MSYS2 prunes superseded package builds from its repos and that distfile is gone — every mirror returns 404. Any Windows build with a cold vcpkg binary cache therefore failed during configure, as soon as the first port needingpkgconfwas built:The call chain is
rapidjson/portfile.cmake→vcpkg_fixup_pkgconfig→vcpkg_find_acquire_program(PKGCONFIG)→vcpkg_acquire_msys.rapidjsonis only where it surfaced first; anything reachingvcpkg_acquire_msyswould have hit it. Linux and macOS are unaffected because they use the systempkg-config.A warm binary cache masked this — the affected ports were restored prebuilt and
vcpkg_acquire_msysnever ran. The cache key embeds the runner image version, so each new GitHub Windows image reintroduced the failure until a run happened to repopulate the cache from a branch that could read it.The new base pins
msys2-runtime-3.6.5-1, which is still hosted.RHEL8 fallout, fixed in the second commit
The newer toolchain broke the RHEL8 job, which pins its own older ports baseline in
vcpkg-configuration-rhel8.jsonfor Rocky Linux 8 compatibility (glibc 2.28, OpenSSL 1.1). At that baselinearrowis 18.1.0, and its portfile passes-DCMAKE_SYSTEM_PROCESSOR=${VCPKG_TARGET_ARCHITECTURE}— that isx64, vcpkg's triplet name, not the GNU namex86_64:The value is already in the cache when
scripts/toolchains/linux.cmakeruns, so its own non-FORCEset(CMAKE_SYSTEM_PROCESSOR x86_64 ...)cannot correct it. The cross-compilation check a few lines below then comparesx64against a host processor ofx86_64, treats the native build as a cross build, and pointsCMAKE_C_COMPILERand friends at ax64-linux-gnu-prefix that does not exist. The January 2025 toolchain carried no such inference, so the mismatch used to be harmless.The fourth fork patch normalizes the vcpkg architecture names to the GNU names ahead of that check. The default baseline never needed it:
arrowis 21.0.0 there and no longer passes the flag, upstream having removed it in microsoft/vcpkg#47958. Bumping the RHEL8 baseline past that commit (2025-10-27) would also fix it, but that is a nine-month jump for a baseline deliberately held back for old-system compatibility.Fork-local patches
All four live on
CeetronSolutions/vcpkgbranchno-debug-symbols-release-2026.07.29. The net diff against upstream is exactly:/Z7removed fromCMAKE_{C,CXX}_FLAGS_{DEBUG,RELEASE}inscripts/toolchains/windows.cmakeCMAKE_POLICY_VERSION_MINIMUM=3.5appended totriplets/x64-linux.cmakeCMAKE_POLICY_VERSION_MINIMUM=3.5appended totriplets/x64-windows.cmakescripts/toolchains/linux.cmakeTwo of the original commits conflicted on
scripts/toolchains/windows.cmake, which upstream has rewritten since. Resolved in favour of upstream's version with/Z7stripped. Upstream independently dropped/D_DEBUGfrom the debug flags, so that half of "Remove debug symbols from debug build" is now redundant and no longer appears in the diff.triplets/x64-windows.cmakealso conflicted because upstream addedset(VCPKG_PROVIDED_FORTRAN ON); both lines are kept.Scope
.gitmodulesstill points atCeetronSolutions/vcpkg, and the ports baseline invcpkg-configuration.jsonstays at84bab45d(2025-12-13) — this changes the vcpkg tool and itsscripts/, not the port set. That leaves a deliberate skew: ports from December 2025 built by scripts from July 2026. Bumping the baseline to match the release is a separate, much larger change.Verification
Bumping the submodule changes the vcpkg cache key, so every job ran cold and built all ports from source rather than restoring prebuilt ones. The Windows job reported
No cache foundand then reached the exact path that was failing:RHEL8 rebuilds all 101 ports on every run regardless, and
arrow18.1.0 now configures with the container's own compiler. Both fixes are therefore exercised against the failures that motivated them. The long build times on this run are the one-off cost of the cold caches.