From cef65572880294ad64dc50660c87ba7fefde0f0d Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" <96995091+alinaliBQ@users.noreply.github.com> Date: Mon, 19 Oct 2026 15:11:47 -0700 Subject: [PATCH 1/5] attempt to fix ARM64 build issue * Link to openssl@3 as gRPC v1.76.0 doesn't compile with OpenSSL 4 --- .github/workflows/cpp_extra.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 6e6e4a61d1a..2d3cb1f2464 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -591,6 +591,13 @@ jobs: run: | brew bundle --file=cpp/Brewfile + # Bundled gRPC doesn't compile with OpenSSL 4 yet + # (X509_CRL_get_issuer() returns a const pointer), so build + # against OpenSSL 3 instead of Homebrew's default "openssl". + brew list openssl@3 > /dev/null 2>&1 || brew install openssl@3 + brew unlink openssl@4 || : + brew link --overwrite --force openssl@3 + # We want to use bundled RE2 for static linking. If # Homebrew's RE2 is installed, its header file may be used. # We uninstall Homebrew's RE2 to ensure using bundled RE2. From 859763c1b59d8da8e712ab715663fb0381901ebc Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" <96995091+alinaliBQ@users.noreply.github.com> Date: Mon, 19 Oct 2026 15:46:58 -0700 Subject: [PATCH 2/5] Resolve remote test failure --- cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc b/cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc index 6ae2cdbbbc3..ae9e37239fb 100644 --- a/cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc +++ b/cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc @@ -1789,7 +1789,7 @@ TYPED_TEST(StatementTest, TestChangingAppRowDescriptorRebindsColumns) { ASSIGN_SQLWCHAR_ARR_AND_LEN(wsql, LR"( - SELECT 1 AS value + SELECT 1 AS val UNION ALL SELECT 2 UNION ALL SELECT 3; )"); From 578bcae47a133fa19b915238d51c32b9fbf45dde Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" <96995091+alinaliBQ@users.noreply.github.com> Date: Tue, 20 Oct 2026 10:54:01 -0700 Subject: [PATCH 3/5] Uninstall openssl 4 if exists --- .github/workflows/cpp_extra.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 2d3cb1f2464..4fd28b6a897 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -591,11 +591,12 @@ jobs: run: | brew bundle --file=cpp/Brewfile - # Bundled gRPC doesn't compile with OpenSSL 4 yet + # On ARM64, Bundled gRPC doesn't compile with OpenSSL 4 yet # (X509_CRL_get_issuer() returns a const pointer), so build # against OpenSSL 3 instead of Homebrew's default "openssl". brew list openssl@3 > /dev/null 2>&1 || brew install openssl@3 - brew unlink openssl@4 || : + # Uninstall OpenSSL 4 if exists + brew uninstall --ignore-dependencies openssl@4 || : brew link --overwrite --force openssl@3 # We want to use bundled RE2 for static linking. If From 9260003353c2641d8e18d7d1b9571329f9412ecc Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" <96995091+alinaliBQ@users.noreply.github.com> Date: Tue, 20 Oct 2026 12:44:30 -0700 Subject: [PATCH 4/5] Unlink openssl 4 instead of uninstall Direct `OPENSSL_ROOT_DIR` to OpenSSL 3 --- .github/workflows/cpp_extra.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 4fd28b6a897..4b1aff9b211 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -591,12 +591,12 @@ jobs: run: | brew bundle --file=cpp/Brewfile - # On ARM64, Bundled gRPC doesn't compile with OpenSSL 4 yet - # (X509_CRL_get_issuer() returns a const pointer), so build - # against OpenSSL 3 instead of Homebrew's default "openssl". + # On ARM64, Bundled gRPC v1.76.0 doesn't compile with OpenSSL 4 yet, + # so build against OpenSSL 3 instead of Homebrew's default "openssl". brew list openssl@3 > /dev/null 2>&1 || brew install openssl@3 - # Uninstall OpenSSL 4 if exists - brew uninstall --ignore-dependencies openssl@4 || : + # Don't uninstall OpenSSL 4 as other formulae (e.g. ccache) + # could link to it. + brew unlink openssl@4 || : brew link --overwrite --force openssl@3 # We want to use bundled RE2 for static linking. If @@ -639,7 +639,8 @@ jobs: export BUILD_WARNING_LEVEL=PRODUCTION LIBIODBC_DIR="$(brew --cellar libiodbc)/$(brew list --versions libiodbc | awk '{print $2}')" ODBC_INCLUDE_DIR=$LIBIODBC_DIR/include - export ARROW_CMAKE_ARGS="-DODBC_INCLUDE_DIR=$ODBC_INCLUDE_DIR" + # GH-54638: Force link OpenSSL 3 to build with gRPC v1.76.0 + export ARROW_CMAKE_ARGS="-DODBC_INCLUDE_DIR=$ODBC_INCLUDE_DIR -DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3)" export CXXFLAGS="$CXXFLAGS -I$ODBC_INCLUDE_DIR" ci/scripts/cpp_build.sh $(pwd) $(pwd)/build - name: Save ccache From bc8b260f761a8b3fa8a8649da9841eb83f60248c Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" <96995091+alinaliBQ@users.noreply.github.com> Date: Tue, 20 Oct 2026 12:56:27 -0700 Subject: [PATCH 5/5] Undo one liner fix for ODBC Linux The fix is in separate PR --- cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc b/cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc index ae9e37239fb..6ae2cdbbbc3 100644 --- a/cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc +++ b/cpp/src/arrow/flight/sql/odbc/tests/statement_test.cc @@ -1789,7 +1789,7 @@ TYPED_TEST(StatementTest, TestChangingAppRowDescriptorRebindsColumns) { ASSIGN_SQLWCHAR_ARR_AND_LEN(wsql, LR"( - SELECT 1 AS val + SELECT 1 AS value UNION ALL SELECT 2 UNION ALL SELECT 3; )");