diff --git a/.env b/.env index 02a2cf79deb..f67157182db 100644 --- a/.env +++ b/.env @@ -54,7 +54,7 @@ UBUNTU=22.04 # Default versions for various dependencies CLANG_TOOLS=14 -CMAKE=3.25.0 +CMAKE=3.26.0 CUDA=11.7.1 DASK=latest DOTNET=8.0 diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index 02938652eec..7fa4b66d4ba 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -598,15 +598,8 @@ endif() if(DEFINED ENV{ARROW_BOOST_URL}) set(BOOST_SOURCE_URL "$ENV{ARROW_BOOST_URL}") else() - string(REPLACE "." "_" ARROW_BOOST_BUILD_VERSION_UNDERSCORES - ${ARROW_BOOST_BUILD_VERSION}) set_urls(BOOST_SOURCE_URL - # These are trimmed boost bundles we maintain. - # See cpp/build-support/trim-boost.sh - # FIXME(ARROW-6407) automate uploading this archive to ensure it reflects - # our currently used packages and doesn't fall out of sync with - # ${ARROW_BOOST_BUILD_VERSION_UNDERSCORES} - "${THIRDPARTY_MIRROR_URL}/boost_${ARROW_BOOST_BUILD_VERSION_UNDERSCORES}.tar.gz" + "https://github.com/boostorg/boost/releases/download/boost-${ARROW_BOOST_BUILD_VERSION}/boost-${ARROW_BOOST_BUILD_VERSION}-cmake.tar.gz" ) endif() @@ -1052,119 +1045,132 @@ endif() # ---------------------------------------------------------------------- # Add Boost dependencies (code adapted from Apache Kudu) -macro(build_boost) - set(BOOST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/boost_ep-prefix/src/boost_ep") +function(build_boost) + list(APPEND CMAKE_MESSAGE_INDENT "Boost: ") + message(STATUS "Building from source") - # This is needed by the thrift_ep build - set(BOOST_ROOT ${BOOST_PREFIX}) - set(Boost_INCLUDE_DIR "${BOOST_PREFIX}") + fetchcontent_declare(boost + ${FC_DECLARE_COMMON_OPTIONS} OVERRIDE_FIND_PACKAGE + URL ${BOOST_SOURCE_URL} + URL_HASH "SHA256=${ARROW_BOOST_BUILD_SHA256_CHECKSUM}") - if(ARROW_BOOST_REQUIRE_LIBRARY) - set(BOOST_LIB_DIR "${BOOST_PREFIX}/stage/lib") - set(BOOST_BUILD_LINK "static") - if("${UPPERCASE_BUILD_TYPE}" STREQUAL "DEBUG") - set(BOOST_BUILD_VARIANT "debug") - else() - set(BOOST_BUILD_VARIANT "release") + prepare_fetchcontent() + set(BOOST_ENABLE_COMPATIBILITY_TARGETS ON) + set(BOOST_EXCLUDE_LIBRARIES) + set(BOOST_INCLUDE_LIBRARIES + ${ARROW_BOOST_COMPONENTS} + ${ARROW_BOOST_OPTIONAL_COMPONENTS} + algorithm + crc + numeric/conversion + scope_exit + throw_exception + tokenizer) + if(ARROW_TESTING + OR ARROW_GANDIVA + OR (NOT ARROW_USE_NATIVE_INT128)) + set(ARROW_BOOST_NEED_MULTIPRECISION TRUE) + else() + set(ARROW_BOOST_NEED_MULTIPRECISION FALSE) + endif() + if(ARROW_ENABLE_THREADING) + if(ARROW_WITH_THRIFT OR (ARROW_FLIGHT_SQL_ODBC AND MSVC)) + list(APPEND BOOST_INCLUDE_LIBRARIES locale) endif() - if(MSVC) - set(BOOST_CONFIGURE_COMMAND ".\\\\bootstrap.bat") - else() - set(BOOST_CONFIGURE_COMMAND "./bootstrap.sh") + if(ARROW_BOOST_NEED_MULTIPRECISION) + list(APPEND BOOST_INCLUDE_LIBRARIES multiprecision) endif() + list(APPEND BOOST_INCLUDE_LIBRARIES thread) + else() + list(APPEND + BOOST_EXCLUDE_LIBRARIES + asio + container + date_time + lexical_cast + locale + lockfree + math + thread) + endif() + if(ARROW_WITH_THRIFT) + list(APPEND BOOST_INCLUDE_LIBRARIES uuid) + else() + list(APPEND BOOST_EXCLUDE_LIBRARIES uuid) + endif() + set(BOOST_SKIP_INSTALL_RULES ON) + if(NOT ARROW_ENABLE_THREADING) + set(BOOST_UUID_LINK_LIBATOMIC OFF) + endif() + if(MSVC) + string(APPEND CMAKE_C_FLAGS " /EHsc") + string(APPEND CMAKE_CXX_FLAGS " /EHsc") + else() + # This is for https://github.com/boostorg/container/issues/305 + string(APPEND CMAKE_C_FLAGS " -Wno-strict-prototypes") + endif() + set(CMAKE_UNITY_BUILD OFF) - set(BOOST_BUILD_WITH_LIBRARIES "filesystem" "system") - string(REPLACE ";" "," BOOST_CONFIGURE_LIBRARIES "${BOOST_BUILD_WITH_LIBRARIES}") - list(APPEND BOOST_CONFIGURE_COMMAND "--prefix=${BOOST_PREFIX}" - "--with-libraries=${BOOST_CONFIGURE_LIBRARIES}") - set(BOOST_BUILD_COMMAND "./b2" "-j${NPROC}" "link=${BOOST_BUILD_LINK}" - "variant=${BOOST_BUILD_VARIANT}") - if(MSVC) - string(REGEX REPLACE "([0-9])$" ".\\1" BOOST_TOOLSET_MSVC_VERSION - ${MSVC_TOOLSET_VERSION}) - list(APPEND BOOST_BUILD_COMMAND "toolset=msvc-${BOOST_TOOLSET_MSVC_VERSION}") - set(BOOST_BUILD_WITH_LIBRARIES_MSVC) - foreach(_BOOST_LIB ${BOOST_BUILD_WITH_LIBRARIES}) - list(APPEND BOOST_BUILD_WITH_LIBRARIES_MSVC "--with-${_BOOST_LIB}") - endforeach() - list(APPEND BOOST_BUILD_COMMAND ${BOOST_BUILD_WITH_LIBRARIES_MSVC}) - else() - list(APPEND BOOST_BUILD_COMMAND "cxxflags=-fPIC") - endif() + fetchcontent_makeavailable(boost) - if(MSVC) - string(REGEX - REPLACE "^([0-9]+)\\.([0-9]+)\\.[0-9]+$" "\\1_\\2" - ARROW_BOOST_BUILD_VERSION_NO_MICRO_UNDERSCORE - ${ARROW_BOOST_BUILD_VERSION}) - set(BOOST_LIBRARY_SUFFIX "-vc${MSVC_TOOLSET_VERSION}-mt") - if(BOOST_BUILD_VARIANT STREQUAL "debug") - set(BOOST_LIBRARY_SUFFIX "${BOOST_LIBRARY_SUFFIX}-gd") - endif() - set(BOOST_LIBRARY_SUFFIX - "${BOOST_LIBRARY_SUFFIX}-x64-${ARROW_BOOST_BUILD_VERSION_NO_MICRO_UNDERSCORE}") + set(boost_include_dirs) + foreach(library ${BOOST_INCLUDE_LIBRARIES}) + # boost_numeric/conversion -> + # boost_numeric_conversion + string(REPLACE "/" "_" target_name "boost_${library}") + target_link_libraries(${target_name} INTERFACE Boost::disable_autolinking) + list(APPEND boost_include_dirs + $) + endforeach() + target_link_libraries(boost_headers + INTERFACE Boost::algorithm + Boost::crc + Boost::numeric_conversion + Boost::scope_exit + Boost::throw_exception + Boost::tokenizer) + target_compile_definitions(boost_mpl INTERFACE "BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS") + + if(ARROW_BOOST_NEED_MULTIPRECISION) + if(ARROW_ENABLE_THREADING) + target_link_libraries(boost_headers INTERFACE Boost::multiprecision) else() - set(BOOST_LIBRARY_SUFFIX "") - endif() - set(BOOST_STATIC_SYSTEM_LIBRARY - "${BOOST_LIB_DIR}/libboost_system${BOOST_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}" - ) - set(BOOST_STATIC_FILESYSTEM_LIBRARY - "${BOOST_LIB_DIR}/libboost_filesystem${BOOST_LIBRARY_SUFFIX}${CMAKE_STATIC_LIBRARY_SUFFIX}" - ) - set(BOOST_SYSTEM_LIBRARY boost_system_static) - set(BOOST_FILESYSTEM_LIBRARY boost_filesystem_static) - set(BOOST_BUILD_PRODUCTS ${BOOST_STATIC_SYSTEM_LIBRARY} - ${BOOST_STATIC_FILESYSTEM_LIBRARY}) - - add_thirdparty_lib(Boost::system - STATIC - "${BOOST_STATIC_SYSTEM_LIBRARY}" - INCLUDE_DIRECTORIES - "${Boost_INCLUDE_DIR}") - add_thirdparty_lib(Boost::filesystem - STATIC - "${BOOST_STATIC_FILESYSTEM_LIBRARY}" - INCLUDE_DIRECTORIES - "${Boost_INCLUDE_DIR}") - - externalproject_add(boost_ep - ${EP_COMMON_OPTIONS} - URL ${BOOST_SOURCE_URL} - URL_HASH "SHA256=${ARROW_BOOST_BUILD_SHA256_CHECKSUM}" - BUILD_BYPRODUCTS ${BOOST_BUILD_PRODUCTS} - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND ${BOOST_CONFIGURE_COMMAND} - BUILD_COMMAND ${BOOST_BUILD_COMMAND} - INSTALL_COMMAND "") - add_dependencies(Boost::system boost_ep) - add_dependencies(Boost::filesystem boost_ep) - else() - externalproject_add(boost_ep - ${EP_COMMON_OPTIONS} - BUILD_COMMAND "" - CONFIGURE_COMMAND "" - INSTALL_COMMAND "" - URL ${BOOST_SOURCE_URL} - URL_HASH "SHA256=${ARROW_BOOST_BUILD_SHA256_CHECKSUM}") - endif() - add_library(Boost::headers INTERFACE IMPORTED) - target_include_directories(Boost::headers INTERFACE "${Boost_INCLUDE_DIR}") - add_dependencies(Boost::headers boost_ep) - # If Boost is found but one of system or filesystem components aren't found, - # Boost::disable_autolinking and Boost::dynamic_linking are already defined. - if(NOT TARGET Boost::disable_autolinking) - add_library(Boost::disable_autolinking INTERFACE IMPORTED) - if(WIN32) - target_compile_definitions(Boost::disable_autolinking INTERFACE "BOOST_ALL_NO_LIB") + # We want to use Boost.multiprecision as standalone mode + # without threading because non-standalone mode requires + # threading. We can't use BOOST_MP_STANDALONE CMake variable for + # this with Boost CMake build. So we create our CMake target for + # it. + add_library(arrow::Boost::multiprecision INTERFACE IMPORTED) + target_include_directories(arrow::Boost::multiprecision + INTERFACE "${boost_SOURCE_DIR}/libs/multiprecision/include" + ) + target_compile_definitions(arrow::Boost::multiprecision + INTERFACE BOOST_MP_STANDALONE=1) + target_link_libraries(boost_headers INTERFACE arrow::Boost::multiprecision) endif() endif() - if(NOT TARGET Boost::dynamic_linking) - # This doesn't add BOOST_ALL_DYN_LINK because bundled Boost is a static library. - add_library(Boost::dynamic_linking INTERFACE IMPORTED) + if(ARROW_WITH_THRIFT) + if(ARROW_ENABLE_THREADING) + add_library(arrow::Boost::locale ALIAS boost_locale) + else() + # Apache Parquet depends on Apache Thrift. + # Apache Thrift uses Boost.locale but it only uses header files. + # So we can use this for building Apache Thrift. + add_library(arrow::Boost::locale INTERFACE IMPORTED) + target_include_directories(arrow::Boost::locale + INTERFACE "${boost_SOURCE_DIR}/libs/locale/include") + endif() endif() - set(BOOST_VENDORED TRUE) -endmacro() + + set(Boost_INCLUDE_DIRS + ${boost_include_dirs} + PARENT_SCOPE) + set(BOOST_VENDORED + TRUE + PARENT_SCOPE) + + list(POP_BACK CMAKE_MESSAGE_INDENT) +endfunction() if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 15) @@ -1181,7 +1187,16 @@ set(Boost_USE_MULTITHREADED ON) if(MSVC AND ARROW_USE_STATIC_CRT) set(Boost_USE_STATIC_RUNTIME ON) endif() +# CMake 3.25.0 has 1.80 and older versions. set(Boost_ADDITIONAL_VERSIONS + "1.88.0" + "1.88" + "1.87.0" + "1.87" + "1.86.0" + "1.86" + "1.85.0" + "1.85" "1.84.0" "1.84" "1.83.0" @@ -1189,49 +1204,7 @@ set(Boost_ADDITIONAL_VERSIONS "1.82.0" "1.82" "1.81.0" - "1.81" - "1.80.0" - "1.80" - "1.79.0" - "1.79" - "1.78.0" - "1.78" - "1.77.0" - "1.77" - "1.76.0" - "1.76" - "1.75.0" - "1.75" - "1.74.0" - "1.74" - "1.73.0" - "1.73" - "1.72.0" - "1.72" - "1.71.0" - "1.71" - "1.70.0" - "1.70" - "1.69.0" - "1.69" - "1.68.0" - "1.68" - "1.67.0" - "1.67" - "1.66.0" - "1.66" - "1.65.0" - "1.65" - "1.64.0" - "1.64" - "1.63.0" - "1.63" - "1.62.0" - "1.61" - "1.61.0" - "1.62" - "1.60.0" - "1.60") + "1.81") # Compilers that don't support int128_t have a compile-time # (header-only) dependency on Boost for int128_t. @@ -1290,7 +1263,9 @@ if(ARROW_USE_BOOST) if(ARROW_FLIGHT_SQL_ODBC AND MSVC) list(APPEND ARROW_BOOST_COMPONENTS locale) endif() - set(ARROW_BOOST_OPTIONAL_COMPONENTS process) + if(ARROW_ENABLE_THREADING) + set(ARROW_BOOST_OPTIONAL_COMPONENTS process) + endif() else() set(ARROW_BOOST_COMPONENTS) set(ARROW_BOOST_OPTIONAL_COMPONENTS) @@ -1310,62 +1285,71 @@ if(ARROW_USE_BOOST) unset(BUILD_SHARED_LIBS_KEEP) endif() - foreach(BOOST_LIBRARY Boost::headers Boost::filesystem Boost::system) - if(NOT TARGET ${BOOST_LIBRARY}) - continue() - endif() - target_link_libraries(${BOOST_LIBRARY} INTERFACE Boost::disable_autolinking) - if(ARROW_BOOST_USE_SHARED) - target_link_libraries(${BOOST_LIBRARY} INTERFACE Boost::dynamic_linking) - endif() - endforeach() + if(NOT BOOST_VENDORED) + foreach(BOOST_COMPONENT ${ARROW_BOOST_COMPONENTS} ${ARROW_BOOST_OPTIONAL_COMPONENTS}) + set(BOOST_LIBRARY Boost::${BOOST_COMPONENT}) + if(NOT TARGET ${BOOST_LIBRARY}) + continue() + endif() + target_link_libraries(${BOOST_LIBRARY} INTERFACE Boost::disable_autolinking) + if(ARROW_BOOST_USE_SHARED) + target_link_libraries(${BOOST_LIBRARY} INTERFACE Boost::dynamic_linking) + endif() + endforeach() + endif() - set(BOOST_PROCESS_HAVE_V2 FALSE) - if(TARGET Boost::process) - # Boost >= 1.86 - target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_HAVE_V1") - target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_HAVE_V2") - set(BOOST_PROCESS_HAVE_V2 TRUE) - else() - # Boost < 1.86 - add_library(Boost::process INTERFACE IMPORTED) - if(TARGET Boost::filesystem) - target_link_libraries(Boost::process INTERFACE Boost::filesystem) - endif() - if(TARGET Boost::system) - target_link_libraries(Boost::process INTERFACE Boost::system) - endif() - if(TARGET Boost::headers) - target_link_libraries(Boost::process INTERFACE Boost::headers) - endif() - if(Boost_VERSION VERSION_GREATER_EQUAL 1.80) - target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_HAVE_V2") + if(ARROW_ENABLE_THREADING) + set(BOOST_PROCESS_HAVE_V2 FALSE) + if(TARGET Boost::process) + # Boost >= 1.86 + add_library(arrow::Boost::process INTERFACE IMPORTED) + target_link_libraries(arrow::Boost::process INTERFACE Boost::process) + target_compile_definitions(arrow::Boost::process INTERFACE "BOOST_PROCESS_HAVE_V1") + target_compile_definitions(arrow::Boost::process INTERFACE "BOOST_PROCESS_HAVE_V2") set(BOOST_PROCESS_HAVE_V2 TRUE) - # Boost < 1.86 has a bug that - # boost::process::v2::process_environment::on_setup() isn't - # defined. We need to build Boost Process source to define it. - # - # See also: - # https://github.com/boostorg/process/issues/312 - target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_NEED_SOURCE") - if(WIN32) - target_link_libraries(Boost::process INTERFACE bcrypt ntdll) + else() + # Boost < 1.86 + add_library(arrow::Boost::process INTERFACE IMPORTED) + if(TARGET Boost::filesystem) + target_link_libraries(arrow::Boost::process INTERFACE Boost::filesystem) + endif() + if(TARGET Boost::system) + target_link_libraries(arrow::Boost::process INTERFACE Boost::system) + endif() + if(TARGET Boost::headers) + target_link_libraries(arrow::Boost::process INTERFACE Boost::headers) + endif() + if(Boost_VERSION VERSION_GREATER_EQUAL 1.80) + target_compile_definitions(arrow::Boost::process + INTERFACE "BOOST_PROCESS_HAVE_V2") + set(BOOST_PROCESS_HAVE_V2 TRUE) + # Boost < 1.86 has a bug that + # boost::process::v2::process_environment::on_setup() isn't + # defined. We need to build Boost Process source to define it. + # + # See also: + # https://github.com/boostorg/process/issues/312 + target_compile_definitions(arrow::Boost::process + INTERFACE "BOOST_PROCESS_NEED_SOURCE") + if(WIN32) + target_link_libraries(arrow::Boost::process INTERFACE bcrypt ntdll) + endif() endif() endif() - endif() - if(BOOST_PROCESS_HAVE_V2 - AND # We can't use v2 API on Windows because v2 API doesn't support - # process group[1] and GCS testbench uses multiple processes[2]. - # - # [1] https://github.com/boostorg/process/issues/259 - # [2] https://github.com/googleapis/storage-testbench/issues/669 - (NOT WIN32) - AND # We can't use v2 API with musl libc with Boost Process < 1.86 - # because Boost Process < 1.86 doesn't support musl libc[3]. - # - # [3] https://github.com/boostorg/process/commit/aea22dbf6be1695ceb42367590b6ca34d9433500 - (NOT (ARROW_WITH_MUSL AND (Boost_VERSION VERSION_LESS 1.86)))) - target_compile_definitions(Boost::process INTERFACE "BOOST_PROCESS_USE_V2") + if(BOOST_PROCESS_HAVE_V2 + AND # We can't use v2 API on Windows because v2 API doesn't support + # process group[1] and GCS testbench uses multiple processes[2]. + # + # [1] https://github.com/boostorg/process/issues/259 + # [2] https://github.com/googleapis/storage-testbench/issues/669 + (NOT WIN32) + AND # We can't use v2 API with musl libc with Boost Process < 1.86 + # because Boost Process < 1.86 doesn't support musl libc[3]. + # + # [3] https://github.com/boostorg/process/commit/aea22dbf6be1695ceb42367590b6ca34d9433500 + (NOT (ARROW_WITH_MUSL AND (Boost_VERSION VERSION_LESS 1.86)))) + target_compile_definitions(arrow::Boost::process INTERFACE "BOOST_PROCESS_USE_V2") + endif() endif() message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}") @@ -1747,102 +1731,77 @@ endif() # ---------------------------------------------------------------------- # Thrift -macro(build_thrift) - message(STATUS "Building Apache Thrift from source") - set(THRIFT_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/thrift_ep-install") - set(THRIFT_INCLUDE_DIR "${THRIFT_PREFIX}/include") - set(THRIFT_CMAKE_ARGS - ${EP_COMMON_CMAKE_ARGS} - "-DCMAKE_INSTALL_PREFIX=${THRIFT_PREFIX}" - "-DCMAKE_INSTALL_RPATH=${THRIFT_PREFIX}/lib" - # Work around https://gitlab.kitware.com/cmake/cmake/issues/18865 - -DBoost_NO_BOOST_CMAKE=ON - -DBUILD_COMPILER=OFF - -DBUILD_EXAMPLES=OFF - -DBUILD_TUTORIALS=OFF - -DCMAKE_DEBUG_POSTFIX= - -DWITH_AS3=OFF - -DWITH_CPP=ON - -DWITH_C_GLIB=OFF - -DWITH_JAVA=OFF - -DWITH_JAVASCRIPT=OFF - -DWITH_LIBEVENT=OFF - -DWITH_NODEJS=OFF - -DWITH_PYTHON=OFF - -DWITH_QT5=OFF - -DWITH_ZLIB=OFF) - - # Thrift also uses boost. Forward important boost settings if there were ones passed. - if(DEFINED BOOST_ROOT) - list(APPEND THRIFT_CMAKE_ARGS "-DBOOST_ROOT=${BOOST_ROOT}") - endif() - list(APPEND - THRIFT_CMAKE_ARGS - "-DBoost_INCLUDE_DIR=$" - ) - if(DEFINED Boost_NAMESPACE) - list(APPEND THRIFT_CMAKE_ARGS "-DBoost_NAMESPACE=${Boost_NAMESPACE}") +function(build_thrift) + list(APPEND CMAKE_MESSAGE_INDENT "Thrift: ") + message(STATUS "Building from source") + + if(CMAKE_VERSION VERSION_LESS 3.26) + message(FATAL_ERROR "Require CMake 3.26 or later for building bundled Apache Thrift") endif() + fetchcontent_declare(thrift + ${FC_DECLARE_COMMON_OPTIONS} + URL ${THRIFT_SOURCE_URL} + URL_HASH "SHA256=${ARROW_THRIFT_BUILD_SHA256_CHECKSUM}") + prepare_fetchcontent() + set(BUILD_COMPILER OFF) + set(BUILD_EXAMPLES OFF) + set(BUILD_TUTORIALS OFF) + set(CMAKE_UNITY_BUILD OFF) + set(WITH_AS3 OFF) + set(WITH_CPP ON) + set(WITH_C_GLIB OFF) + set(WITH_JAVA OFF) + set(WITH_JAVASCRIPT OFF) + set(WITH_LIBEVENT OFF) if(MSVC) if(ARROW_USE_STATIC_CRT) - set(THRIFT_LIB_SUFFIX "mt") - list(APPEND THRIFT_CMAKE_ARGS "-DWITH_MT=ON") + set(WITH_MT ON) else() - set(THRIFT_LIB_SUFFIX "md") - list(APPEND THRIFT_CMAKE_ARGS "-DWITH_MT=OFF") + set(WITH_MT OFF) endif() - # NOTE(amoeba): When you bump Thrift to >=0.21.0, change bin to lib - set(THRIFT_LIB - "${THRIFT_PREFIX}/bin/${CMAKE_IMPORT_LIBRARY_PREFIX}thrift${THRIFT_LIB_SUFFIX}${CMAKE_IMPORT_LIBRARY_SUFFIX}" - ) - else() - set(THRIFT_LIB - "${THRIFT_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}thrift${CMAKE_STATIC_LIBRARY_SUFFIX}" - ) endif() + set(WITH_NODEJS OFF) + set(WITH_PYTHON OFF) + set(WITH_QT5 OFF) + set(WITH_ZLIB OFF) - if(BOOST_VENDORED) - set(THRIFT_DEPENDENCIES ${THRIFT_DEPENDENCIES} boost_ep) - endif() + # Remove Apache Arrow's CMAKE_MODULE_PATH to ensure using Apache + # Thrift's cmake_modules/. + # + # We can remove this once https://github.com/apache/thrift/pull/3176 + # is merged. + list(POP_FRONT CMAKE_MODULE_PATH) + fetchcontent_makeavailable(thrift) - set(THRIFT_PATCH_COMMAND) - if(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15.0) - # Thrift 0.21.0 doesn't support GCC 15. - # https://github.com/apache/arrow/issues/45096 - # https://github.com/apache/thrift/pull/3078 - find_program(PATCH patch REQUIRED) - list(APPEND - THRIFT_PATCH_COMMAND - ${PATCH} - -p1 - -i - ${CMAKE_CURRENT_LIST_DIR}/thrift-cstdint.patch) + if(CMAKE_VERSION VERSION_LESS 3.28) + set_property(DIRECTORY ${thrift_SOURCE_DIR} PROPERTY EXCLUDE_FROM_ALL TRUE) endif() - externalproject_add(thrift_ep - ${EP_COMMON_OPTIONS} - URL ${THRIFT_SOURCE_URL} - URL_HASH "SHA256=${ARROW_THRIFT_BUILD_SHA256_CHECKSUM}" - BUILD_BYPRODUCTS "${THRIFT_LIB}" - CMAKE_ARGS ${THRIFT_CMAKE_ARGS} - DEPENDS ${THRIFT_DEPENDENCIES} - PATCH_COMMAND ${THRIFT_PATCH_COMMAND}) - - add_library(thrift::thrift STATIC IMPORTED) - # The include directory must exist before it is referenced by a target. - file(MAKE_DIRECTORY "${THRIFT_INCLUDE_DIR}") - set_target_properties(thrift::thrift PROPERTIES IMPORTED_LOCATION "${THRIFT_LIB}") - target_include_directories(thrift::thrift BEFORE INTERFACE "${THRIFT_INCLUDE_DIR}") - if(ARROW_USE_BOOST) - target_link_libraries(thrift::thrift INTERFACE Boost::headers) + target_include_directories(thrift + INTERFACE $ + $ + ) + if(BOOST_VENDORED) + target_link_libraries(thrift PUBLIC $) + target_link_libraries(thrift PRIVATE $) endif() - add_dependencies(thrift::thrift thrift_ep) - set(Thrift_VERSION ${ARROW_THRIFT_BUILD_VERSION}) - set(THRIFT_VENDORED TRUE) - list(APPEND ARROW_BUNDLED_STATIC_LIBS thrift::thrift) -endmacro() + add_library(thrift::thrift INTERFACE IMPORTED) + target_link_libraries(thrift::thrift INTERFACE thrift) + + set(Thrift_VERSION + ${ARROW_THRIFT_BUILD_VERSION} + PARENT_SCOPE) + set(THRIFT_VENDORED + TRUE + PARENT_SCOPE) + set(ARROW_BUNDLED_STATIC_LIBS + ${ARROW_BUNDLED_STATIC_LIBS} thrift + PARENT_SCOPE) + + list(POP_BACK CMAKE_MESSAGE_INDENT) +endfunction() if(ARROW_WITH_THRIFT) # Thrift C++ code generated by 0.13 requires 0.11 or greater @@ -2697,9 +2656,8 @@ function(build_lz4) # Add to bundled static libs. # We must use lz4_static (not imported target) not LZ4::lz4 (imported target). - list(APPEND ARROW_BUNDLED_STATIC_LIBS lz4_static) set(ARROW_BUNDLED_STATIC_LIBS - ${ARROW_BUNDLED_STATIC_LIBS} + ${ARROW_BUNDLED_STATIC_LIBS} lz4_static PARENT_SCOPE) endfunction() @@ -5268,9 +5226,8 @@ function(build_awssdk) set(AWSSDK_VENDORED TRUE PARENT_SCOPE) - list(APPEND ARROW_BUNDLED_STATIC_LIBS ${AWSSDK_LINK_LIBRARIES}) set(ARROW_BUNDLED_STATIC_LIBS - ${ARROW_BUNDLED_STATIC_LIBS} + ${ARROW_BUNDLED_STATIC_LIBS} ${AWSSDK_LINK_LIBRARIES} PARENT_SCOPE) set(AWSSDK_LINK_LIBRARIES ${AWSSDK_LINK_LIBRARIES} @@ -5336,15 +5293,13 @@ function(build_azure_sdk) set(AZURE_SDK_VENDORED TRUE PARENT_SCOPE) - list(APPEND - ARROW_BUNDLED_STATIC_LIBS - Azure::azure-core - Azure::azure-identity - Azure::azure-storage-blobs - Azure::azure-storage-common - Azure::azure-storage-files-datalake) set(ARROW_BUNDLED_STATIC_LIBS ${ARROW_BUNDLED_STATIC_LIBS} + Azure::azure-core + Azure::azure-identity + Azure::azure-storage-blobs + Azure::azure-storage-common + Azure::azure-storage-files-datalake PARENT_SCOPE) endfunction() diff --git a/cpp/cmake_modules/thrift-cstdint.patch b/cpp/cmake_modules/thrift-cstdint.patch deleted file mode 100644 index b670ba695e2..00000000000 --- a/cpp/cmake_modules/thrift-cstdint.patch +++ /dev/null @@ -1,68 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - -# https://github.com/apache/thrift/pull/3078 - -From 1920f04398ca32e320f6cf942534ba9d8b3231fd Mon Sep 17 00:00:00 2001 -From: Sutou Kouhei -Date: Mon, 23 Dec 2024 12:33:22 +0900 -Subject: [PATCH] THRIFT-5842: Add missing cstdint include for int64_t in - Mutex.h - -Client: cpp - -GCC 15 (not released yet) requires `#include ` for `int64_t` -but `lib/cpp/src/thrift/concurrency/Mutex.h` doesn't have it. So we -can't build Thrift with GCC 15: - - [80/359] Building CXX object lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o - FAILED: lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o - /bin/g++-15 -DBOOST_ALL_DYN_LINK -DBOOST_TEST_DYN_LINK -DTHRIFT_STATIC_DEFINE -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/kou/work/cpp/thrift.kou.build/lib/cpp -I/home/kou/work/cpp/thrift.kou/lib/cpp -I/home/kou/work/cpp/thrift.kou.build -I/home/kou/work/cpp/thrift.kou/lib/cpp/src -g -std=c++11 -MD -MT lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o -MF lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o.d -o lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o -c /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/transport/TSSLServerSocket.cpp - In file included from /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/transport/TServerSocket.h:25, - from /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/transport/TSSLServerSocket.h:23, - from /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/transport/TSSLServerSocket.cpp:21: - /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/concurrency/Mutex.h:47:26: error: 'int64_t' has not been declared - 47 | virtual bool timedlock(int64_t milliseconds) const; - | ^~~~~~~ - /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/concurrency/Mutex.h:25:1: note: 'int64_t' is defined in header ''; this is probably fixable by adding '#include ' - 24 | #include - +++ |+#include - 25 | - /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/concurrency/Mutex.h:60:29: error: 'int64_t' has not been declared - 60 | Guard(const Mutex& value, int64_t timeout = 0) : mutex_(&value) { - | ^~~~~~~ - /home/kou/work/cpp/thrift.kou/lib/cpp/src/thrift/concurrency/Mutex.h:60:29: note: 'int64_t' is defined in header ''; this is probably fixable by adding '#include ' - -See also: https://github.com/apache/arrow/issues/45096 ---- - lib/cpp/src/thrift/concurrency/Mutex.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/cpp/src/thrift/concurrency/Mutex.h b/lib/cpp/src/thrift/concurrency/Mutex.h -index 1e5c3fba3..12f1729d6 100644 ---- a/lib/cpp/src/thrift/concurrency/Mutex.h -+++ b/lib/cpp/src/thrift/concurrency/Mutex.h -@@ -20,6 +20,7 @@ - #ifndef _THRIFT_CONCURRENCY_MUTEX_H_ - #define _THRIFT_CONCURRENCY_MUTEX_H_ 1 - -+#include - #include - #include - --- -2.45.2 diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt index aa701fd1bd1..b33acae5b9e 100644 --- a/cpp/src/arrow/CMakeLists.txt +++ b/cpp/src/arrow/CMakeLists.txt @@ -638,13 +638,13 @@ else() endif() set(ARROW_TESTING_SHARED_LINK_LIBS arrow_shared ${ARROW_GTEST_GTEST}) -set(ARROW_TESTING_SHARED_PRIVATE_LINK_LIBS arrow::flatbuffers RapidJSON Boost::process) -set(ARROW_TESTING_STATIC_LINK_LIBS - arrow::flatbuffers - RapidJSON - Boost::process - arrow_static - ${ARROW_GTEST_GTEST}) +set(ARROW_TESTING_SHARED_PRIVATE_LINK_LIBS arrow::flatbuffers RapidJSON) +set(ARROW_TESTING_STATIC_LINK_LIBS arrow::flatbuffers RapidJSON arrow_static + ${ARROW_GTEST_GTEST}) +if(ARROW_ENABLE_THREADING) + list(APPEND ARROW_TESTING_SHARED_PRIVATE_LINK_LIBS arrow::Boost::process) + list(APPEND ARROW_TESTING_STATIC_LINK_LIBS arrow::Boost::process) +endif() set(ARROW_TESTING_SHARED_INSTALL_INTERFACE_LIBS Arrow::arrow_shared) set(ARROW_TESTING_STATIC_INSTALL_INTERFACE_LIBS Arrow::arrow_static) # that depend on gtest diff --git a/cpp/src/arrow/acero/meson.build b/cpp/src/arrow/acero/meson.build index 9c333904ad0..007128d73d2 100644 --- a/cpp/src/arrow/acero/meson.build +++ b/cpp/src/arrow/acero/meson.build @@ -80,7 +80,7 @@ arrow_acero_srcs = [ arrow_acero_lib = library( 'arrow-acero', sources: arrow_acero_srcs, - dependencies: [arrow_compute_dep, arrow_dep], + dependencies: [arrow_compute_dep, arrow_dep, threads_dep], gnu_symbol_visibility: 'hidden', ) diff --git a/cpp/src/arrow/flight/sql/CMakeLists.txt b/cpp/src/arrow/flight/sql/CMakeLists.txt index 958fea40acf..4b6764bd8c7 100644 --- a/cpp/src/arrow/flight/sql/CMakeLists.txt +++ b/cpp/src/arrow/flight/sql/CMakeLists.txt @@ -117,9 +117,9 @@ if(ARROW_BUILD_TESTS OR ARROW_BUILD_EXAMPLES) set(ARROW_FLIGHT_SQL_TEST_SRCS server_test.cc server_session_middleware_internals_test.cc) - set(ARROW_FLIGHT_SQL_TEST_LIBS ${SQLite3_LIBRARIES}) + set(ARROW_FLIGHT_SQL_TEST_LIBS ${SQLite3_LIBRARIES} Boost::headers) set(ARROW_FLIGHT_SQL_ACERO_SRCS example/acero_server.cc) - set(ARROW_FLIGHT_SQL_EXTRA_LINK_LIBS "") + set(ARROW_FLIGHT_SQL_TEST_EXTRA_LINK_LIBS "") if(ARROW_COMPUTE AND ARROW_PARQUET @@ -130,7 +130,7 @@ if(ARROW_BUILD_TESTS OR ARROW_BUILD_EXAMPLES) else() list(APPEND ARROW_FLIGHT_SQL_TEST_LIBS arrow_substrait_shared) endif() - list(APPEND ARROW_FLIGHT_SQL_EXTRA_LINK_LIBS arrow_compute_testing) + list(APPEND ARROW_FLIGHT_SQL_TEST_EXTRA_LINK_LIBS arrow_compute_testing) if(ARROW_BUILD_EXAMPLES) add_executable(acero-flight-sql-server ${ARROW_FLIGHT_SQL_ACERO_SRCS} @@ -149,7 +149,7 @@ if(ARROW_BUILD_TESTS OR ARROW_BUILD_EXAMPLES) ${ARROW_FLIGHT_SQL_TEST_LINK_LIBS} ${ARROW_FLIGHT_SQL_TEST_LIBS} EXTRA_LINK_LIBS - ${ARROW_FLIGHT_SQL_EXTRA_LINK_LIBS} + ${ARROW_FLIGHT_SQL_TEST_EXTRA_LINK_LIBS} EXTRA_INCLUDES "${CMAKE_CURRENT_BINARY_DIR}/../" LABELS @@ -158,12 +158,12 @@ if(ARROW_BUILD_TESTS OR ARROW_BUILD_EXAMPLES) add_executable(flight-sql-test-server test_server_cli.cc ${ARROW_FLIGHT_SQL_TEST_SERVER_SRCS}) target_link_libraries(flight-sql-test-server - PRIVATE ${ARROW_FLIGHT_SQL_TEST_LINK_LIBS} ${GFLAGS_LIBRARIES} - ${SQLite3_LIBRARIES}) + PRIVATE ${ARROW_FLIGHT_SQL_TEST_LINK_LIBS} + ${ARROW_FLIGHT_SQL_TEST_LIBS} ${GFLAGS_LIBRARIES}) add_executable(flight-sql-test-app test_app_cli.cc) target_link_libraries(flight-sql-test-app PRIVATE ${ARROW_FLIGHT_SQL_TEST_LINK_LIBS} - ${GFLAGS_LIBRARIES}) + Boost::headers ${GFLAGS_LIBRARIES}) if(ARROW_FLIGHT_TEST_LINKAGE STREQUAL "static" AND ARROW_BUILD_STATIC) foreach(TEST_TARGET arrow-flight-sql-test flight-sql-test-server flight-sql-test-app) diff --git a/cpp/src/arrow/testing/process.cc b/cpp/src/arrow/testing/process.cc index e32703bd9d9..e5632e47253 100644 --- a/cpp/src/arrow/testing/process.cc +++ b/cpp/src/arrow/testing/process.cc @@ -17,10 +17,10 @@ #include "arrow/testing/process.h" #include "arrow/result.h" +#include "arrow/util/config.h" -#define BOOST_PROCESS_AVAILABLE -#ifdef __EMSCRIPTEN__ -# undef BOOST_PROCESS_AVAILABLE +#ifdef ARROW_ENABLE_THREADING +# define BOOST_PROCESS_AVAILABLE #endif #ifdef BOOST_PROCESS_AVAILABLE diff --git a/cpp/src/arrow/util/meson.build b/cpp/src/arrow/util/meson.build index 50de87635e0..b6f674b2b14 100644 --- a/cpp/src/arrow/util/meson.build +++ b/cpp/src/arrow/util/meson.build @@ -53,7 +53,7 @@ conf_data.set('ARROW_ORC', false) conf_data.set('ARROW_PARQUET', false) conf_data.set('ARROW_SUBSTRAIT', false) conf_data.set('ARROW_AZURE', false) -conf_data.set('ARROW_ENABLE_THREADING', false) +conf_data.set('ARROW_ENABLE_THREADING', true) conf_data.set('ARROW_GCS', false) conf_data.set('ARROW_HDFS', false) conf_data.set('ARROW_S3', false) diff --git a/cpp/thirdparty/update.rb b/cpp/thirdparty/update.rb index 77f22de04fb..c8c9245ddd2 100755 --- a/cpp/thirdparty/update.rb +++ b/cpp/thirdparty/update.rb @@ -89,7 +89,7 @@ def update_product_generic(product, metadata, latest_version) version: latest_version, version_underscore: latest_version.gsub(".", "_"), } - $stderr.puts("Updating #{product}: #{version} -> #{latest_version}") + $stderr.puts("Updating #{product}: #{version} -> #{latest_version}: #{url}") metadata[:version] = latest_version URI.open(url, "rb") do |response| metadata[:checksum] = Digest::SHA256.hexdigest(response.read) @@ -106,7 +106,9 @@ def update_product_github(product, metadata, repository) JSON.parse(response.read) end latest_tag_name = tags[0]["name"] - if latest_tag_name.start_with?("v") + if latest_tag_name.start_with?("boost-") + latest_version = latest_tag_name.delete_prefix("boost-") + elsif latest_tag_name.start_with?("v") if metadata[:version].start_with?("v") latest_version = latest_tag_name else diff --git a/cpp/thirdparty/versions.txt b/cpp/thirdparty/versions.txt index 96ae7c6f035..6e413dda684 100644 --- a/cpp/thirdparty/versions.txt +++ b/cpp/thirdparty/versions.txt @@ -56,8 +56,8 @@ ARROW_AWSSDK_BUILD_SHA256_CHECKSUM=b9944ba9905a68d6e53abb4f36ab2b3bd18ac88d85716 # Despite the confusing version name this is still the whole Azure SDK for C++ including core, keyvault, storage-common, etc. ARROW_AZURE_SDK_BUILD_VERSION=azure-identity_1.9.0 ARROW_AZURE_SDK_BUILD_SHA256_CHECKSUM=97065bfc971ac8df450853ce805f820f52b59457bd7556510186a1569502e4a1 -ARROW_BOOST_BUILD_VERSION=1.81.0 -ARROW_BOOST_BUILD_SHA256_CHECKSUM=9e0ffae35528c35f90468997bc8d99500bf179cbae355415a89a600c38e13574 +ARROW_BOOST_BUILD_VERSION=1.88.0 +ARROW_BOOST_BUILD_SHA256_CHECKSUM=dcea50f40ba1ecfc448fdf886c0165cf3e525fef2c9e3e080b9804e8117b9694 ARROW_BROTLI_BUILD_VERSION=v1.0.9 ARROW_BROTLI_BUILD_SHA256_CHECKSUM=f9e8d81d0405ba66d181529af42a3354f838c939095ff99930da6aa9cdf6fe46 ARROW_BZIP2_BUILD_VERSION=1.0.8 @@ -107,8 +107,8 @@ ARROW_SUBSTRAIT_BUILD_VERSION=v0.44.0 ARROW_SUBSTRAIT_BUILD_SHA256_CHECKSUM=f989a862f694e7dbb695925ddb7c4ce06aa6c51aca945105c075139aed7e55a2 ARROW_S2N_TLS_BUILD_VERSION=v1.5.21 ARROW_S2N_TLS_BUILD_SHA256_CHECKSUM=203d69d6f557f6ab303438ad186fca13fd2c60581b2cca6348a9fbee10d79995 -ARROW_THRIFT_BUILD_VERSION=0.20.0 -ARROW_THRIFT_BUILD_SHA256_CHECKSUM=b5d8311a779470e1502c027f428a1db542f5c051c8e1280ccd2163fa935ff2d6 +ARROW_THRIFT_BUILD_VERSION=0.22.0 +ARROW_THRIFT_BUILD_SHA256_CHECKSUM=794a0e455787960d9f27ab92c38e34da27e8deeda7a5db0e59dc64a00df8a1e5 ARROW_UTF8PROC_BUILD_VERSION=v2.10.0 ARROW_UTF8PROC_BUILD_SHA256_CHECKSUM=6f4f1b639daa6dca9f80bc5db1233e9cbaa31a67790887106160b33ef743f136 ARROW_XSIMD_BUILD_VERSION=13.0.0 @@ -139,7 +139,7 @@ DEPENDENCIES=( "ARROW_AWS_CRT_CPP_URL aws-crt-cpp-${ARROW_AWS_CRT_CPP_BUILD_VERSION}.tar.gz https://github.com/awslabs/aws-crt-cpp/archive/${ARROW_AWS_CRT_CPP_BUILD_VERSION}.tar.gz" "ARROW_AWS_LC_URL aws-lc-${ARROW_AWS_LC_BUILD_VERSION}.tar.gz https://github.com/awslabs/aws-lc/archive/${ARROW_AWS_LC_BUILD_VERSION}.tar.gz" "ARROW_AWSSDK_URL aws-sdk-cpp-${ARROW_AWSSDK_BUILD_VERSION}.tar.gz https://github.com/aws/aws-sdk-cpp/archive/${ARROW_AWSSDK_BUILD_VERSION}.tar.gz" - "ARROW_BOOST_URL boost-${ARROW_BOOST_BUILD_VERSION}.tar.gz https://apache.jfrog.io/artifactory/arrow/thirdparty/7.0.0/boost_${ARROW_BOOST_BUILD_VERSION//./_}.tar.gz" + "ARROW_BOOST_URL boost-${ARROW_BOOST_BUILD_VERSION}-cmake.tar.gz https://github.com/boostorg/boost/releases/download/boost-${ARROW_BOOST_BUILD_VERSION}/boost-${ARROW_BOOST_BUILD_VERSION}-cmake.tar.gz" "ARROW_BROTLI_URL brotli-${ARROW_BROTLI_BUILD_VERSION}.tar.gz https://github.com/google/brotli/archive/${ARROW_BROTLI_BUILD_VERSION}.tar.gz" "ARROW_BZIP2_URL bzip2-${ARROW_BZIP2_BUILD_VERSION}.tar.gz https://sourceware.org/pub/bzip2/bzip2-${ARROW_BZIP2_BUILD_VERSION}.tar.gz" "ARROW_CARES_URL cares-${ARROW_CARES_BUILD_VERSION}.tar.gz https://github.com/c-ares/c-ares/releases/download/cares-${ARROW_CARES_BUILD_VERSION//./_}/c-ares-${ARROW_CARES_BUILD_VERSION}.tar.gz" diff --git a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-jammy/Dockerfile b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-jammy/Dockerfile index 64db49c3589..40e1d0ab4a6 100644 --- a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-jammy/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-jammy/Dockerfile @@ -87,7 +87,7 @@ RUN \ # We install CMake via apt and create a symbolic link to avoid having to: # Temporarily remove the build-depends check on control.in # Create the link on debian rules as --buildsystem=cmake expects cmake on /usr/bin -ARG cmake=3.25.0 +ARG cmake=3.26.0 RUN curl -L \ "https://github.com/Kitware/CMake/releases/download/v${cmake}/cmake-${cmake}-linux-$(uname -m).tar.gz" | \ tar -xzf - --directory /usr/local --strip-components=1 && \ diff --git a/dev/tasks/linux-packages/apache-arrow/yum/amazon-linux-2023/Dockerfile b/dev/tasks/linux-packages/apache-arrow/yum/amazon-linux-2023/Dockerfile index a5664dbbbe9..9a672a61405 100644 --- a/dev/tasks/linux-packages/apache-arrow/yum/amazon-linux-2023/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow/yum/amazon-linux-2023/Dockerfile @@ -61,7 +61,7 @@ RUN \ zlib-devel && \ dnf clean ${quiet} all -ARG cmake=3.25.0 +ARG cmake=3.26.0 RUN curl -L \ "https://github.com/Kitware/CMake/releases/download/v${cmake}/cmake-${cmake}-linux-$(uname -m).tar.gz" | \ tar -xzf - --directory /usr/local --strip-components=1 && \ diff --git a/dev/tasks/linux-packages/apache-arrow/yum/centos-7/Dockerfile b/dev/tasks/linux-packages/apache-arrow/yum/centos-7/Dockerfile index 56e2f52ff3c..278dbab4c44 100644 --- a/dev/tasks/linux-packages/apache-arrow/yum/centos-7/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow/yum/centos-7/Dockerfile @@ -75,7 +75,7 @@ RUN \ zlib-devel && \ yum clean ${quiet} all -ARG cmake=3.25.0 +ARG cmake=3.26.0 RUN curl -L \ "https://github.com/Kitware/CMake/releases/download/v${cmake}/cmake-${cmake}-linux-$(uname -m).tar.gz" | \ tar -xzf - --directory /usr/local --strip-components=1 && \