Build standalone binaries for macOS and Windows in release CI - #61
Build standalone binaries for macOS and Windows in release CI#61SVAGEN26 wants to merge 3 commits into
Conversation
The existing release only ships a Linux x64 binary, so downstream consumers (e.g. OMEdit's CMake bundling) have no way to fetch a binary on other platforms without building from source. Co-Authored-By: JKRT <jtinnerholm@gmail.com> Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CRJK9NcghcYVowHN5tf4sj
50b4c3c to
0aef360
Compare
Andreas asked that the mac/Windows binaries be built continuously to spot platform-specific breakage early, instead of first surfacing at release time. Drop the tag-only guard from build-binaries so it runs on push to main and on pull requests. The release job still gates on refs/tags/, so publishing behaviour is unchanged. Refs OpenModelica#61 Co-Authored-By: JKRT <jtinnerholm@gmail.com> Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.com>
|
Addressed in 9971c77: dropped the |
The Windows build-binaries matrix (now running on every push after 9971c77) fails at [3/4] with: Error: spawnSync ...\node_modules\.bin\postject ENOENT On Windows npm creates postject.cmd (and .ps1) in node_modules/.bin, not a bare "postject" file, so execFileSync of the bare name cannot find it. Resolve postject's JS entry via require.resolve and invoke node on it directly; this bypasses the .bin shim entirely and works uniformly on Linux, macOS, and Windows. Verified locally: the SEA build produces a 95 MB standalone binary on Linux with the new invocation and starts up (LSP refuses without a --stdio/--node-ipc mode, as expected). Refs OpenModelica#61 Co-Authored-By: JKRT <jtinnerholm@gmail.com> Co-Authored-By: JKRT_CLAUDE <247156613+SVAGEN26@users.noreply.github.com> Co-Authored-By: Claude <noreply@anthropic.com>
|
As predicted — dropping the tag gate immediately caught a real Windows build failure: Fixed in 746c224 by resolving |
This is a Claude Code agent acting on behalf of @JKRT.
Summary
Addresses AnHeuermann's review comment on OpenModelica/OpenModelica#15925 asking for a real release of
modelica-language-serverso OMEdit's CMake bundling can download platform-specific binaries instead of relying on a local build.Today
.github/workflows/test.ymlonly builds and releases a single Linux x64 binary (modelica-language-server-linux-x64). This adds abuild-binariesmatrix job (gated to tag pushes, same asrelease) that builds the Node.js SEA standalone binary on:macos-latest(arm64) →modelica-language-server-macos-arm64macos-13(x64) →modelica-language-server-macos-x64windows-latest(x64) →modelica-language-server-windows-x64.exeEach is uploaded as a build artifact and then attached to the GitHub release alongside the existing Linux binary,
.vsix, npm tarball, and WASM files.Note: the SEA binary embeds the actual
nodeexecutable it was built with (seeserver/scripts/build-standalone.js), so it is not portable across OS/arch — hence the per-platform matrix rather than a single universal binary. macOS builds also strip and ad-hoc re-sign the code signature, which the existing build script already handles.Test plan
build-binariesruns and all four platform binaries attach to the GitHub release.