Skip to content

ci: key the windows target cache on the msvc toolset - #1863

Merged
thdxr merged 1 commit into
devfrom
ci-windows-cache-toolset
Nov 15, 2026
Merged

thdxr merged 1 commit into
devfrom
ci-windows-cache-toolset

Conversation

@thdxr

@thdxr thdxr commented Nov 15, 2026 •

Copy link
Copy Markdown
Member

windows-11-arm mixes image builds that install different msvc toolsets (14.51 and 14.52), and rust-cache caches target/, transcribe-cpp's static C++ objects included. a cache saved on the newer image and restored on the older one links 14.52-built transcribe.cpp.obj against 14.51's libcpmt.lib: LNK2019 unresolved external symbol __std_replace_2.

env-vars values are hashed into the cache key and into the restore-key, so naming the image build keeps a restored target/ from crossing toolset changes. ImageVersion is the variable these images actually set, and it moves with the toolset. INCLUDE/LIB are listed too for runners that export them; windows-11-arm doesn't, so on their own they hash nothing (first run below shows that).

evidence: runs 43737116521, 43738834115, 43657087210, 43639058668 all restore one entry onto image 20261101.203, whose outer link gets ...\VC\Tools\MSVC\14.52.37025\... LIBPATHs from the cached build while link.exe is 14.51.

after, on image 20261112.217: restore key v0-rust-arm64-Windows_NT-arm64-a3f94b7f (was v0-rust-arm64-Windows_NT-arm64-f67a6798), cold build, 2091 tests pass (run 43743679915).

— from 𝕺𝖕𝖊𝖓𝕮𝖔𝖉𝖊

@thdxr
thdxr force-pushed the ci-windows-cache-toolset branch from 350ac0a to 8dcc81f Compare November 15, 2026 17:53
@thdxr
thdxr merged commit 77b474d into dev Nov 15, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant