.github/workflows: use macos-15 instead of macos-latest#483
Merged
hajimehoshi merged 1 commit intoJul 18, 2026
Conversation
macos-latest now points at macOS 26, where dyld refuses to run a binary that has no LC_UUID load command. The Go linker emits LC_UUID only since Go 1.24, so the tests with Go 1.20 through 1.23 fail to start on macOS 26. This branch supports Go 1.18 and later, so the affected Go versions cannot be dropped. Pin the runner to macOS 15 instead. Updates ebitengine#482 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Pins the macOS GitHub Actions runner to a stable version to keep the 0.10 branch CI matrix (Go 1.18–1.26) passing now that macos-latest has moved to macOS 26, where older Go toolchains can produce Mach-O binaries that dyld refuses to execute.
Changes:
- Switch the workflow matrix from
macos-latesttomacos-15. - Add inline documentation in the workflow explaining the dyld /
LC_UUIDincompatibility and referencing issue #482.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Member
Author
|
@TotallyGamerJet PTAL. The merge target is 0.10, not main |
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.
What issue is this addressing?
Updates #482
What type of issue is this addressing?
bug
What this PR does | solves
CI on this branch is red because GitHub's
macos-latestlabel has migrated to macOS 26. On macOS 26, dyld refuses to exec a Mach-O binary that has noLC_UUIDload command, so the test binaries abort beforemainruns:The Go linker emits
LC_UUIDonly when-Bis passed, and-B gobuildidbecame the default in Go 1.24 (cmd/link/internal/ld/main.go). Go 1.20 through 1.23 therefore produce binaries that macOS 26 will not start. CoreFoundation, pulled in by the cgo-enablednetpackage, is what triggers dyld's check, which is whyCGO_ENABLED=0passes andCGO_ENABLED=1fails within the same step.Measured on macOS 26.5 with this branch's tree:
LC_UUIDLC_BUILD_VERSIONCGO_ENABLED=1test binaryGo 1.18/1.19 survive only because their linker stamps an old SDK version in
LC_BUILD_VERSION, so dyld applies the pre-26 rules. That is incidental, not something to rely on.This branch supports Go 1.18 and later, so the affected Go versions cannot simply be dropped from the matrix. Pinning the runner to
macos-15keeps the full matrix working.macos-15is the arm64 image, the same architecturemacos-latestresolved to before and after the macOS 26 migration, so test coverage is unchanged.Notes for reviewers
mainneeds no equivalent change: all: drop support for Go 1.18 through 1.24 #469 reduced its matrix to Go 1.25+, all of which emitLC_UUIDby default. The same commit passed onmainand failed on this branch on the same day.-ldflags=-B=gobuildidon the macOS test commands works for Go 1.22/1.23, but Go 1.20/1.21 reject the flag (-B argument must start with 0x: gobuildid) and cannot emitLC_UUIDat all.macos-15can still provide.macos-15. Once that label is retired, the Go 1.20-1.23 macOS cells will have to be dropped rather than fixed.... on macos-latestto... on macos-15. This branch has no branch protection, so no required status check is pinned to the old names.Authored by Claude (Claude Code), on behalf of @hajimehoshi.