Skip to content

ci: fix the MSYS2 Windows job (UCRT64) and clear out workflow drift - #597

Merged
Sapd merged 5 commits into
masterfrom
ci/msys2-ucrt64-and-maintenance
Oct 20, 2026
Merged

Sapd merged 5 commits into
masterfrom
ci/msys2-ucrt64-and-maintenance

Conversation

@Sapd

@Sapd Sapd commented Oct 20, 2026

Copy link
Copy Markdown
Owner

Windows CI has been red on every push and PR since 2026-10-16. Fixes that, plus four pieces of drift found while auditing the other workflows.

The break

Setup MSYS2 fails before anything compiles:

error: target not found: mingw-w64-x86_64-hidapi

MSYS2 merged Drop mingw64 for some packages (MINGW-packages#32512) at 2026-10-16 11:30 UTC, which left hidapi at mingw_arch=('ucrt64' 'clang64' 'clangarm64'). The last green run was 2026-10-15 22:13 UTC and the first red one 2026-10-16 14:33 UTC — a three-hour window.

Nothing here could have prevented it: setup-msys2 re-downloads the repo databases every run, so the job always resolves against MSYS2's current repo state. Pacman package versions can't be pinned the way the actions are.

Switching to UCRT64 is the direction MSYS2 is moving — the msvcrt-based environments are being retired package by package, and gcc/cmake/ninja are on the same path.

Verified on a Windows box before pushing: configures against ucrt64/libhidapi.a, builds clean with GCC 16.1.0, both ctest tests pass.

[28/28] Linking CXX executable headsetcontrol_tests.exe
1/2 Test #1: integration_basic_run ............   Passed    0.21 sec
2/2 Test #2: unit_mock_devices ................   Passed    4.37 sec
100% tests passed out of 2

The rest

  • Drop the ubuntu-toolchain-r/test PPA. It publishes gcc-14, gcc-15 and amdgcn-tools for noble and no gcc-13 for any series. The gcc-13 being installed has always come from the Ubuntu archive. The gcc-13 pin itself stays — it is the floor CMakeLists.txt enforces.
  • Pin claude-code-action. The only unpinned action in a repo that SHA-pins everything else, and v1 is a rolling tag last moved on 2026-10-19.
  • Bump the vcpkg baseline from 2025.12.12 to the 2026.07.29 release, ten months newer.
  • Add Ubuntu 26.04 to the PPA matrix. resolute is Supported on Launchpad and meets the GCC 13+ rule the workflow already documents.

Worth a look after merge

The vcpkg bump touches the Windows release binary. continuos-release.yml exercises it on push to master, so the first run after merge is the real check.

The resolute PPA upload is untested — it only fires on a release tag, and the PPA has only ever published noble. fail-fast is already off, so a resolute failure can't take noble down with it.

Checked, no change needed

The ubuntu-latest → Ubuntu 26 migration that started 2026-10-19 does not break anything: gcc-13 is in the resolute archive (13.4.0) and the PPA serves a valid Release file for it. build-artifacts.yml pins ubuntu-22.04 deliberately and is insulated either way.

The bump-homebrew failure from 2026-08-27 is not a bug — two workflow_dispatch runs ten seconds apart during the 4.1.0 release, the second hit a brew timeout.

Sapd added 5 commits October 20, 2026 14:38
MSYS2 merged "Drop mingw64 for some packages" (MINGW-packages 5d003630a,
2026-10-16) which removed mingw64 from hidapi's mingw_arch, leaving it at
('ucrt64' 'clang64' 'clangarm64'). mingw-w64-x86_64-hidapi no longer exists
in any repo, so Setup MSYS2 fails with "target not found" before anything is
compiled. Every push and PR has been red since.

Package versions cannot be pinned the way the actions are: setup-msys2
re-downloads the repo databases on every run, so the job always resolves
against MSYS2's current repo state.

UCRT64 is where MSYS2 is heading -- the msvcrt-based environments are being
retired package by package, and gcc/cmake/ninja are on the same path. Verified
on a Windows box: configures against ucrt64/libhidapi.a, builds clean with
GCC 16.1.0, both ctest tests pass.
The PPA publishes gcc-14, gcc-15 and amdgcn-tools for noble and nothing at
all for gcc-13, for any series. The gcc-13 the job installs has always come
from the Ubuntu archive (13.3.0 on noble, 13.4.0 on resolute), so the
add-apt-repository call only added a network dependency and a failure mode.

Keeping the gcc-13 pin itself: it is the floor CMakeLists.txt enforces, so
CI should go on building with it.
Every other action in the repository is pinned to a SHA with the version in
a trailing comment; this one tracked the v1 tag. v1 is a rolling tag -- it
was last moved on 2026-10-19 -- so the workflow holding CLAUDE_CODE_OAUTH_TOKEN
was the one action that could change under us without a commit here.

Pinned to the commit v1 currently resolves to.
The pin was the 2025.12.12 release, ten months old. Moved to the newest
tagged vcpkg release rather than a branch tip, so the port versions stay
curated and reproducible.

Only hidapi and getopt are consumed, so the exposure is small, but this is
the Windows release binary -- worth watching the first run.
resolute (26.04 LTS) released in April and is Supported on Launchpad, so it
meets the GCC 13+ rule this workflow already documents -- it ships GCC 15 and
debian/control pins no compiler.

Untested: the PPA has only ever published noble, and this runs on a release
tag, so the first resolute upload happens at the next release. fail-fast is
already off, so a resolute failure cannot take noble down with it.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T12:43:02.149497Z — PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Sapd
Sapd merged commit 2a6e430 into master Oct 20, 2026
5 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