Skip to content

Commit 7fc8222

Browse files
wgtmackou
andauthored
GH-45225: [C++] Upgrade ORC to 2.1.0 (#45226)
### Rationale for this change Apache ORC has just released 2.1.0: https://orc.apache.org/news/2025/01/09/ORC-2.1.0/ We need to upgrade it to avoid occasional download failures of orc-format. ### What changes are included in this PR? Bump Apache ORC to its latest version 2.1.0. ### Are these changes tested? Pass CIs. ### Are there any user-facing changes? No. * GitHub Issue: #45225 Lead-authored-by: Gang Wu <[email protected]> Co-authored-by: Sutou Kouhei <[email protected]> Signed-off-by: Gang Wu <[email protected]>
1 parent 0758845 commit 7fc8222

File tree

9 files changed

+319
-23
lines changed

9 files changed

+319
-23
lines changed

ci/docker/debian-12-cpp.dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ RUN apt-get update -y -q && \
8484
ninja-build \
8585
nlohmann-json3-dev \
8686
npm \
87+
patch \
8788
pkg-config \
8889
protobuf-compiler-grpc \
8990
python3-dev \

ci/docker/ubuntu-20.04-cpp.dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ RUN apt-get update -y -q && \
106106
ninja-build \
107107
nlohmann-json3-dev \
108108
npm \
109+
patch \
109110
pkg-config \
110111
protobuf-compiler \
111112
python3-dev \

ci/docker/ubuntu-22.04-cpp.dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ RUN apt-get update -y -q && \
111111
ninja-build \
112112
nlohmann-json3-dev \
113113
npm \
114+
patch \
114115
pkg-config \
115116
protobuf-compiler \
116117
protobuf-compiler-grpc \

ci/docker/ubuntu-24.04-cpp.dockerfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ RUN apt-get update -y -q && \
111111
ninja-build \
112112
nlohmann-json3-dev \
113113
npm \
114+
patch \
114115
pkg-config \
115116
protobuf-compiler \
116117
protobuf-compiler-grpc \

cpp/cmake_modules/ThirdpartyToolchain.cmake

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4573,11 +4573,16 @@ target_include_directories(arrow::hadoop INTERFACE "${HADOOP_HOME}/include")
45734573
function(build_orc)
45744574
message(STATUS "Building Apache ORC from source")
45754575

4576+
# Remove this and "patch" in "ci/docker/{debian,ubuntu}-*.dockerfile" once we have a patch for ORC 2.1.1
4577+
find_program(PATCH patch REQUIRED)
4578+
set(ORC_PATCH_COMMAND ${PATCH} -p1 -i ${CMAKE_CURRENT_LIST_DIR}/orc.diff)
4579+
45764580
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.29)
45774581
fetchcontent_declare(orc
45784582
${FC_DECLARE_COMMON_OPTIONS}
45794583
URL ${ORC_SOURCE_URL}
4580-
URL_HASH "SHA256=${ARROW_ORC_BUILD_SHA256_CHECKSUM}")
4584+
URL_HASH "SHA256=${ARROW_ORC_BUILD_SHA256_CHECKSUM}"
4585+
PATCH_COMMAND ${ORC_PATCH_COMMAND})
45814586
prepare_fetchcontent()
45824587

45834588
set(CMAKE_UNITY_BUILD FALSE)
@@ -4667,16 +4672,10 @@ function(build_orc)
46674672
OFF
46684673
CACHE BOOL "" FORCE)
46694674

4670-
# We can remove this with ORC 2.0.2 or later.
4671-
list(PREPEND CMAKE_MODULE_PATH
4672-
${CMAKE_CURRENT_BINARY_DIR}/_deps/orc-src/cmake_modules)
4673-
46744675
fetchcontent_makeavailable(orc)
46754676

46764677
add_library(orc::orc INTERFACE IMPORTED)
46774678
target_link_libraries(orc::orc INTERFACE orc)
4678-
target_include_directories(orc::orc INTERFACE "${orc_BINARY_DIR}/c++/include"
4679-
"${orc_SOURCE_DIR}/c++/include")
46804679

46814680
list(APPEND ARROW_BUNDLED_STATIC_LIBS orc)
46824681
else()
@@ -4701,6 +4700,9 @@ function(build_orc)
47014700
get_target_property(ORC_ZSTD_ROOT ${ARROW_ZSTD_LIBZSTD} INTERFACE_INCLUDE_DIRECTORIES)
47024701
get_filename_component(ORC_ZSTD_ROOT "${ORC_ZSTD_ROOT}" DIRECTORY)
47034702

