Skip to content

MINOR: Don't install Homebrew's aws-sdk-cpp and gRPC for JNI macOS build - #1269

Open
jbonofre wants to merge 1 commit into
apache:mainfrom
jbonofre:jni-macos-brew-skip
Open

MINOR: Don't install Homebrew's aws-sdk-cpp and gRPC for JNI macOS build#1269
jbonofre wants to merge 1 commit into
apache:mainfrom
jbonofre:jni-macos-brew-skip

Conversation

@jbonofre

Copy link
Copy Markdown
Member

Rationale for this change

The JNI macos-15-intel x86_64 job in the RC workflow fails in Install dependencies, before anything is built:

##[error]aws-sdk-cpp: no bottle available!
##[error]grpc: no bottle available!
This is a Tier 3 configuration:
  https://docs.brew.sh/Support-Tiers#tier-3
`brew bundle` failed! 2 Brewfile dependencies failed to install

Homebrew treats x86_64 macOS as a tier 3 configuration and rarely publishes bottles for it. brew bundle doesn't build from source, so arrow/cpp/Brewfile can no longer be installed as-is there.

This breaks main too, not just PRs, so nightly RC runs are red.

What changes are included in this PR?

We don't use Homebrew's aws-sdk-cpp and gRPC anyway:

  • The JNI macOS build uses the ninja-release-jni-macos preset, which sets ARROW_DEPENDENCY_USE_SHARED=OFF.
  • Homebrew provides only shared libraries for aws-sdk-cpp and gRPC.
  • So both are uninstalled just after brew bundle to ensure the bundled ones are used.

We skip installing them with HOMEBREW_BUNDLE_BREW_SKIP instead of installing and uninstalling them. This also makes the macos-14 aarch_64 job a bit faster because it no longer installs two formulae it immediately removes.

brew uninstall aws-sdk-cpp needs || : now because it's no longer installed by brew bundle. It's still called because it may be pre-installed on GitHub Actions runner images.

Note that this keeps building the x86_64 macOS shared libraries. Dropping the macos-15-intel entry would remove .dylib files for x86_64 macOS from our release JARs, which needs a separate discussion.

Are these changes tested?

Yes, by CI. The JNI macos-15-intel x86_64 and JNI macos-14 aarch_64 jobs in this PR exercise the changed step.

Are there any user-facing changes?

No.

The "JNI macos-15-intel x86_64" job fails in "Install dependencies":

    ##[error]aws-sdk-cpp: no bottle available!
    ##[error]grpc: no bottle available!
    `brew bundle` failed! 2 Brewfile dependencies failed to install

Homebrew treats x86_64 macOS as a tier 3 configuration and rarely
publishes bottles for it. "brew bundle" doesn't build from source, so
arrow/cpp/Brewfile can no longer be installed as-is.

We don't use Homebrew's aws-sdk-cpp and gRPC anyway. The JNI build uses
ARROW_DEPENDENCY_USE_SHARED=OFF and Homebrew provides only shared
libraries for them, so we uninstall both just after "brew bundle". We
skip installing them with HOMEBREW_BUNDLE_BREW_SKIP instead of
installing and uninstalling them.

"brew uninstall aws-sdk-cpp" needs "|| :" now because it's no longer
installed by "brew bundle". It's still called because it may be
pre-installed on GitHub Actions runner images.
@jbonofre jbonofre added the chore PRs that make misc changes. label Aug 28, 2026
@github-actions github-actions Bot added this to the 20.0.0 milestone Aug 28, 2026
@jbonofre

Copy link
Copy Markdown
Member Author

@lidavidm this PR is about a CI failure I observed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore PRs that make misc changes.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants