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 \

Reply via email to