This is an automated email from the ASF dual-hosted git repository.
raulcd pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new f3a0848616 GH-50648: [Packaging][Linux] Enable OpenTelemetry (#50650)
f3a0848616 is described below
commit f3a0848616ec6bde58c0c96ba868bbb120e471d9
Author: Sutou Kouhei <[email protected]>
AuthorDate: Tue Aug 4 01:00:02 2026 +0900
GH-50648: [Packaging][Linux] Enable OpenTelemetry (#50650)
### Rationale for this change
Debian GNU/Linux trixie or later and Ubuntu 26.04 or later provide
opentelemetry-cpp-dev:
* https://packages.debian.org/search?keywords=opentelemetry-cpp-dev
* https://packages.ubuntu.com/search?keywords=opentelemetry-cpp-dev
### What changes are included in this PR?
* Install opentelemetry-cpp-dev if it's available
* Build bundled opentelemetry-cpp-dev if it's not available (including RPM)
* Add missing dependencies for static build
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes.
* GitHub Issue: #50648
Authored-by: Sutou Kouhei <[email protected]>
Signed-off-by: Raúl Cumplido <[email protected]>
---
cpp/cmake_modules/ThirdpartyToolchain.cmake | 326 ++++++++++-----------
cpp/src/arrow/ArrowConfig.cmake.in | 10 +-
cpp/src/arrow/CMakeLists.txt | 2 +-
dev/release/verify-yum.sh | 4 +-
dev/tasks/linux-packages/apache-arrow/Rakefile | 20 ++
.../apache-arrow/apt/debian-forky/Dockerfile | 2 +
.../apache-arrow/apt/debian-trixie/Dockerfile | 2 +
.../apache-arrow/apt/ubuntu-resolute/Dockerfile | 2 +
.../linux-packages/apache-arrow/debian/control.in | 4 +
dev/tasks/linux-packages/apache-arrow/debian/rules | 1 +
.../linux-packages/apache-arrow/yum/arrow.spec.in | 1 +
11 files changed, 197 insertions(+), 177 deletions(-)
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake
b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index dd1e5da15e..8506a07ec8 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -1473,7 +1473,7 @@ macro(build_snappy)
target_include_directories(${Snappy_TARGET} BEFORE INTERFACE
"${SNAPPY_PREFIX}/include")
add_dependencies(${Snappy_TARGET} snappy_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS ${Snappy_TARGET})
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS ${Snappy_TARGET})
endmacro()
if(ARROW_WITH_SNAPPY)
@@ -1576,7 +1576,7 @@ macro(build_brotli)
target_include_directories(Brotli::brotlidec BEFORE INTERFACE
"${BROTLI_INCLUDE_DIR}")
add_dependencies(Brotli::brotlidec brotli_ep)
- list(APPEND
+ list(PREPEND
ARROW_BUNDLED_STATIC_LIBS
Brotli::brotlicommon
Brotli::brotlienc
@@ -1671,7 +1671,7 @@ macro(build_glog)
target_include_directories(glog::glog BEFORE INTERFACE "${GLOG_INCLUDE_DIR}")
add_dependencies(glog::glog glog_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS glog::glog)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS glog::glog)
endmacro()
if(ARROW_USE_GLOG)
@@ -1740,7 +1740,7 @@ macro(build_gflags)
set(GFLAGS_VENDORED TRUE)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS gflags::gflags_static)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS gflags::gflags_static)
endmacro()
if(ARROW_NEED_GFLAGS)
@@ -1868,8 +1868,9 @@ function(build_thrift)
set(THRIFT_VENDORED
TRUE
PARENT_SCOPE)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS thrift)
set(ARROW_BUNDLED_STATIC_LIBS
- ${ARROW_BUNDLED_STATIC_LIBS} thrift
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
list(POP_BACK CMAKE_MESSAGE_INDENT)
@@ -1937,6 +1938,101 @@ function(build_absl)
# Cannot use set_property on alias targets (absl::time is an alias)
target_link_libraries(time INTERFACE ${CoreFoundation})
endif()
+
+ list(PREPEND
+ ARROW_BUNDLED_STATIC_LIBS
+ absl::bad_any_cast_impl
+ absl::bad_optional_access
+ absl::bad_variant_access
+ absl::base
+ absl::city
+ absl::civil_time
+ absl::cord
+ absl::cord_internal
+ absl::cordz_functions
+ absl::cordz_handle
+ absl::cordz_info
+ absl::cordz_sample_token
+ absl::crc32c
+ absl::crc_cord_state
+ absl::crc_cpu_detect
+ absl::crc_internal
+ absl::debugging_internal
+ absl::decode_rust_punycode
+ absl::demangle_internal
+ absl::demangle_rust
+ absl::die_if_null
+ absl::examine_stack
+ absl::exponential_biased
+ absl::failure_signal_handler
+ absl::flags_commandlineflag
+ absl::flags_commandlineflag_internal
+ absl::flags_config
+ absl::flags_internal
+ absl::flags_marshalling
+ absl::flags_parse
+ absl::flags_private_handle_accessor
+ absl::flags_program_name
+ absl::flags_reflection
+ absl::flags_usage
+ absl::flags_usage_internal
+ absl::graphcycles_internal
+ absl::hash
+ absl::hashtablez_sampler
+ absl::int128
+ absl::kernel_timeout_internal
+ absl::leak_check
+ absl::log_globals
+ absl::log_initialize
+ absl::log_internal_check_op
+ absl::log_internal_conditions
+ absl::log_internal_fnmatch
+ absl::log_internal_format
+ absl::log_internal_globals
+ absl::log_internal_log_sink_set
+ absl::log_internal_message
+ absl::log_internal_nullguard
+ absl::log_internal_proto
+ absl::log_internal_structured_proto
+ absl::log_severity
+ absl::log_sink
+ absl::low_level_hash
+ absl::malloc_internal
+ absl::periodic_sampler
+ absl::poison
+ absl::random_distributions
+ absl::random_internal_distribution_test_util
+ absl::random_internal_platform
+ absl::random_internal_pool_urbg
+ absl::random_internal_randen
+ absl::random_internal_randen_hwaes
+ absl::random_internal_randen_hwaes_impl
+ absl::random_internal_randen_slow
+ absl::random_internal_seed_material
+ absl::random_seed_gen_exception
+ absl::random_seed_sequences
+ absl::raw_hash_set
+ absl::raw_logging_internal
+ absl::scoped_set_env
+ absl::spinlock_wait
+ absl::stacktrace
+ absl::status
+ absl::statusor
+ absl::str_format_internal
+ absl::strerror
+ absl::strings
+ absl::strings_internal
+ absl::symbolize
+ absl::synchronization
+ absl::throw_delegate
+ absl::time
+ absl::time_zone
+ absl::utf8_for_code_point
+ absl::vlog_config_internal)
+ set(ARROW_BUNDLED_STATIC_LIBS
+ ${ARROW_BUNDLED_STATIC_LIBS}
+ PARENT_SCOPE)
+
list(POP_BACK CMAKE_MESSAGE_INDENT)
endfunction()
@@ -2072,7 +2168,11 @@ function(build_protobuf)
# Make protobuf_fc depend on the install completion marker
add_custom_target(protobuf_fc DEPENDS
"${PROTOBUF_PREFIX}/.protobuf_installed")
- list(APPEND ARROW_BUNDLED_STATIC_LIBS protobuf::libprotobuf)
+
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS protobuf::libprotobuf utf8_range)
+ set(ARROW_BUNDLED_STATIC_LIBS
+ ${ARROW_BUNDLED_STATIC_LIBS}
+ PARENT_SCOPE)
if(CMAKE_CROSSCOMPILING)
# If we are cross compiling, we need to build protoc for the host
@@ -2080,9 +2180,6 @@ function(build_protobuf)
set(PROTOBUF_HOST_PREFIX
"${CMAKE_CURRENT_BINARY_DIR}/protobuf_ep_host-install")
set(PROTOBUF_HOST_COMPILER "${PROTOBUF_HOST_PREFIX}/bin/protoc")
- # cross-compiled (PyArrow on emscripten) needs utf8_range bundled
explicitly.
- list(APPEND ARROW_BUNDLED_STATIC_LIBS utf8_range)
-
set(PROTOBUF_HOST_CMAKE_ARGS
"-DCMAKE_CXX_FLAGS="
"-DCMAKE_C_FLAGS="
@@ -2111,102 +2208,8 @@ function(build_protobuf)
PROPERTIES IMPORTED_LOCATION
"${PROTOBUF_HOST_COMPILER}")
add_dependencies(arrow::protobuf::host_protoc protobuf_ep_host)
- # For cross-compilation along with ExternalProject we need to
- # manually include absl deps to the bundled static libs so that
- # they are available for the generated code in protobuf v31.
- list(APPEND
- ARROW_BUNDLED_STATIC_LIBS
- absl::bad_any_cast_impl
- absl::bad_optional_access
- absl::bad_variant_access
- absl::base
- absl::city
- absl::civil_time
- absl::cord
- absl::cord_internal
- absl::cordz_functions
- absl::cordz_handle
- absl::cordz_info
- absl::cordz_sample_token
- absl::crc32c
- absl::crc_cord_state
- absl::crc_cpu_detect
- absl::crc_internal
- absl::debugging_internal
- absl::decode_rust_punycode
- absl::demangle_internal
- absl::demangle_rust
- absl::die_if_null
- absl::examine_stack
- absl::exponential_biased
- absl::failure_signal_handler
- absl::flags_commandlineflag
- absl::flags_commandlineflag_internal
- absl::flags_config
- absl::flags_internal
- absl::flags_marshalling
- absl::flags_parse
- absl::flags_private_handle_accessor
- absl::flags_program_name
- absl::flags_reflection
- absl::flags_usage
- absl::flags_usage_internal
- absl::graphcycles_internal
- absl::hash
- absl::hashtablez_sampler
- absl::int128
- absl::kernel_timeout_internal
- absl::leak_check
- absl::log_globals
- absl::log_initialize
- absl::log_internal_check_op
- absl::log_internal_conditions
- absl::log_internal_fnmatch
- absl::log_internal_format
- absl::log_internal_globals
- absl::log_internal_log_sink_set
- absl::log_internal_message
- absl::log_internal_nullguard
- absl::log_internal_proto
- absl::log_severity
- absl::log_sink
- absl::low_level_hash
- absl::malloc_internal
- absl::periodic_sampler
- absl::poison
- absl::random_distributions
- absl::random_internal_distribution_test_util
- absl::random_internal_platform
- absl::random_internal_pool_urbg
- absl::random_internal_randen
- absl::random_internal_randen_hwaes
- absl::random_internal_randen_hwaes_impl
- absl::random_internal_randen_slow
- absl::random_internal_seed_material
- absl::random_seed_gen_exception
- absl::random_seed_sequences
- absl::raw_hash_set
- absl::raw_logging_internal
- absl::scoped_set_env
- absl::spinlock_wait
- absl::stacktrace
- absl::status
- absl::statusor
- absl::str_format_internal
- absl::strerror
- absl::strings
- absl::strings_internal
- absl::symbolize
- absl::synchronization
- absl::throw_delegate
- absl::time
- absl::time_zone
- absl::utf8_for_code_point
- absl::vlog_config_internal)
endif()
- set(ARROW_BUNDLED_STATIC_LIBS
- "${ARROW_BUNDLED_STATIC_LIBS}"
- PARENT_SCOPE)
+
list(POP_BACK CMAKE_MESSAGE_INDENT)
endfunction()
@@ -2450,7 +2453,7 @@ macro(build_substrait)
target_link_libraries(substrait PUBLIC ${ARROW_PROTOBUF_LIBPROTOBUF})
add_dependencies(substrait substrait_gen)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS substrait)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS substrait)
endmacro()
if(ARROW_SUBSTRAIT)
@@ -2534,7 +2537,7 @@ macro(build_jemalloc)
INTERFACE "${JEMALLOC_INCLUDE_DIR}")
add_dependencies(jemalloc::jemalloc jemalloc_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS jemalloc::jemalloc)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS jemalloc::jemalloc)
set(jemalloc_VENDORED TRUE)
# For config.h.cmake
@@ -2622,7 +2625,7 @@ if(ARROW_MIMALLOC)
endif()
add_dependencies(mimalloc::mimalloc mimalloc_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS mimalloc::mimalloc)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS mimalloc::mimalloc)
set(mimalloc_VENDORED TRUE)
endif()
@@ -2837,9 +2840,9 @@ function(build_simdjson)
TRUE
PARENT_SCOPE)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS simdjson)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS simdjson)
set(ARROW_BUNDLED_STATIC_LIBS
- "${ARROW_BUNDLED_STATIC_LIBS}"
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
list(POP_BACK CMAKE_MESSAGE_INDENT)
@@ -2967,7 +2970,7 @@ macro(build_zlib)
PROPERTY IMPORTED_LOCATION
"${EMSCRIPTEN_SYSROOT}/lib/wasm32-emscripten/pic/libz.a")
target_include_directories(ZLIB::ZLIB INTERFACE
"${EMSCRIPTEN_SYSROOT}/include")
- list(APPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB)
else()
set(ZLIB_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/zlib_ep/src/zlib_ep-install")
if(MSVC)
@@ -2998,7 +3001,7 @@ macro(build_zlib)
target_include_directories(ZLIB::ZLIB BEFORE INTERFACE
"${ZLIB_INCLUDE_DIRS}")
add_dependencies(ZLIB::ZLIB zlib_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS ZLIB::ZLIB)
endif()
set(ZLIB_VENDORED TRUE)
@@ -3044,8 +3047,9 @@ function(build_lz4)
# Add to bundled static libs.
# We must use lz4_static (not imported target) not LZ4::lz4 (imported
target).
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS lz4_static)
set(ARROW_BUNDLED_STATIC_LIBS
- ${ARROW_BUNDLED_STATIC_LIBS} lz4_static
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
endfunction()
@@ -3098,7 +3102,7 @@ macro(build_zstd)
add_dependencies(zstd::libzstd_static zstd_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS zstd::libzstd_static)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS zstd::libzstd_static)
set(ZSTD_VENDORED TRUE)
endmacro()
@@ -3165,9 +3169,11 @@ function(build_re2)
set_property(DIRECTORY ${re2_SOURCE_DIR} PROPERTY EXCLUDE_FROM_ALL TRUE)
endif()
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS re2::re2)
set(ARROW_BUNDLED_STATIC_LIBS
- ${ARROW_BUNDLED_STATIC_LIBS} re2::re2
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
+
list(POP_BACK CMAKE_MESSAGE_INDENT)
endfunction()
@@ -3221,7 +3227,7 @@ macro(build_bzip2)
add_dependencies(BZip2::BZip2 bzip2_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS BZip2::BZip2)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS BZip2::BZip2)
endmacro()
if(ARROW_WITH_BZ2)
@@ -3277,7 +3283,7 @@ macro(build_utf8proc)
add_dependencies(utf8proc::utf8proc utf8proc_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS utf8proc::utf8proc)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS utf8proc::utf8proc)
endmacro()
if(ARROW_WITH_UTF8PROC)
@@ -3314,9 +3320,11 @@ function(build_cares)
target_link_libraries(c-ares INTERFACE ${LIBRESOLV_LIBRARY})
endif()
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS c-ares::cares)
set(ARROW_BUNDLED_STATIC_LIBS
- ${ARROW_BUNDLED_STATIC_LIBS} c-ares::cares
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
+
list(POP_BACK CMAKE_MESSAGE_INDENT)
endfunction()
@@ -3444,15 +3452,16 @@ function(build_grpc)
add_dependencies(gRPC::grpcpp_for_bundling grpc_copy_grpc++)
# Add gRPC libraries to bundled static libs.
- list(APPEND
+ list(PREPEND
ARROW_BUNDLED_STATIC_LIBS
gRPC::address_sorting
gRPC::gpr
gRPC::grpc
gRPC::grpcpp_for_bundling)
set(ARROW_BUNDLED_STATIC_LIBS
- "${ARROW_BUNDLED_STATIC_LIBS}"
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
+
list(POP_BACK CMAKE_MESSAGE_INDENT)
endfunction()
@@ -3618,9 +3627,9 @@ function(build_opentelemetry)
opentelemetry-cpp::trace
opentelemetry-cpp::version)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS ${_OPENTELEMETRY_BUNDLED_LIBS})
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS ${_OPENTELEMETRY_BUNDLED_LIBS})
set(ARROW_BUNDLED_STATIC_LIBS
- "${ARROW_BUNDLED_STATIC_LIBS}"
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
list(POP_BACK CMAKE_MESSAGE_INDENT)
@@ -3634,7 +3643,11 @@ if(ARROW_WITH_OPENTELEMETRY)
# cURL is required whether we build from source or use an existing
installation
# (OTel's cmake files do not call find_curl for you)
find_curl()
- resolve_dependency(opentelemetry-cpp)
+ resolve_dependency(opentelemetry-cpp
+ COMPONENTS
+ exporters_ostream
+ exporters_otlp_http
+ sdk)
set(ARROW_OPENTELEMETRY_LIBS
opentelemetry-cpp::trace
opentelemetry-cpp::logs
@@ -3747,54 +3760,14 @@ function(build_google_cloud_cpp_storage)
# Remove unused directories to save build directory storage.
# 141MB -> 79MB
file(REMOVE_RECURSE "${google_cloud_cpp_SOURCE_DIR}/ci")
- list(APPEND
+
+ list(PREPEND
ARROW_BUNDLED_STATIC_LIBS
google-cloud-cpp::storage
google-cloud-cpp::rest_internal
google-cloud-cpp::common)
-
- if(ABSL_VENDORED)
- # Figure out what absl libraries (not header-only) are required by the
- # google-cloud-cpp libraries above and add them to the bundled_dependencies
- #
- # pkg-config --libs absl_memory absl_strings absl_str_format absl_time
absl_variant absl_base absl_memory absl_optional absl_span absl_time
absl_variant
- # (and then some regexing)
- list(APPEND
- ARROW_BUNDLED_STATIC_LIBS
- absl::bad_optional_access
- absl::bad_variant_access
- absl::base
- absl::civil_time
- absl::cord
- absl::cord_internal
- absl::cordz_functions
- absl::cordz_info
- absl::cordz_handle
- absl::crc32c
- absl::crc_internal
- absl::crc_cord_state
- absl::crc_cpu_detect
- absl::debugging_internal
- absl::demangle_internal
- absl::exponential_biased
- absl::int128
- absl::log_severity
- absl::malloc_internal
- absl::raw_logging_internal
- absl::spinlock_wait
- absl::stacktrace
- absl::str_format_internal
- absl::strings
- absl::strings_internal
- absl::symbolize
- absl::synchronization
- absl::throw_delegate
- absl::time
- absl::time_zone)
- endif()
-
set(ARROW_BUNDLED_STATIC_LIBS
- "${ARROW_BUNDLED_STATIC_LIBS}"
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
list(POP_BACK CMAKE_MESSAGE_INDENT)
@@ -3945,7 +3918,7 @@ function(build_orc)
add_custom_target(orc_copy_lib ALL DEPENDS "${ORC_STATIC_LIBRARY_FOR_AR}")
add_dependencies(orc::orc_for_bundling orc_copy_lib)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS orc::orc_for_bundling)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS orc::orc_for_bundling)
else()
set(ORC_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/orc_ep-install")
set(ORC_HOME "${ORC_PREFIX}")
@@ -4041,7 +4014,7 @@ function(build_orc)
endif()
target_link_libraries(orc::orc INTERFACE ${ARROW_PROTOBUF_LIBPROTOBUF})
add_dependencies(orc::orc orc_ep)
- list(APPEND ARROW_BUNDLED_STATIC_LIBS orc::orc)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS orc::orc)
endif()
set(ORC_VENDORED
@@ -4238,8 +4211,9 @@ function(build_awssdk)
set(AWSSDK_VENDORED
TRUE
PARENT_SCOPE)
+ list(PREPEND ARROW_BUNDLED_STATIC_LIBS ${AWSSDK_LINK_LIBRARIES})
set(ARROW_BUNDLED_STATIC_LIBS
- ${ARROW_BUNDLED_STATIC_LIBS} ${AWSSDK_LINK_LIBRARIES}
+ ${ARROW_BUNDLED_STATIC_LIBS}
PARENT_SCOPE)
set(AWSSDK_LINK_LIBRARIES
${AWSSDK_LINK_LIBRARIES}
@@ -4284,6 +4258,8 @@ endif()
# Azure SDK for C++
function(build_azure_sdk)
+ list(APPEND CMAKE_MESSAGE_INDENT "Azure SDK for C++: ")
+
message(STATUS "Building Azure SDK for C++ from source")
# On Windows, Azure SDK's WinHTTP transport requires WIL (Windows
Implementation Libraries).
@@ -4326,14 +4302,18 @@ function(build_azure_sdk)
set(AZURE_SDK_VENDORED
TRUE
PARENT_SCOPE)
+ list(PREPEND
+ 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)
+
+ list(POP_BACK CMAKE_MESSAGE_INDENT)
endfunction()
if(ARROW_WITH_AZURE_SDK)
diff --git a/cpp/src/arrow/ArrowConfig.cmake.in
b/cpp/src/arrow/ArrowConfig.cmake.in
index cbadad4d74..c12b3ce710 100644
--- a/cpp/src/arrow/ArrowConfig.cmake.in
+++ b/cpp/src/arrow/ArrowConfig.cmake.in
@@ -74,7 +74,15 @@ macro(arrow_find_dependencies dependencies)
endif()
endif()
endif()
- find_dependency(${dependency})
+ if(${dependency} STREQUAL "opentelemetry-cpp")
+ find_dependency(${dependency}
+ COMPONENTS
+ exporters_ostream
+ exporters_otlp_http
+ sdk)
+ else()
+ find_dependency(${dependency})
+ endif()
if(ARROW_OPENSSL_HOMEBREW_MAKE_DETECTABLE)
set(OPENSSL_ROOT_DIR ${ARROW_OPENSSL_ROOT_DIR_ORIGINAL})
endif()
diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt
index 8a1ec4bca9..2569b9bcd4 100644
--- a/cpp/src/arrow/CMakeLists.txt
+++ b/cpp/src/arrow/CMakeLists.txt
@@ -114,7 +114,7 @@ if(ARROW_S3)
endif()
if(ARROW_WITH_OPENTELEMETRY)
- if(opentelemetry_SOURCE STREQUAL "SYSTEM")
+ if(opentelemetry-cpp_SOURCE STREQUAL "SYSTEM")
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS
${ARROW_OPENTELEMETRY_LIBS})
endif()
list(APPEND ARROW_STATIC_INSTALL_INTERFACE_LIBS CURL::libcurl)
diff --git a/dev/release/verify-yum.sh b/dev/release/verify-yum.sh
index c8827428c0..1cf7b3d2dd 100755
--- a/dev/release/verify-yum.sh
+++ b/dev/release/verify-yum.sh
@@ -197,10 +197,10 @@ if [ "${cmake_version_major}" -gt "3" ] || \
[ "${cmake_version_major}" -eq "3" -a "${cmake_version_minor}" -ge "25" ];
then
cp -a "${TOP_SOURCE_DIR}/cpp/examples/minimal_build" build/
pushd build/minimal_build
- cmake -S . -B build_shared
+ cmake -S . -B build_shared -DCMAKE_VERBOSE_MAKEFILE=ON
make -C build_shared -j$(nproc)
build_shared/arrow-example
- cmake -S . -B build_static -DARROW_LINK_SHARED=OFF
+ cmake -S . -B build_static -DARROW_LINK_SHARED=OFF
-DCMAKE_VERBOSE_MAKEFILE=ON
make -C build_static -j$(nproc)
build_static/arrow-example
mkdir -p build_pkg_config
diff --git a/dev/tasks/linux-packages/apache-arrow/Rakefile
b/dev/tasks/linux-packages/apache-arrow/Rakefile
index cdb7710845..c66b119081 100644
--- a/dev/tasks/linux-packages/apache-arrow/Rakefile
+++ b/dev/tasks/linux-packages/apache-arrow/Rakefile
@@ -98,9 +98,29 @@ class ApacheArrowPackageTask < PackageTask
control.gsub(/@CUDA_ARCHITECTURE@/, cuda_architecture)
end
+ def apt_prepare_debian_control_open_telemetry(control, target)
+ case target
+ when /\Aubuntu-(?:jammy|noble)/
+ use_system_open_telemetry = "#"
+ system_open_telemetry_require_grpc = "#"
+ else
+ use_system_open_telemetry = ""
+ if target.start_with?("debian-trixie")
+ system_open_telemetry_require_grpc = ""
+ else
+ system_open_telemetry_require_grpc = "#"
+ end
+ end
+ control
+ .gsub(/@USE_SYSTEM_OPEN_TELEMETRY@/, use_system_open_telemetry)
+ .gsub(/@SYSTEM_OPEN_TELEMETRY_REQUIRE_GRPC@/,
+ system_open_telemetry_require_grpc)
+ end
+
def apt_prepare_debian_control(control_in, target)
control = control_in.dup
control = apt_prepare_debian_control_cuda_architecture(control, target)
+ control = apt_prepare_debian_control_open_telemetry(control, target)
control
end
end
diff --git a/dev/tasks/linux-packages/apache-arrow/apt/debian-forky/Dockerfile
b/dev/tasks/linux-packages/apache-arrow/apt/debian-forky/Dockerfile
index 0302516d7f..5cea3ceb7d 100644
--- a/dev/tasks/linux-packages/apache-arrow/apt/debian-forky/Dockerfile
+++ b/dev/tasks/linux-packages/apache-arrow/apt/debian-forky/Dockerfile
@@ -60,6 +60,7 @@ RUN \
libgtest-dev \
liblz4-dev \
libmimalloc-dev \
+ libopentelemetry-proto-dev \
libprotobuf-dev \
libprotoc-dev \
libre2-dev \
@@ -74,6 +75,7 @@ RUN \
meson \
ninja-build \
nlohmann-json3-dev \
+ opentelemetry-cpp-dev \
pkg-config \
protobuf-compiler-grpc \
python3-dev \
diff --git a/dev/tasks/linux-packages/apache-arrow/apt/debian-trixie/Dockerfile
b/dev/tasks/linux-packages/apache-arrow/apt/debian-trixie/Dockerfile
index d834708f0c..b51d7d5f9e 100644
--- a/dev/tasks/linux-packages/apache-arrow/apt/debian-trixie/Dockerfile
+++ b/dev/tasks/linux-packages/apache-arrow/apt/debian-trixie/Dockerfile
@@ -60,6 +60,7 @@ RUN \
libgtest-dev \
liblz4-dev \
libmimalloc-dev \
+ libopentelemetry-proto-dev \
libprotobuf-dev \
libprotoc-dev \
libre2-dev \
@@ -74,6 +75,7 @@ RUN \
meson \
ninja-build \
nlohmann-json3-dev \
+ opentelemetry-cpp-dev \
pkg-config \
protobuf-compiler-grpc \
python3-dev \
diff --git
a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute/Dockerfile
b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute/Dockerfile
index d0c31b3e05..322cf23739 100644
--- a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute/Dockerfile
+++ b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-resolute/Dockerfile
@@ -53,6 +53,7 @@ RUN \
libgrpc++-dev \
libgtest-dev \
liblz4-dev \
+ libopentelemetry-proto-dev \
libprotobuf-dev \
libprotoc-dev \
libre2-dev \
@@ -68,6 +69,7 @@ RUN \
mold \
ninja-build \
nlohmann-json3-dev \
+ opentelemetry-cpp-dev \
pkg-config \
protobuf-compiler-grpc \
python3-dev \
diff --git a/dev/tasks/linux-packages/apache-arrow/debian/control.in
b/dev/tasks/linux-packages/apache-arrow/debian/control.in
index db4e847786..bb4b778481 100644
--- a/dev/tasks/linux-packages/apache-arrow/debian/control.in
+++ b/dev/tasks/linux-packages/apache-arrow/debian/control.in
@@ -18,6 +18,7 @@ Build-Depends:
libgrpc++-dev,
libgtest-dev,
liblz4-dev,
+@USE_SYSTEM_OPEN_TELEMETRY@ libopentelemetry-proto-dev,
libprotobuf-dev,
libprotoc-dev,
libre2-dev,
@@ -35,6 +36,7 @@ Build-Depends:
# in the debian-forky Dockerfile) skips this build dependency and the CUDA
# packages below.
nvidia-cuda-toolkit [!arm64] <!pkg.apache-arrow.nocuda>,
+@USE_SYSTEM_OPEN_TELEMETRY@ opentelemetry-cpp-dev,
pkg-config,
protobuf-compiler,
protobuf-compiler-grpc,
@@ -162,6 +164,7 @@ Depends:
libbz2-dev,
libc-ares-dev,
libcurl4-openssl-dev,
+@SYSTEM_OPEN_TELEMETRY_REQUIRE_GRPC@ libgrpc++-dev,
liblz4-dev,
libprotobuf-dev,
libprotoc-dev,
@@ -172,6 +175,7 @@ Depends:
libxxhash-dev,
libzstd-dev,
nlohmann-json-dev | nlohmann-json3-dev,
+@USE_SYSTEM_OPEN_TELEMETRY@ opentelemetry-cpp-dev,
protobuf-compiler-grpc,
zlib1g-dev
Description: Apache Arrow is a data processing library for analysis
diff --git a/dev/tasks/linux-packages/apache-arrow/debian/rules
b/dev/tasks/linux-packages/apache-arrow/debian/rules
index 6f636d2d2d..4be103d0c9 100755
--- a/dev/tasks/linux-packages/apache-arrow/debian/rules
+++ b/dev/tasks/linux-packages/apache-arrow/debian/rules
@@ -70,6 +70,7 @@ override_dh_auto_configure:
-DARROW_WITH_BROTLI=ON \
-DARROW_WITH_BZ2=ON \
-DARROW_WITH_LZ4=ON \
+ -DARROW_WITH_OPENTELEMETRY=ON \
-DARROW_WITH_SNAPPY=ON \
-DARROW_WITH_ZLIB=ON \
-DARROW_WITH_ZSTD=ON \
diff --git a/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in
b/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in
index aca2d46833..0040b68f06 100644
--- a/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in
+++ b/dev/tasks/linux-packages/apache-arrow/yum/arrow.spec.in
@@ -165,6 +165,7 @@ cd cpp
-DARROW_WITH_BROTLI=ON \
-DARROW_WITH_BZ2=ON \
-DARROW_WITH_LZ4=ON \
+ -DARROW_WITH_OPENTELEMETRY=ON \
-DARROW_WITH_SNAPPY=ON \
-DARROW_WITH_ZLIB=ON \
-DARROW_WITH_ZSTD=ON \