Skip to content

ci: move macOS runners to macos-15; pin libblst's minimum macOS - #115

Open
satran004 wants to merge 1 commit into
mainfrom
ci/macos-15-runners
Open

satran004 wants to merge 1 commit into
mainfrom
ci/macos-15-runners

Conversation

@satran004

Copy link
Copy Markdown
Member

Summary

GitHub is deprecating the macos-14 runner image. This moves every macOS job to macos-15:

Workflow Job
ci.yml Test (macos-arm64)
build-blst.yml mac/aarch64 libblst build
release.yml mac/aarch64 libblst build and test, on tags
ceremony-cli.yml macos-arm64 native CLI

zeroj-blst/BUILDING.md is updated to match.

Why build-blst.sh also changes

A dylib records the build host's macOS version as its minimum (LC_BUILD_VERSION minos) unless a deployment target is set. Built on macos-15, the released libblst.dylib would refuse to load on macOS 14, and ZeroJ would fall back to pure Java there.

build-blst.sh now exports MACOSX_DEPLOYMENT_TARGET=11.0 on macOS (overridable). 11.0 is the first macOS on Apple silicon. blst is plain C and assembly with no OS API dependency.

Checked locally (macOS 26.0.1, Apple silicon):

  • zeroj-blst/scripts/build-blst.sh built pinned blst v0.3.15 (6d960cd), and the dylib records minos 11.0 (SDK 26.2).
  • ./gradlew :zeroj-blst:test against that rebuilt library: 35 passed, 0 failed.
  • The rebuilt binary is not committed. The committed binaries are unchanged.

Not changed, and why

  • Ceremony CLI minimum macOS. GraalVM native-image ignores MACOSX_DEPLOYMENT_TARGET and stamps the binary with the build host's version. Verified locally: a hello-world image records the host's 26.0, with or without the variable. So the macos-arm64 CLI binary will need macOS 15 (today it needs 14); the fat jar still runs anywhere. Passing -H:NativeLinkerOption=-mmacosx-version-min=… lowers the stamp, but it is an experimental flag, and running on older macOS cannot be tested here, so it is left out.
  • The committed mac libblst.dylib (on main) records minos 26.0: it was built on a macOS 26 machine, not in CI. Builds that use the committed binary (not tag releases, which rebuild from source) cannot load blst on macOS 14 or 15. That is fixed by the normal refresh (BUILDING.md §3: run build-blst, commit libblst-all-platforms and the manifest) after this merges. It is not part of this PR.

Test plan

  • CI Test (macos-arm64) gets a macos-15 runner and passes
  • After merge: run the build-blst workflow; check otool -l libblst.dylib | grep minos shows 11.0 on the mac artifact

🤖 Generated with Claude Code

…um macOS

GitHub is deprecating the macos-14 image. The four macOS jobs (CI tests,
build-blst, the release libblst build and the ceremony CLI) now run on
macos-15.

build-blst.sh sets MACOSX_DEPLOYMENT_TARGET=11.0 (overridable) on macOS.
Without it, the dylib records the build host's macOS as its minimum, so a
library built on macos-15 would not load on macOS 14. Checked locally: the
rebuilt dylib records minos 11.0 and :zeroj-blst:test passes on it (35).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@satran004
satran004 requested a review from a team as a code owner October 29, 2026 17:24

Copy link
Copy Markdown

Initial automated review · Aster

Hi @satran004, thanks for the PR! 🙏 This is an automatic first check by an AI reviewer. It does not replace maintainer review and may be wrong.

Reviewed commit: cc79e12270012e5e51c3b8219b19d95b89b32197

No issues found in this first check.

Not tested: Code and workflows were read only; native builds, binary inspection, and older-macOS runtime checks were not run.

This branch has not been deployed

No deployments
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.

2 participants