Add macOS support + bundle gomc-rest v1.6.0 - #11
Merged
Conversation
Upstream changes (v1.4.0 -> v1.5.0): Apache 2.0 relicense, close PLC connection on error. No CLI/env/endpoint changes affecting this wrapper. gomc-rest-client's minimum supported server stays v1.4.0, so v1.5.0 is within range; no client pin change needed. Verified against the actual v1.5.0 release assets: - amd64 binary: sha256 matches upstream checksums.txt, still dynamically linked requiring GLIBC_2.34 (manylinux_2_34_x86_64 tag unchanged). - arm64 binary: sha256 matches, still statically linked (manylinux2014_aarch64 tag unchanged). - Ran the full test suite against the real v1.5.0 binary: 5 passed. - launch() confirms the running server reports version v1.5.0. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SQbVkPEprK2ebcjck5ouUy
gomc-rest v1.5.0 is the first release to ship darwin binaries. Wire them up the same way as the other platforms: - _binaries.py: map darwin/amd64 and darwin/arm64 to their binary names. - vendor_binaries.py: add both to the asset list (checksums for v1.5.0 were already committed in the previous PR). - release.yml: build wheels on real macos-13 (Intel) / macos-14 (Apple Silicon) runners, tagged macosx_12_0_x86_64 / macosx_12_0_arm64 — both binaries declare a minimum OS of macOS 12 via LC_BUILD_VERSION. - ci.yml: new test-macos job actually runs launch() on both real macOS runners on every PR. This is the authoritative check: the amd64 binary is unsigned and arm64 is only ad-hoc signed, and Gatekeeper/quarantine behavior can't be fully predicted by inspecting the binary offline. - binaries/README.md, README.md, README_JP.md, RELEASING.md: updated to reflect macOS as a supported launch() platform, not just a sdist/ connect()-only fallback. Verified (offline, this sandbox has no macOS to execute on): - Both darwin binaries' SHA-256 match the checksums.txt already committed for v1.5.0. - Parsed Mach-O load commands directly: both are arm64/x86_64 PIE executables, LC_BUILD_VERSION minos=12.0.0, arm64 carries LC_CODE_SIGNATURE (ad-hoc), amd64 does not. - Platform-resolution logic exercised locally (mocked platform.system/ machine) resolves darwin/arm64 correctly and sets the executable bit. - Existing Linux test suite still passes: 5 passed. Real launch() execution on macOS is unverified until the test-macos CI job runs on this PR's actual macOS runners — that result is the real signal, not this offline analysis. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SQbVkPEprK2ebcjck5ouUy
The Intel macOS runner (macos-13) sat queued for 24h on the previous CI run and was auto-cancelled — GitHub's free Intel macOS runners aren't reliably schedulable here, and the release's amd64-mac wheel job used the same runner, so a real release could hang the same way. A wheel only zips a pre-built binary and has its platform tag forced by 'wheel tags', so the build host's OS/arch doesn't matter. Cross-build every wheel on one ubuntu-latest runner (same approach as upstream gomc-rest, which cross-compiles all platforms from Linux). This also drops the previous dependence on windows-latest and ubuntu-24.04-arm. CI keeps a real macOS execution check on macos-14 (Apple Silicon), which is schedulable and covers the ad-hoc-signed arm64 binary. The Intel binary stays verified offline only (SHA-256 + Mach-O inspection). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SQbVkPEprK2ebcjck5ouUy
v1.5.0 was never published, so jump straight to v1.6.0 (persist state transition logs without info flood). Drop-in: verified the v1.6.0 release assets — linux-amd64 still needs GLIBC_2.34, darwin-arm64 still minos 12.0 + ad-hoc signed, so no wheel-tag changes. Client minimum stays v1.4.0, so no dependency change. - GOMC_REST_VERSION -> v1.6.0 - checksums/v1.5.0.sha256 -> checksums/v1.6.0.sha256 (SHA-256 of every v1.6.0 release asset, verified against upstream checksums.txt) - README/README_JP bundled-version note -> v1.6.0 Verified: launch() reports server version v1.6.0; 5 tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SQbVkPEprK2ebcjck5ouUy
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
Adds macOS (
launch()) support and, since it was stacked on the v1.5.0 bump which was never published, tracks v1.6.0 directly. Supersedes #10 — close #10 in favor of this.macOS support
_binaries.py/vendor_binaries.py: map+vendorgomc-rest-darwin-amd64/gomc-rest-darwin-arm64.release.yml: macOS wheels taggedmacosx_12_0_x86_64/macosx_12_0_arm64(both binaries declare min OS 12 viaLC_BUILD_VERSION).ci.yml:test-macosruns the real suite (incl.launch()) onmacos-14(Apple Silicon).Robust cross-build (resolves the earlier macos-13 24h-queue hang)
ubuntu-latestrunner — a wheel just zips a pre-built binary andwheel tagsforces the platform tag, so the build host's OS/arch is irrelevant (same approach as upstream gomc-rest cross-compiling from Linux). Removes dependence on scarce Windows/arm/Intel-macOS runners.Bundle v1.6.0
GOMC_REST_VERSION→ v1.6.0;checksums/v1.6.0.sha256(verified against upstreamchecksums.txt).Verified locally
launch()reports server version v1.6.0; all 5 tests pass.test-macos(macos-14) result as the authoritative macOSlaunch()check.🤖 Generated with Claude Code