Skip to content

ci: spec22-gems msys harness roots the toolchain bin at the msys mount - #114

Merged
ronaldtse merged 1 commit into
mainfrom
ci/spec22-msys-toolchain-root
Sep 22, 2026
Merged

ronaldtse merged 1 commit into
mainfrom
ci/spec22-msys-toolchain-root

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Why

The third arm64 dogfood (tebako-runtime-ruby run 35690023046) reached the gem-install leg with #112 + #113 in place and died there:

PROBE-PIPE path=…;D:\a\_temp\msys64\clangarm64\bin;C:\a\_temp\msys64\usr\bin;C:\Windows\System32
PROBE-PIPE host-tool make resolved=C:\a\_temp\msys64\usr\bin/make.exe
make: clang++: No such file or directory

The UCRT64_BIN default spelled the setup-msys2 install root as /d/a/_temp/msys64 — correct on the x64 runners (workspace on D:), wrong on windows-11-arm (workspace and toolcache on C:). The PATH carried a nonexistent D:\…\clangarm64\bin, so the runtime's recorded clang++ could not resolve and sassc's native ext failed with make error 127.

What

The default is now /<toolchain>/bin — POSIX spelling off the msys2 install-root mount. / is the install root in the msys2 shell, so the same spelling resolves on any runner drive layout, and it still rides the conv_envvar conversion into native spawns exactly as before. The variable keeps its name and its override contract; only the default changes.

Proof

  • Failing run's own log shows the mismatch: PATH with the nonexistent D: entry vs make resolving under C:\a\_temp\msys64.
  • bash -n clean; no other hardcoded install-root spellings remain (the one left is in the comment documenting this incident).
  • x64 behavior unchanged: /ucrt64/bin resolves to the same directory the old default spelled out on D:-drive runners.

The toolchain-bin default spelled the setup-msys2 install root as
/d/a/_temp/msys64 — true on the x64 runners, false on windows-11-arm,
whose workspace and toolcache live on C:. The third arm64 dogfood (run
35690023046) showed it exactly: the gem-install PATH carried
D:\a\_temp\msys64\clangarm64\bin (nonexistent) while make resolved
under C:\a\_temp\msys64\usr\bin, so mkmf's recorded clang++ went
ENOENT and sassc's objects died with make error 127.

The msys2 shell mounts its install root at /, so /<toolchain>/bin
resolves the same directory on any drive layout and still rides the
conv_envvar conversion into the native spawns. UCRT64_BIN keeps its
name and its override contract; only the default changes.
@ronaldtse
ronaldtse merged commit ea7a661 into main Sep 22, 2026
42 checks passed
@ronaldtse
ronaldtse deleted the ci/spec22-msys-toolchain-root branch September 22, 2026 06:52
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.

2 participants