4703+
get_target_property(ORC_ZLIB_ROOT ZLIB::ZLIB INTERFACE_INCLUDE_DIRECTORIES)
4704+
get_filename_component(ORC_ZLIB_ROOT "${ORC_ZLIB_ROOT}" DIRECTORY)
4705+
47044706
set(ORC_CMAKE_ARGS
47054707
${EP_COMMON_CMAKE_ARGS}
47064708
"-DCMAKE_INSTALL_PREFIX=${ORC_PREFIX}"
@@ -4710,24 +4712,24 @@ function(build_orc)
47104712
-DBUILD_TOOLS=OFF
47114713
-DBUILD_CPP_TESTS=OFF
47124714
-DINSTALL_VENDORED_LIBS=OFF
4713-
"-DLZ4_HOME=${ORC_LZ4_ROOT}"
47144715
"-DPROTOBUF_EXECUTABLE=$<TARGET_FILE:${ARROW_PROTOBUF_PROTOC}>"
47154716
"-DPROTOBUF_HOME=${ORC_PROTOBUF_ROOT}"
47164717
"-DPROTOBUF_INCLUDE_DIR=$<TARGET_PROPERTY:${ARROW_PROTOBUF_LIBPROTOBUF},INTERFACE_INCLUDE_DIRECTORIES>"
47174718
"-DPROTOBUF_LIBRARY=$<TARGET_FILE:${ARROW_PROTOBUF_LIBPROTOBUF}>"
47184719
"-DPROTOC_LIBRARY=$<TARGET_FILE:${ARROW_PROTOBUF_LIBPROTOC}>"
47194720
"-DSNAPPY_HOME=${ORC_SNAPPY_ROOT}"
47204721
"-DSNAPPY_LIBRARY=$<TARGET_FILE:${Snappy_TARGET}>"
4722+
"-DLZ4_HOME=${ORC_LZ4_ROOT}"
47214723
"-DLZ4_LIBRARY=$<TARGET_FILE:LZ4::lz4>"
47224724
"-DLZ4_STATIC_LIB=$<TARGET_FILE:LZ4::lz4>"
47234725
"-DLZ4_INCLUDE_DIR=${ORC_LZ4_ROOT}/include"
47244726
"-DSNAPPY_INCLUDE_DIR=${ORC_SNAPPY_INCLUDE_DIR}"
47254727
"-DZSTD_HOME=${ORC_ZSTD_ROOT}"
47264728
"-DZSTD_INCLUDE_DIR=$<TARGET_PROPERTY:${ARROW_ZSTD_LIBZSTD},INTERFACE_INCLUDE_DIRECTORIES>"
4727-
"-DZSTD_LIBRARY=$<TARGET_FILE:${ARROW_ZSTD_LIBZSTD}>")
4728-
if(ZLIB_ROOT)
4729-
set(ORC_CMAKE_ARGS ${ORC_CMAKE_ARGS} "-DZLIB_HOME=${ZLIB_ROOT}")
4730-
endif()
4729+
"-DZSTD_LIBRARY=$<TARGET_FILE:${ARROW_ZSTD_LIBZSTD}>"
4730+
"-DZLIB_HOME=${ORC_ZLIB_ROOT}"
4731+
"-DZLIB_INCLUDE_DIR=$<TARGET_PROPERTY:ZLIB::ZLIB,INTERFACE_INCLUDE_DIRECTORIES>"
4732+
"-DZLIB_LIBRARY=$<TARGET_FILE:ZLIB::ZLIB>")
47314733

47324734
# Work around CMake bug
47334735
file(MAKE_DIRECTORY ${ORC_INCLUDE_DIR})
@@ -4743,7 +4745,8 @@ function(build_orc)
47434745
${ARROW_ZSTD_LIBZSTD}
47444746
${Snappy_TARGET}
47454747
LZ4::lz4
4746-
ZLIB::ZLIB)
4748+
ZLIB::ZLIB
4749+
PATCH_COMMAND ${ORC_PATCH_COMMAND})
47474750
add_library(orc::orc STATIC IMPORTED)
47484751
set_target_properties(orc::orc PROPERTIES IMPORTED_LOCATION "${ORC_STATIC_LIB}")
47494752
target_include_directories(orc::orc BEFORE INTERFACE "${ORC_INCLUDE_DIR}")

0 commit comments

Comments
 (0)