GH-49435: [CI][Python] Fix macOS protobuf@33 keg-only discovery#49491
GH-49435: [CI][Python] Fix macOS protobuf@33 keg-only discovery#49491tadeja wants to merge 8 commits intoapache:mainfrom
Conversation
|
AMD64 macOS 15-intel Python 3 and ARM64 macOS 14 Python 3 both successfully completed with the protobuf@33 change. Now attempting similar change for |
|
@raulcd, @rok what do you say about this PR? it can be moved into existing draft #49436 if you'd prefer.
|
|
Will users building for source need to use keg only? Should we update docs? |
kou
left a comment
There was a problem hiding this comment.
+1
This is a workaround. We should remove @33 eventually after the gRPC problem is fixed.
See also:
- https://github.com/Homebrew/homebrew-core/blob/8b55249c502449f0c5a4c667d52af8eb7cd34010/Formula/g/grpc.rb#L37C30-L37C71
- grpc/grpc#41755
Could you add a comment when we can remove this workaround?
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
|
Ruby job is failing anew (no changes here except for newline) I see homebrew merged this last night so grpc changed "protobuf@33" to "protobuf" and is on version 34.0 now;
As it appears grpc formula now depends on protobuf (v34), grpc_cpp_plugin generates v34 incompatible code that can't compile against protobuf@33 headers |
|
( Unrelated issue of Windows test segfault is being worked on in #49462. ) |
|
@raulcd what are your thoughts on the next steps here? - CI jobs are passing again today, also for ARM64 macOS 14 GLib & Ruby (pull_request) |
|
|
||
| # protobuf@33 is keg-only, so make it visible to CMake and pkg-config. | ||
| # Remove this workaround after the gRPC problem is fixed. | ||
| # See https://github.com/grpc/grpc/issues/41755 | ||
| export PROTOBUF_PREFIX="$(brew --prefix protobuf@33)" | ||
| echo "PKG_CONFIG_PATH=${PROTOBUF_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}" >> "$GITHUB_ENV" | ||
| echo "CMAKE_PREFIX_PATH=${PROTOBUF_PREFIX}:${ARROW_HOME}:${CMAKE_PREFIX_PATH}" >> "$GITHUB_ENV" | ||
| echo "${PROTOBUF_PREFIX}/bin" >> "$GITHUB_PATH" |
There was a problem hiding this comment.
Can we use brew update workaround instead of this?
We can remove the brew update once GitHub Actions runner ships new Homebrew by default.
Rationale for this change
Homebrew upgrading protobuf beyond v33 (as described in #49435) also causes new runtime Bus error.
What changes are included in this PR?
a) Pin
protobuf@33incpp/Brewfile(as discussed in #49436)b) Add keg-only env setup in
python.ymlso CMake/pkg-config can findprotobuf@33This resolves
Fatal Python error: Bus erroron macOS 15 Intel when importingpyarrow.flight. Homebrew's latestprotobufpulls in Abseil 20260107-- Found abslAlt: 1 (found version "20260107")which is ABI-incompatible with Arrow's bundled gRPC v1.46.3
One of earliest Python CI logs with the
Bus error:https://github.com/apache/arrow/actions/runs/22722817262/job/65889451081#step:10:103
Note: Other workflows using
cpp/Brewfilewill prob need similar keg-only setup. (There's failing C++ job log here, Ruby etc.)Are these changes tested?
Yes, fork workflow completed the Python macOS 15-intel job with success.
Are there any user-facing changes?
No.