From 9a93b71e97f388dc251ecc5bd61811352a219d4a Mon Sep 17 00:00:00 2001 From: Jin Shang Date: Wed, 14 Sep 2022 16:29:41 +0000 Subject: [PATCH 1/7] accept llvm 15.0 --- cpp/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 1a728bd7870..398d60ebc1a 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -128,6 +128,7 @@ set(ARROW_DOC_DIR "share/doc/${PROJECT_NAME}") set(BUILD_SUPPORT_DIR "${CMAKE_SOURCE_DIR}/build-support") set(ARROW_LLVM_VERSIONS + "15.0" "14.0" "13.0" "12.0" From 59372fed6e2b9d83d584c5f620b320bb39f17ada Mon Sep 17 00:00:00 2001 From: Jin Shang Date: Wed, 14 Sep 2022 19:01:05 +0000 Subject: [PATCH 2/7] turn off LLVM_ENABLE_ZSTD for llvm 15 --- cpp/cmake_modules/FindLLVMAlt.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp/cmake_modules/FindLLVMAlt.cmake b/cpp/cmake_modules/FindLLVMAlt.cmake index 56ceead9415..7437929944c 100644 --- a/cpp/cmake_modules/FindLLVMAlt.cmake +++ b/cpp/cmake_modules/FindLLVMAlt.cmake @@ -23,6 +23,8 @@ if(LLVMAlt_FOUND) return() endif() +set(LLVM_ENABLE_ZSTD OFF) # Need to turn off LLVM_ENABLE_ZSTD due to ARROW-17728 + if(DEFINED LLVM_ROOT) # if llvm source is set to conda then prefer conda llvm over system llvm even # if the system one is newer From 6e62341f8f03916c8abe4d08cc6e886c99404e81 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Thu, 15 Sep 2022 10:49:58 +0900 Subject: [PATCH 3/7] Add support for the official Zstd CMake package --- .../{Findzstd.cmake => FindzstdAlt.cmake} | 27 ++++++++++++++++--- cpp/cmake_modules/ThirdpartyToolchain.cmake | 18 +++++++------ 2 files changed, 33 insertions(+), 12 deletions(-) rename cpp/cmake_modules/{Findzstd.cmake => FindzstdAlt.cmake} (82%) diff --git a/cpp/cmake_modules/Findzstd.cmake b/cpp/cmake_modules/FindzstdAlt.cmake similarity index 82% rename from cpp/cmake_modules/Findzstd.cmake rename to cpp/cmake_modules/FindzstdAlt.cmake index d907467f947..476006a768b 100644 --- a/cpp/cmake_modules/Findzstd.cmake +++ b/cpp/cmake_modules/FindzstdAlt.cmake @@ -15,7 +15,20 @@ # specific language governing permissions and limitations # under the License. +if(zstdAlt_FOUND) + return() +endif() + +set(find_package_args) +if(zstdAlt_FIND_VERSION) + list(APPEND find_package_args ${zstdAlt_FIND_VERSION}) +endif() +if(zstdAlt_FIND_QUIETLY) + list(APPEND find_package_args QUIET) +endif() +find_package(zstd ${find_package_args}) if(zstd_FOUND) + set(zstdAlt_FOUND TRUE) return() endif() @@ -83,11 +96,17 @@ else() endif() endif() -find_package_handle_standard_args(zstd REQUIRED_VARS ZSTD_LIB ZSTD_INCLUDE_DIR) +find_package_handle_standard_args(zstdAlt REQUIRED_VARS ZSTD_LIB ZSTD_INCLUDE_DIR) -if(zstd_FOUND) - add_library(zstd::libzstd UNKNOWN IMPORTED) - set_target_properties(zstd::libzstd +if(zstdAlt_FOUND) + if(ARROW_ZSTD_USE_SHARED) + set(zstd_TARGET zstd::libzstd_shared) + add_library(${zstd_TARGET} SHARED IMPORTED) + else() + set(zstd_TARGET zstd::libzstd_static) + add_library(${zstd_TARGET} STATIC IMPORTED) + endif() + set_target_properties(${zstd_TARGET} PROPERTIES IMPORTED_LOCATION "${ZSTD_LIB}" INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_INCLUDE_DIR}") endif() diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index 52847a99f9b..114287c68d1 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -2397,30 +2397,32 @@ macro(build_zstd) file(MAKE_DIRECTORY "${ZSTD_PREFIX}/include") - add_library(zstd::libzstd STATIC IMPORTED) - set_target_properties(zstd::libzstd + add_library(zstd::libzstd_static STATIC IMPORTED) + set_target_properties(zstd::libzstd_static PROPERTIES IMPORTED_LOCATION "${ZSTD_STATIC_LIB}" INTERFACE_INCLUDE_DIRECTORIES "${ZSTD_PREFIX}/include") add_dependencies(toolchain zstd_ep) - add_dependencies(zstd::libzstd zstd_ep) + add_dependencies(zstd::libzstd_static zstd_ep) - list(APPEND ARROW_BUNDLED_STATIC_LIBS zstd::libzstd) + list(APPEND ARROW_BUNDLED_STATIC_LIBS zstd::libzstd_static) + + set(ZSTD_VENDORED TRUE) endmacro() if(ARROW_WITH_ZSTD) # ARROW-13384: ZSTD_minCLevel was added in v1.4.0, required by ARROW-13091 resolve_dependency(zstd + HAVE_ALT + TRUE PC_PACKAGE_NAMES libzstd REQUIRED_VERSION 1.4.0) - if(TARGET zstd::libzstd) - set(ARROW_ZSTD_LIBZSTD zstd::libzstd) + if(ZTSD_VENDORED) + set(ARROW_ZSTD_LIBZSTD zstd::libzstd_static) else() - # "SYSTEM" source will prioritize cmake config, which exports - # zstd::libzstd_{static,shared} if(ARROW_ZSTD_USE_SHARED) if(TARGET zstd::libzstd_shared) set(ARROW_ZSTD_LIBZSTD zstd::libzstd_shared) From c271c48381f9ffce8039d8c86d43c5e2ee657827 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Thu, 15 Sep 2022 11:16:58 +0900 Subject: [PATCH 4/7] Fix a typo --- cpp/cmake_modules/ThirdpartyToolchain.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index 114287c68d1..a45ae61015e 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -2420,7 +2420,7 @@ if(ARROW_WITH_ZSTD) REQUIRED_VERSION 1.4.0) - if(ZTSD_VENDORED) + if(ZSTD_VENDORED) set(ARROW_ZSTD_LIBZSTD zstd::libzstd_static) else() if(ARROW_ZSTD_USE_SHARED) From f9409b0e15d0524bd2be456da6222a3736ac6ae5 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Fri, 16 Sep 2022 05:33:08 +0900 Subject: [PATCH 5/7] Remove a needless configuration --- cpp/cmake_modules/FindLLVMAlt.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/cpp/cmake_modules/FindLLVMAlt.cmake b/cpp/cmake_modules/FindLLVMAlt.cmake index 7437929944c..56ceead9415 100644 --- a/cpp/cmake_modules/FindLLVMAlt.cmake +++ b/cpp/cmake_modules/FindLLVMAlt.cmake @@ -23,8 +23,6 @@ if(LLVMAlt_FOUND) return() endif() -set(LLVM_ENABLE_ZSTD OFF) # Need to turn off LLVM_ENABLE_ZSTD due to ARROW-17728 - if(DEFINED LLVM_ROOT) # if llvm source is set to conda then prefer conda llvm over system llvm even # if the system one is newer From 157ba203f71c49fe1988e06cbca146f16d44d694 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Fri, 16 Sep 2022 05:33:16 +0900 Subject: [PATCH 6/7] Disable Gandiva related tests on MinGW 64 too --- ci/scripts/cpp_test.sh | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/ci/scripts/cpp_test.sh b/ci/scripts/cpp_test.sh index 2bd7db8b2c4..06b7d0fe413 100755 --- a/ci/scripts/cpp_test.sh +++ b/ci/scripts/cpp_test.sh @@ -55,22 +55,20 @@ case "$(uname)" in exclude_tests="gandiva-internals-test" exclude_tests="${exclude_tests}|gandiva-projector-test" exclude_tests="${exclude_tests}|gandiva-utf8-test" - if [ "${MSYSTEM}" = "MINGW32" ]; then - exclude_tests="${exclude_tests}|gandiva-binary-test" - exclude_tests="${exclude_tests}|gandiva-boolean-expr-test" - exclude_tests="${exclude_tests}|gandiva-date-time-test" - exclude_tests="${exclude_tests}|gandiva-decimal-single-test" - exclude_tests="${exclude_tests}|gandiva-decimal-test" - exclude_tests="${exclude_tests}|gandiva-filter-project-test" - exclude_tests="${exclude_tests}|gandiva-filter-test" - exclude_tests="${exclude_tests}|gandiva-hash-test" - exclude_tests="${exclude_tests}|gandiva-if-expr-test" - exclude_tests="${exclude_tests}|gandiva-in-expr-test" - exclude_tests="${exclude_tests}|gandiva-literal-test" - exclude_tests="${exclude_tests}|gandiva-null-validity-test" - exclude_tests="${exclude_tests}|gandiva-precompiled-test" - exclude_tests="${exclude_tests}|gandiva-projector-test" - fi + exclude_tests="${exclude_tests}|gandiva-binary-test" + exclude_tests="${exclude_tests}|gandiva-boolean-expr-test" + exclude_tests="${exclude_tests}|gandiva-date-time-test" + exclude_tests="${exclude_tests}|gandiva-decimal-single-test" + exclude_tests="${exclude_tests}|gandiva-decimal-test" + exclude_tests="${exclude_tests}|gandiva-filter-project-test" + exclude_tests="${exclude_tests}|gandiva-filter-test" + exclude_tests="${exclude_tests}|gandiva-hash-test" + exclude_tests="${exclude_tests}|gandiva-if-expr-test" + exclude_tests="${exclude_tests}|gandiva-in-expr-test" + exclude_tests="${exclude_tests}|gandiva-literal-test" + exclude_tests="${exclude_tests}|gandiva-null-validity-test" + exclude_tests="${exclude_tests}|gandiva-precompiled-test" + exclude_tests="${exclude_tests}|gandiva-projector-test" ctest_options+=(--exclude-regex "${exclude_tests}") ;; *) From 980dcf92d7b6f69e48c7ca12fb85ff43016fa8b4 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Fri, 16 Sep 2022 05:33:29 +0900 Subject: [PATCH 7/7] Disable Gandiva for C GLib/Ruby --- .github/workflows/ruby.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 3f877b4aa30..4dd61befab6 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -195,7 +195,8 @@ jobs: ARROW_BUILD_TYPE: release ARROW_FLIGHT: ON ARROW_FLIGHT_SQL: ON - ARROW_GANDIVA: ON + # ARROW-17728: SEGV on MinGW + ARROW_GANDIVA: OFF ARROW_GCS: ON ARROW_HDFS: OFF ARROW_HOME: /ucrt${{ matrix.mingw-n-bits }}