Skip to content

GH-49563: [C++][FlightRPC][ODBC] Remove libunwind dynamic linked library in macOS Intel CI#49575

Open
alinaliBQ wants to merge 1 commit intoapache:mainfrom
Bit-Quill:gh-49563-fix-libunwind
Open

GH-49563: [C++][FlightRPC][ODBC] Remove libunwind dynamic linked library in macOS Intel CI#49575
alinaliBQ wants to merge 1 commit intoapache:mainfrom
Bit-Quill:gh-49563-fix-libunwind

Conversation

@alinaliBQ
Copy link
Collaborator

@alinaliBQ alinaliBQ commented Mar 20, 2026

Rationale for this change

GH-49563

What changes are included in this PR?

This issue occurred without any code changes, so I think it is due to an macOS update.

After a GitHub macOS update, the CLANG_TOOLS_PATH path is resolved as /usr/local/bin/clang-format in Intel CI. Before the GitHub macOS update, CLANG_TOOLS_PATH was resolved as /usr/local/opt/llvm@18/bin and we did not have the issue of libunwind linking dynamically to ODBC dylib.

The solution is to explicitly set CLANG_TOOLS_PATH to llvm@18/bin on Intel machines.

Are these changes tested?

  • Tested in CI

Are there any user-facing changes?

N/A

Currently CLANG_TOOLS_PATH path is resolved as /usr/local/bin/clang-format. This is likely due to a new macOS update mentioned in xpack-dev-tools/clang-xpack#13. Before the GitHub macOS update, CLANG_TOOLS_PATH was resolved as /usr/local/opt/llvm@18/bin and we did not have the issue of libunwind linking dynamically to ODBC dylib.

The solution is to explicitly set CLANG_TOOLS_PATH to llvm@18/bin.
@github-actions
Copy link

⚠️ GitHub issue #49563 has been automatically assigned in GitHub to PR creator.

@github-actions github-actions bot added CI: Extra: C++ Run extra C++ CI awaiting review Awaiting review labels Mar 20, 2026
@alinaliBQ alinaliBQ marked this pull request as ready for review March 23, 2026 16:59
@alinaliBQ
Copy link
Collaborator Author

@kou @lidavidm This PR is ready for review, please have a look

@kou
Copy link
Member

kou commented Mar 24, 2026

Hmm. I don't know why this fixes the problem... The build doesn't use LLVM because Gandiva is off. Why do clang based tools relate to linked libraries...?

Anyway, we don't need them. Can we solve the problem by removing clang-tools and infer-tools related codes something like the following?

diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index ea15bb7066..a77ed39eac 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -211,17 +211,6 @@ else()
   set(MSVC_TOOLCHAIN FALSE)
 endif()
 
-find_package(ClangTools)
-find_package(InferTools)
-if("$ENV{CMAKE_EXPORT_COMPILE_COMMANDS}" STREQUAL "1"
-   OR CLANG_TIDY_FOUND
-   OR INFER_FOUND)
-  # Generate a Clang compile_commands.json "compilation database" file for use
-  # with various development tools, such as Vim's YouCompleteMe plugin.
-  # See http://clang.llvm.org/docs/JSONCompilationDatabase.html
-  set(CMAKE_EXPORT_COMPILE_COMMANDS 1)
-endif()
-
 # Needed for Gandiva.
 # Use the first Python installation on PATH, not the newest one
 set(Python3_FIND_STRATEGY "LOCATION")
@@ -649,22 +638,6 @@ if(UNIX)
                     VERBATIM)
 endif(UNIX)
 
-#
-# "make infer" target
-#
-
-if(${INFER_FOUND})
-  # runs infer capture
-  add_custom_target(infer ${BUILD_SUPPORT_DIR}/run-infer.sh ${INFER_BIN}
-                          ${CMAKE_BINARY_DIR}/compile_commands.json 1)
-  # runs infer analyze
-  add_custom_target(infer-analyze ${BUILD_SUPPORT_DIR}/run-infer.sh ${INFER_BIN}
-                                  ${CMAKE_BINARY_DIR}/compile_commands.json 2)
-  # runs infer report
-  add_custom_target(infer-report ${BUILD_SUPPORT_DIR}/run-infer.sh ${INFER_BIN}
-                                 ${CMAKE_BINARY_DIR}/compile_commands.json 3)
-endif()
-
 #
 # Link targets
 #
git rm cpp/cmake_modules/FindClangTools.cmake
git rm cpp/cmake_modules/FindInferTools.cmake

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

Labels

awaiting review Awaiting review CI: Extra: C++ Run extra C++ CI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants