fix(ci): fix Windows build and upgrade Lux + action dependencies - #63
Merged
Conversation
Windows build fixes (justfile, release-please.yml): - Pin Windows runner to windows-2022 (non-rolling, predictable) - Add explicit GITHUB_PATH step for Lux build-deps bin dir so luastatic is on PATH when lx exec spawns its subprocess - Prepend /ucrt64/bin to PATH inside compile recipe to ensure gcc is visible to luastatic's os.execute() call on MSYS2 - Add -D_WIN32_WINNT=0x0601 flag to build-system for Win32 API compat - Add -lwinmm -lws2_32 linker flags to compile for luasystem on Windows - Use just os() conditional to rename spin.exe -> roda.exe on Windows - Set CC=gcc explicitly in workflow Windows branch Dependency upgrades (all workflow files): - Lux CLI 0.28.0 -> 0.28.2 (includes Windows lib prefix fix in lux-lib) - actions/checkout v4.2.2 -> v6.0.2 (Node.js 24 compatible, 4 occurrences) - gh-actions-lux v1.0.0 -> v1.0.1 (initial Marketplace release) - msys2/setup-msys2 v2.24.1 -> v2.31.1 (Node.js 24 compatible) Resolves Node.js 20 deprecation warnings (forced cutover 2026-06-02)
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.
Summary
Fixes the failing Windows release artifact build (
Build Release Artifacts (windows-latest, windows-x86_64, windows)) and upgrades all pinned action dependencies to Node.js 24-compatible versions.Root Causes Fixed
The Windows build had three compounding failures:
luastaticnot on PATH —lx execspawns a subprocess that doesn't inherit the MSYS2 PATH, sogcc(called byluastaticviaos.execute()) was not found. Fixed by prepending/ucrt64/binto PATH inside thecompilerecipe and adding an explicitGITHUB_PATHstep in the workflow.spin.exenot renamed toroda.exe—luastaticproducesspin.exeon Windows, but the recipe unconditionally ranmv lua/spin roda. Fixed with ajustos()conditional.Missing Win32 compile flags —
luasystem'ssrc/core.crequires-D_WIN32_WINNT=0x0601for proper Win32 API header resolution under MinGW-w64 UCRT64, and the final link step needs-lwinmm -lws2_32. Both added.Changes
justfilebuild-system: Add-D_WIN32_WINNT=0x0601compile flag on Windowscompile: Prepend/ucrt64/binto PATH forlx execsubprocess; add-lwinmm -lws2_32linker flags on Windows; renamespin.exe→roda.exeon Windows viaos()conditional.github/workflows/release-please.ymlwindows-2022(non-rolling)GITHUB_PATHstep for Lux build-deps bin dir (Windows only)CC=gccexplicitly in Windows build branchactions/checkoutv4.2.2 → v6.0.2 (SHA pinned)msys2/setup-msys2v2.24.1 → v2.31.1 (SHA pinned)gh-actions-luxv1.0.0 → v1.0.1 (SHA pinned)0.28.0→0.28.2(includes Windows lib prefix fix).github/workflows/tests.yml+publish.ymlactions/checkoutv4.2.2 → v6.0.2 (SHA pinned, 3 occurrences)gh-actions-luxv1.0.0 → v1.0.1 (SHA pinned)0.28.0→0.28.2Dependency Upgrade Rationale
lux-lib: drop lib prefix on Windows)actions/checkoutgh-actions-luxmsys2/setup-msys2Testing
The Windows build job should now complete successfully. The Linux and macOS jobs are unaffected — the
os()conditionals in thejustfileevaluate to theelsebranch on those platforms, and the workflow PATH step is gated onmatrix.target == 'windows'.