Skip to content

Commit abc72f5

Browse files
committed
tmp(ci): probe the three windows images for the loader and the STL, together
TEMPORARY — delete once the windows image question is settled. #385 pinned the windows leg to `windows-2022` because `windows-latest` (= windows-2025-vs2026, MSVC STL 14.51) cannot compile `huxerui.huxerui`: clang instantiates MSVC STL's vectorized `std::find` for a 24-byte type and hits `static_assert(false, "unexpected size")` (mcpp-community/mcpp#609). The pin worked and cost three members. `vulkan`, `eui-neo-vulkan` and `vulkan-hpp-module` now fail at RUN time with 0xC0000135 (STATUS_DLL_NOT_FOUND) — they compile fine. The Vulkan loader is not a Windows component; it arrives with a GPU driver or the SDK, so whether an image carries `vulkan-1.dll` is a property of the image. So the pin is a TRADE: one compile failure removed, three load failures created. `windows-2025` was never tried, and it is the obvious candidate — old enough to miss 14.51's vectorized find, new enough to plausibly carry the loader. This asks all three images both questions at once: * does `vulkan-1.dll` exist (the vulkan members' failure), and * does `huxerui-module` compile (huxerui's failure) `continue-on-error` on both so every image reports a full row instead of stopping at its first red, and the image inventory is printed BEFORE any build so the answer is visible even if the builds behave unexpectedly. A separate FILE, not a change to validate.yml, and that is the point: validate.yml's `paths:` names only itself, so adding this selects no members and the run is two members on three images instead of the full matrix. Nothing here is meant to merge.
1 parent 18dfa0b commit abc72f5

1 file changed

Lines changed: 107 additions & 0 deletions

File tree

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# TEMPORARY — delete once the windows image question is settled.
2+
#
3+
# mcpplibs/mcpp-index#385 pinned the windows leg to `windows-2022` because
4+
# `windows-latest` (= windows-2025-vs2026, MSVC STL 14.51) cannot compile
5+
# `huxerui.huxerui`: clang instantiates MSVC STL's vectorized `std::find` for a
6+
# 24-byte type and hits `static_assert(false, "unexpected size")`
7+
# (mcpp-community/mcpp#609).
8+
#
9+
# The pin worked and cost three members: `vulkan`, `eui-neo-vulkan` and
10+
# `vulkan-hpp-module` now fail at RUN time with 0xC0000135
11+
# (STATUS_DLL_NOT_FOUND). The Vulkan loader is not a Windows component -- it
12+
# arrives with a GPU driver or the SDK -- so whether an image carries
13+
# `vulkan-1.dll` is a property of the image, and 2022 apparently does not.
14+
#
15+
# `windows-2025` was never tried. If its STL is old enough to compile huxerui
16+
# and its image new enough to carry the loader, it settles both.
17+
#
18+
# This workflow answers that in one run instead of a 50-minute full matrix. It
19+
# is a separate FILE on purpose: validate.yml's `paths:` names only itself, so
20+
# adding this triggers no member selection.
21+
name: tmp-windows-image-probe
22+
23+
on:
24+
workflow_dispatch:
25+
pull_request:
26+
paths: [".github/workflows/tmp-windows-image-probe.yml"]
27+
28+
env:
29+
MCPP_VERSION: "2026.9.11.2"
30+
31+
jobs:
32+
probe:
33+
strategy:
34+
fail-fast: false
35+
matrix:
36+
image: [windows-2022, windows-2025, windows-latest]
37+
runs-on: ${{ matrix.image }}
38+
name: probe (${{ matrix.image }})
39+
steps:
40+
- uses: actions/checkout@v4
41+
42+
# The whole question, asked directly, before any build can muddy it.
43+
- name: What is on this image
44+
shell: pwsh
45+
run: |
46+
Write-Host "label : ${{ matrix.image }}"
47+
Write-Host "ImageOS : $env:ImageOS"
48+
Write-Host "ImageVersion : $env:ImageVersion"
49+
Write-Host ""
50+
Write-Host "--- Vulkan loader (the vulkan members' failure) ---"
51+
foreach ($p in @("$env:SystemRoot\System32\vulkan-1.dll",
52+
"$env:SystemRoot\SysWOW64\vulkan-1.dll")) {
53+
if (Test-Path $p) {
54+
$v = (Get-Item $p).VersionInfo.FileVersion
55+
Write-Host " PRESENT $p ($v)"
56+
} else {
57+
Write-Host " absent $p"
58+
}
59+
}
60+
Write-Host ""
61+
Write-Host "--- MSVC toolsets (huxerui's failure) ---"
62+
Get-ChildItem "C:\Program Files*\Microsoft Visual Studio\*\*\VC\Tools\MSVC\*" -Directory -EA SilentlyContinue |
63+
ForEach-Object { Write-Host " $($_.FullName)" }
64+
65+
- name: Download mcpp
66+
shell: bash
67+
env:
68+
MCPP_ARCHIVE: mcpp-${{ env.MCPP_VERSION }}-windows-x86_64.zip
69+
MCPP_ROOT: mcpp-${{ env.MCPP_VERSION }}-windows-x86_64
70+
run: |
71+
curl -L -fsS -o "$MCPP_ARCHIVE" \
72+
"https://github.com/mcpp-community/mcpp/releases/download/v${MCPP_VERSION}/${MCPP_ARCHIVE}"
73+
powershell -NoProfile -Command "Expand-Archive -Force -Path '${MCPP_ARCHIVE}' -DestinationPath '.'"
74+
root="$PWD/$MCPP_ROOT"
75+
mkdir -p "$HOME/.mcpp/registry"
76+
cp -a "$root/registry/." "$HOME/.mcpp/registry/"
77+
echo "MCPP_HOME=$HOME/.mcpp" >> "$GITHUB_ENV"
78+
echo "MCPP=$(cygpath -m "$root/bin/mcpp.exe")" >> "$GITHUB_ENV"
79+
80+
# Both members, both allowed to fail, so every image reports a full row
81+
# rather than stopping at the first red.
82+
- name: huxerui-module (the compile question)
83+
id: hux
84+
continue-on-error: true
85+
shell: bash
86+
env:
87+
MCPP_INDEX_MIRROR: GLOBAL
88+
run: |
89+
"$MCPP" test -p huxerui-module
90+
91+
- name: vulkan (the loader question)
92+
id: vk
93+
continue-on-error: true
94+
shell: bash
95+
env:
96+
MCPP_INDEX_MIRROR: GLOBAL
97+
run: |
98+
"$MCPP" test -p vulkan
99+
100+
- name: Row
101+
shell: bash
102+
run: |
103+
echo "=============================================="
104+
echo " image ${{ matrix.image }}"
105+
echo " huxerui-module ${{ steps.hux.outcome }}"
106+
echo " vulkan ${{ steps.vk.outcome }}"
107+
echo "=============================================="

0 commit comments

Comments
 (0)