This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-java.git
The following commit(s) were added to refs/heads/main by this push:
new 55868214c GH-1305: [CI] Drop x86_64 macOS from JNI builds (#1306)
55868214c is described below
commit 55868214cd4b3c1f1e7294b5d74155ba8cceeaaf
Author: JB Onofré <[email protected]>
AuthorDate: Mon Sep 21 13:05:22 2026 +0200
GH-1305: [CI] Drop x86_64 macOS from JNI builds (#1306)
### Rationale for this change
Homebrew treats x86_64 macOS as a [tier 3
configuration](https://docs.brew.sh/Support-Tiers#tier-3) and rarely
builds bottles for it. `brew bundle` doesn't build from source, so the
`JNI macos-15-intel x86_64` job in the RC workflow aborts in `Install
dependencies` with `no bottle available!` before anything is compiled.
We've been patching this formula by formula:
* #1269 skipped `aws-sdk-cpp` and gRPC.
* #1270 skipped Node.js.
Any new dependency added to `apache/arrow`'s `cpp/Brewfile` can break
the job again the same way, and nightly RC runs go red on `main` when it
does. We can't keep this job green on a configuration Homebrew doesn't
support.
#1269 noted that dropping the `macos-15-intel` entry needed its own
discussion because it's user-facing. #1305 is that discussion.
### What changes are included in this PR?
`rc.yml`:
* Removed the `macos-15-intel` / `x86_64` entry from the `jni-macos`
matrix.
* `binaries` no longer extracts `jni-macos-x86_64.tar.gz` nor asserts
the four `jni/*/x86_64/*.dylib` files.
* Dropped the `/usr/local` `python@XXX --overwrite` conflict loop. Its
comment already said it could go once we dropped `macos-15-intel`, since
`macos-14` and later on arm64 use `/opt/homebrew`. `brew update` is
kept.
* Unwrapped the `pkg-config` uninstall from its `if [ "$(uname -m)" =
"arm64" ]` guard, which is now always true.
* Trimmed the tier-3 justification from the `HOMEBREW_BUNDLE_BREW_SKIP`
comment. The skip list itself is unchanged: `aws-sdk-cpp` and gRPC are
still skipped so the bundled static ones are used, and Node.js is still
skipped because the JNI build doesn't need it.
`test.yml`:
* Removed the `AMD64` / `macos-15-intel` entry from the `macos` test
matrix, leaving `AArch64` on `macos-latest`.
`ci/scripts/jni_macos_build.sh` is untouched, so building the JNI
libraries locally on an Intel Mac still works.
### Are these changes tested?
Yes, by CI. The remaining `JNI macos-14 aarch_64` job exercises the
changed `Install dependencies` step, and `binaries` exercises the
changed artifact extraction and verification.
### Are there any user-facing changes?
Yes. Release JARs no longer bundle x86_64 macOS `.dylib` files for
`arrow_cdata_jni`, `arrow_dataset_jni`, `arrow_orc_jni` and
`gandiva_jni`. Intel Mac users of those modules will need to build the
JNI libraries themselves. aarch64 macOS, x86_64 and aarch64 Linux, and
x86_64 Windows are unaffected.
Closes #1305.
---
.github/workflows/rc.yml | 46 ++++++----------------------------------------
.github/workflows/test.yml | 3 ---
2 files changed, 6 insertions(+), 43 deletions(-)
diff --git a/.github/workflows/rc.yml b/.github/workflows/rc.yml
index 34623b401..15d417725 100644
--- a/.github/workflows/rc.yml
+++ b/.github/workflows/rc.yml
@@ -162,7 +162,6 @@ jobs:
fail-fast: false
matrix:
platform:
- - { runs_on: macos-15-intel, arch: "x86_64"}
- { runs_on: macos-14, arch: "aarch_64" }
env:
MACOSX_DEPLOYMENT_TARGET: "14.0"
@@ -211,46 +210,19 @@ jobs:
# llvm@14 because llvm is newer than llvm@14.
brew uninstall llvm || :
- # We can remove this when we drop support for
- # macos-15-intel. because macos-14 or later with arm64 uses
/opt/homebrew/
- # not /usr/local/.
- #
- # Ensure updating python@XXX with the "--overwrite" option.
- # If python@XXX is updated without "--overwrite", it causes
- # a conflict error. Because Python 3 installed not by
- # Homebrew exists in /usr/local on GitHub Actions. If
- # Homebrew's python@XXX is updated without "--overwrite", it
- # tries to replace /usr/local/bin/2to3 and so on and causes
- # a conflict error.
brew update
- for python_package in $(brew list | grep python@ | sort -r); do
- brew install --overwrite ${python_package}
- done
- brew install --overwrite python3
- if [ "$(uname -m)" = "arm64" ]; then
- # pkg-config formula is deprecated but it's still installed
- # in GitHub Actions runner now. We can remove this once
- # pkg-config formula is removed from GitHub Actions runner.
- brew uninstall pkg-config || :
- brew uninstall [email protected] || :
- fi
+ # pkg-config formula is deprecated but it's still installed
+ # in GitHub Actions runner now. We can remove this once
+ # pkg-config formula is removed from GitHub Actions runner.
+ brew uninstall pkg-config || :
+ brew uninstall [email protected] || :
# We don't use Homebrew's aws-sdk-cpp and gRPC. See the
# "brew uninstall" calls below for details. So we don't install
# them instead of installing and uninstalling them.
#
- # This is also needed because Homebrew doesn't provide bottles
- # for them on x86_64 macOS. Homebrew treats x86_64 macOS as a
- # tier 3 configuration and rarely builds bottles for it:
- #
- # https://docs.brew.sh/Support-Tiers#tier-3
- #
- # "brew bundle" fails with "no bottle available!" without this
- # because it doesn't build them from source.
- #
- # We don't use Homebrew's Node.js too. Homebrew doesn't provide
- # a bottle for it on x86_64 macOS for the same reason.
+ # We don't need Homebrew's Node.js for the JNI build either.
HOMEBREW_BUNDLE_BREW_SKIP="aws-sdk-cpp grpc node" \
brew bundle --file=arrow/cpp/Brewfile
# We want to link aws-sdk-cpp statically but Homebrew's
@@ -388,7 +360,6 @@ jobs:
tar -xf apache-arrow-java-*.tar.gz --strip-components=1
tar -xvzf jni-linux-x86_64.tar.gz
tar -xvzf jni-linux-aarch_64.tar.gz
- tar -xvzf jni-macos-x86_64.tar.gz
tar -xvzf jni-macos-aarch_64.tar.gz
tar -xvzf jni-windows-x86_64.tar.gz
- name: Test that shared libraries exist
@@ -405,11 +376,6 @@ jobs:
test -f jni/arrow_orc_jni/aarch_64/libarrow_orc_jni.so
test -f jni/gandiva_jni/aarch_64/libgandiva_jni.so
- test -f jni/arrow_cdata_jni/x86_64/libarrow_cdata_jni.dylib
- test -f jni/arrow_dataset_jni/x86_64/libarrow_dataset_jni.dylib
- test -f jni/arrow_orc_jni/x86_64/libarrow_orc_jni.dylib
- test -f jni/gandiva_jni/x86_64/libgandiva_jni.dylib
-
test -f jni/arrow_cdata_jni/aarch_64/libarrow_cdata_jni.dylib
test -f jni/arrow_dataset_jni/aarch_64/libarrow_dataset_jni.dylib
test -f jni/arrow_orc_jni/aarch_64/libarrow_orc_jni.dylib
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 63384b5d3..b9cd01a77 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -87,9 +87,6 @@ jobs:
fail-fast: false
matrix:
include:
- - arch: AMD64
- jdk: 17
- macos: 15-intel
- arch: AArch64
jdk: 17
macos: latest