-
Notifications
You must be signed in to change notification settings - Fork 3.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Release][C++] Release verification tasks fail with libxsimd-dev installed on ubuntu 22.04 #33786
Comments
resolve_dependency clearly does not correctly detect the system install (maybe discards it due to version?) and falls back on source build. So it is ossible that I will investigate |
Ah yes this seems to be the case as 22.04 has xsimd 7.6.0 and we require 8.1.0: |
Yes this is exactly what happens:
|
The problem is caused here: arrow/cpp/cmake_modules/ThirdpartyToolchain.cmake Lines 251 to 252 in f10f5cf
Removing arrow/cpp/cmake_modules/ThirdpartyToolchain.cmake Lines 263 to 267 in f10f5cf
I think |
It was introduced in #13958 to handle the SameMajor version compatibility required by xsimd but the I have tested this by rewriting the ubuntu 22.04
|
Oh I misunderstood the intention, It might be possible to override the system provided Edit: No because the version is hardcoded into the config and we would need to know the version that is installed on the system. |
We can just reuse the existing diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 3eda538fb2..b03ebbbf11 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -2292,7 +2292,10 @@ if(ARROW_USE_XSIMD)
TRUE)
if(xsimd_SOURCE STREQUAL "BUNDLED")
- add_library(xsimd INTERFACE IMPORTED)
+ # Reuse xsimd target defined by find_package(xsimd)
+ if(NOT TARGET xsimd)
+ add_library(xsimd INTERFACE IMPORTED)
+ endif()
if(CMAKE_VERSION VERSION_LESS 3.11)
set_target_properties(xsimd PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
"${XSIMD_INCLUDE_DIR}") Or we can use other target name like we did for ProtoBuf: diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 8398a394e7..b193ea80d4 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -798,8 +798,8 @@ if(ARROW_WITH_RAPIDJSON)
endif()
if(ARROW_USE_XSIMD)
- list(APPEND ARROW_SHARED_LINK_LIBS xsimd)
- list(APPEND ARROW_STATIC_LINK_LIBS xsimd)
+ list(APPEND ARROW_SHARED_LINK_LIBS ${ARROW_XSIMD})
+ list(APPEND ARROW_STATIC_LINK_LIBS ${ARROW_XSIMD})
endif()
add_custom_target(arrow_dependencies)
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 3eda538fb2..3480baae2d 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -2292,15 +2292,17 @@ if(ARROW_USE_XSIMD)
TRUE)
if(xsimd_SOURCE STREQUAL "BUNDLED")
- add_library(xsimd INTERFACE IMPORTED)
+ add_library(arrow::xsimd INTERFACE IMPORTED)
if(CMAKE_VERSION VERSION_LESS 3.11)
- set_target_properties(xsimd PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
- "${XSIMD_INCLUDE_DIR}")
+ set_target_properties(arrow::xsimd PROPERTIES INTERFACE_INCLUDE_DIRECTORIES
+ "${XSIMD_INCLUDE_DIR}")
else()
- target_include_directories(xsimd INTERFACE "${XSIMD_INCLUDE_DIR}")
+ target_include_directories(arrow::xsimd INTERFACE "${XSIMD_INCLUDE_DIR}")
endif()
+ set(ARROW_XSIMD arrow::xsimd)
else()
message(STATUS "xsimd found. Headers: ${xsimd_INCLUDE_DIRS}")
+ set(ARROW_XSIMD xsimd)
endif()
endif() |
BTW, I think that this is not a blocker because we have a |
If we need 11.0.0 RC1, we can include a fix of this. |
I agree |
For completeness I've run the verification scripts locally on Ubuntu 22.04 with
|
We can use |
### Rationale for this change If old xsimd is installed, CMake target for bundled xsimd is conflicted. ### What changes are included in this PR? Use `arrow::xsimd` for bundled xsimd's target name to avoid conflict. ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * Closes: #33786 Authored-by: Sutou Kouhei <kou@clear-code.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
### Rationale for this change If old xsimd is installed, CMake target for bundled xsimd is conflicted. ### What changes are included in this PR? Use `arrow::xsimd` for bundled xsimd's target name to avoid conflict. ### Are these changes tested? Yes. ### Are there any user-facing changes? No. * Closes: apache#33786 Authored-by: Sutou Kouhei <kou@clear-code.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Describe the bug, including details regarding any error messages, version, and platform.
As pointed during the Release verification for 11.0.0 RC 0 the build failed on Ubuntu 22.04 with:
Full log shared by @pitrou here: https://gist.github.com/pitrou/3fdca2460fa71bba731b0706703b70b2
I have been able to reproduce when installing:
$ sudo apt install libxsimd-dev
on my Ubuntu 22.04.Mail thread where the issue was raised: https://lists.apache.org/thread/bxkd8xb90pf83mp17xjv3gms46yzyz2q
Component(s)
C++, Release
The text was updated successfully, but these errors were encountered: