]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: allow Arrow Flight to be built and linked into ceph components
authorJ. Eric Ivancich <ivancich@redhat.com>
Tue, 3 May 2022 02:23:23 +0000 (22:23 -0400)
committerJ. Eric Ivancich <ivancich@redhat.com>
Thu, 15 Dec 2022 17:49:35 +0000 (12:49 -0500)
Arrow Flight integration is triggered by defining
WITH_RADOSGW_ARROW_FLIGHT=ON with the cmake invocation.

For now this assumes that grpc-plugins is installed on the system and
won't be built internally.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
CMakeLists.txt
cmake/modules/BuildArrow.cmake
cmake/modules/Findc-ares.cmake
src/CMakeLists.txt

index 683c806cbcf81405d8cfc3158cccc5ffe54548c2..3aab8c8a4537bb05d9dbdc3d63d5878b4dfaab1c 100644 (file)
@@ -439,6 +439,7 @@ option(WITH_RADOSGW_DBSTORE "DBStore backend for Rados Gateway" ON)
 option(WITH_RADOSGW_MOTR "CORTX-Motr backend for Rados Gateway" OFF)
 option(WITH_RADOSGW_DAOS "DAOS backend for RADOS Gateway" OFF)
 option(WITH_RADOSGW_SELECT_PARQUET "Support for s3 select on parquet objects" ON)
+option(WITH_RADOSGW_ARROW_FLIGHT "Build arrow flight when not using system-provided arrow" OFF)
 
 option(WITH_SYSTEM_ARROW "Use system-provided arrow" OFF)
 option(WITH_SYSTEM_UTF8PROC "Use system-provided utf8proc" OFF)
index 45ebb697446dccc735c3fb6fd28ebecebe0a9ad7..691108a40c5514901f35ff8e29a3f2e6bf5b2cee 100644 (file)
@@ -42,6 +42,15 @@ function(build_arrow)
   list(APPEND arrow_CMAKE_ARGS -DARROW_WITH_SNAPPY=ON) # required
   list(APPEND arrow_INTERFACE_LINK_LIBRARIES snappy::snappy)
 
+  if(WITH_RADOSGW_ARROW_FLIGHT)
+    message("building arrow flight; make sure grpc-plugins is installed on the system")
+    list(APPEND arrow_CMAKE_ARGS
+      -DARROW_FLIGHT=ON -DARROW_WITH_RE2=OFF)
+    find_package(gRPC REQUIRED)
+    find_package(Protobuf REQUIRED)
+    find_package(c-ares 1.13.0 QUIET REQUIRED)
+  endif(WITH_RADOSGW_ARROW_FLIGHT)
+
   list(APPEND arrow_CMAKE_ARGS -DARROW_WITH_ZLIB=ON) # required
   list(APPEND arrow_INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
 
@@ -102,6 +111,11 @@ function(build_arrow)
   set(arrow_BYPRODUCTS ${arrow_LIBRARY})
   list(APPEND arrow_BYPRODUCTS ${parquet_LIBRARY})
 
+  if(WITH_RADOSGW_ARROW_FLIGHT)
+    set(arrow_flight_LIBRARY "${arrow_LIBRARY_DIR}/libarrow_flight.a")
+    list(APPEND arrow_BYPRODUCTS ${arrow_flight_LIBRARY})
+  endif(WITH_RADOSGW_ARROW_FLIGHT)
+
   if(CMAKE_MAKE_PROGRAM MATCHES "make")
     # try to inherit command line arguments passed by parent "make" job
     set(make_cmd $(MAKE))
@@ -140,4 +154,14 @@ function(build_arrow)
   set_target_properties(Arrow::Parquet PROPERTIES
     IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
     IMPORTED_LOCATION "${parquet_LIBRARY}")
+
+  if(WITH_RADOSGW_ARROW_FLIGHT)
+    add_library(Arrow::Flight STATIC IMPORTED)
+    add_dependencies(Arrow::Flight arrow_ext)
+    target_link_libraries(Arrow::Flight INTERFACE Arrow::Arrow gRPC::grpc++)
+    set_target_properties(Arrow::Flight PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${arrow_INCLUDE_DIR}" # flight is accessed via "arrow/flight"
+      IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
+      IMPORTED_LOCATION "${arrow_flight_LIBRARY}")
+  endif(WITH_RADOSGW_ARROW_FLIGHT)
 endfunction()
index 56311c7c3eb2817cad6cae7a72805242e15acee2..93554ed2814602aa2f62027f09e2ce0e69e5ba96 100644 (file)
@@ -21,12 +21,19 @@ find_package_handle_standard_args(c-ares
     c-ares_LIBRARY
   VERSION_VAR c-ares_VERSION)
 
-if(c-ares_FOUND AND NOT (TARGET c-ares::cares))
-  add_library(c-ares::cares UNKNOWN IMPORTED GLOBAL)
-  set_target_properties(c-ares::cares PROPERTIES
-    INTERFACE_INCLUDE_DIRECTORIES "${c-ares_INCLUDE_DIR}"
-    IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-    IMPORTED_LOCATION "${c-ares_LIBRARY}")
+if(c-ares_FOUND)
+  if(NOT TARGET c-ares::cares)
+    add_library(c-ares::cares UNKNOWN IMPORTED GLOBAL)
+    set_target_properties(c-ares::cares PROPERTIES
+      INTERFACE_INCLUDE_DIRECTORIES "${c-ares_INCLUDE_DIR}"
+      IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+      IMPORTED_LOCATION "${c-ares_LIBRARY}")
+  endif()
+
   # to be compatible with old Seastar
   add_library(c-ares::c-ares ALIAS c-ares::cares)
+
+  if(NOT TARGET c-ares::c-ares)
+    add_library(c-ares::c-ares ALIAS c-ares::cares)
+  endif()
 endif()
index 42972391210195b5d8e3b5ac8a935199010fd5df..a8e427c3eebf00f20939b5b3ea384abf02b9af11 100644 (file)
@@ -907,8 +907,8 @@ if(WITH_RADOSGW)
 
       include(BuildArrow)
       build_arrow()
-    endif()
-  endif()
+    endif(WITH_SYSTEM_ARROW)
+  endif(WITH_RADOSGW_SELECT_PARQUET)
 
   add_subdirectory(libkmip)
   add_subdirectory(rgw)