From 1a223be7f788e160434f6e12d3a4f22f1438e7e3 Mon Sep 17 00:00:00 2001 From: Ostrzyciel Date: Tue, 6 Oct 2026 11:48:00 +0200 Subject: [PATCH 1/2] Upgrade Mac runners macOS 14 runners are being removed now. Upgraded the label to macOS 15. Also added a linker option to try and keep the compat level at macOS 14, let's see if it works. --- .github/workflows/aot-test.yml | 2 +- .github/workflows/publish.yml | 4 ++-- build.sbt | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/aot-test.yml b/.github/workflows/aot-test.yml index 6d8925e..40a21e6 100644 --- a/.github/workflows/aot-test.yml +++ b/.github/workflows/aot-test.yml @@ -11,7 +11,7 @@ jobs: matrix: # Only test on Mac and Ubuntu – these are the fastest platforms. # Windows and Linux ARM are built later after the PR is merged. - os: [macos-14, ubuntu-22.04] + os: [macos-15, ubuntu-22.04] steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index cec79b1..0c19af8 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -10,7 +10,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [macos-14, windows-2022, ubuntu-22.04, ubuntu-22.04-arm] + os: [macos-15, windows-2022, ubuntu-22.04, ubuntu-22.04-arm] steps: - uses: actions/checkout@v7 @@ -81,7 +81,7 @@ jobs: - name: Rename binaries run: | mv jelly-cli-assembly/jelly-cli.jar jelly-cli.jar - mv jelly-cli-macos-14/jelly-cli jelly-cli-mac-arm64 + mv jelly-cli-macos-15/jelly-cli jelly-cli-mac-arm64 mv jelly-cli-ubuntu-22.04/jelly-cli jelly-cli-linux-x86_64 mv jelly-cli-ubuntu-22.04-arm/jelly-cli jelly-cli-linux-arm64 mv jelly-cli-windows-2022/jelly-cli.exe jelly-cli-windows-x86_64.exe diff --git a/build.sbt b/build.sbt index a6945ca..a591ba2 100644 --- a/build.sbt +++ b/build.sbt @@ -48,6 +48,10 @@ lazy val graalOptions = Seq( // Include XML error messages // Issue: https://github.com/Jelly-RDF/cli/issues/217 "-H:IncludeResourceBundles=com.sun.org.apache.xerces.internal.impl.msg.XMLMessages", +) ++ ( + // Without this, the minimum macOS version is the one of the build machine. + if (scala.util.Properties.isMac) Seq("-H:NativeLinkerOption=-mmacosx-version-min=14.0") + else Seq() ) lazy val TestSerial = config("test-serial") extend Test From bae65d8f6d1ddae222367768ec62b9eca25b9d9e Mon Sep 17 00:00:00 2001 From: Ostrzyciel Date: Tue, 6 Oct 2026 11:59:32 +0200 Subject: [PATCH 2/2] Check the minimum macOS version of the native binary --- .github/workflows/aot-test.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/aot-test.yml b/.github/workflows/aot-test.yml index 40a21e6..9f82281 100644 --- a/.github/workflows/aot-test.yml +++ b/.github/workflows/aot-test.yml @@ -38,6 +38,13 @@ jobs: # sbt 2 nests build outputs under target/out//// mv target/out/jvm/scala-*/jelly-cli/graalvm-native-image/jelly-cli jelly-cli + # Make sure the binary still runs on macOS 14 (see graalOptions in build.sbt) + if [ "$RUNNER_OS" == "macOS" ]; then + otool -l jelly-cli | grep -A4 LC_BUILD_VERSION + otool -l jelly-cli | grep -A4 LC_BUILD_VERSION | grep -q "minos 14.0" \ + || exit 1 + fi + # See if it runs at all ./jelly-cli version || exit 1