Skip to content

MINOR: Don't install Homebrew's Node.js for JNI macOS build - #1270

Merged
kou merged 1 commit into
apache:mainfrom
jbonofre:jni-macos-skip-node
Aug 31, 2026
Merged

kou merged 1 commit into
apache:mainfrom
jbonofre:jni-macos-skip-node

Conversation

@jbonofre

Copy link
Copy Markdown
Member

The JNI macos-15-intel x86_64 job currently fails on main and on every open PR while installing dependencies:

==> Installing node
Error: node: no bottle available!
This is a Tier 3 configuration:
  https://docs.brew.sh/Support-Tiers#tier-3
Installing node has failed!
`brew bundle` failed! 1 Brewfile dependency failed to install

apache/arrow's cpp/Brewfile lists brew "node", and Homebrew treats x86_64 macOS as a tier 3 configuration and no longer builds a bottle for it. brew bundle doesn't build from source, so the step aborts before anything is built.

We don't need Node.js for the JNI build, so this skips installing it via HOMEBREW_BUNDLE_BREW_SKIP, the same way #1269 did for aws-sdk-cpp and gRPC.

Failing runs for reference:

Homebrew doesn't provide a bottle for node on x86_64 macOS because
Homebrew treats x86_64 macOS as a tier 3 configuration. So "brew
bundle --file=arrow/cpp/Brewfile" fails with "node: no bottle
available!" and the "JNI macos-15-intel x86_64" job can't install
dependencies.

We don't need Node.js for the JNI build. So we skip installing it like
we already do for aws-sdk-cpp and gRPC.
@jbonofre jbonofre added the bug-fix PRs that fix a big. label Aug 30, 2026
@apache apache deleted a comment from github-actions Bot Aug 30, 2026
@github-actions github-actions Bot added this to the 20.0.0 milestone Aug 30, 2026
@jbonofre

Copy link
Copy Markdown
Member Author

@lidavidm @kou same story as the other PR 😄

@kou kou left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1

@kou
kou merged commit 4e8faf7 into apache:main Aug 31, 2026
23 of 25 checks passed
kou pushed a commit that referenced this pull request Sep 21, 2026
### 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug-fix PRs that fix a big.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants