You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2020/06/13 04:37:23 UTC

[arrow] branch master updated: ARROW-9119: [C++] Add support for building with system static gRPC

This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new 0c73ea6  ARROW-9119: [C++] Add support for building with system static gRPC
0c73ea6 is described below

commit 0c73ea63de706e80daa48b0f580374c918ef1655
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Sat Jun 13 13:36:50 2020 +0900

    ARROW-9119: [C++] Add support for building with system static gRPC
    
    Closes #7422 from kou/cpp-grpc-static
    
    Authored-by: Sutou Kouhei <ko...@clear-code.com>
    Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
 cpp/cmake_modules/DefineOptions.cmake  |   8 ++-
 cpp/cmake_modules/FindgRPCAlt.cmake    | 102 +++++++++++++++++++++++++++------
 dev/tasks/python-wheels/osx-build.sh   |   1 +
 dev/tasks/python-wheels/travis.osx.yml |   4 --
 4 files changed, 91 insertions(+), 24 deletions(-)

diff --git a/cpp/cmake_modules/DefineOptions.cmake b/cpp/cmake_modules/DefineOptions.cmake
index 02e1c5b..f916781 100644
--- a/cpp/cmake_modules/DefineOptions.cmake
+++ b/cpp/cmake_modules/DefineOptions.cmake
@@ -277,12 +277,14 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
 
   define_option(ARROW_BOOST_USE_SHARED "Rely on boost shared libraries where relevant" ON)
 
-  define_option(ARROW_PROTOBUF_USE_SHARED
-                "Rely on Protocol Buffers shared libraries where relevant" ON)
-
   define_option(ARROW_GFLAGS_USE_SHARED "Rely on GFlags shared libraries where relevant"
                 ON)
 
+  define_option(ARROW_GRPC_USE_SHARED "Rely on gRPC shared libraries where relevant" ON)
+
+  define_option(ARROW_PROTOBUF_USE_SHARED
+                "Rely on Protocol Buffers shared libraries where relevant" ON)
+
   define_option(ARROW_ZSTD_USE_SHARED "Rely on zstd shared libraries where relevant" ON)
 
   define_option(ARROW_WITH_BACKTRACE "Build with backtrace support" ON)
diff --git a/cpp/cmake_modules/FindgRPCAlt.cmake b/cpp/cmake_modules/FindgRPCAlt.cmake
index 5e381df..a860147 100644
--- a/cpp/cmake_modules/FindgRPCAlt.cmake
+++ b/cpp/cmake_modules/FindgRPCAlt.cmake
@@ -12,24 +12,74 @@
 # limitations under the License.
 
 unset(GRPC_ALT_VERSION)
+
+if(ARROW_GRPC_USE_SHARED)
+  set(GRPC_GPR_LIB_NAMES)
+  set(GRPC_GRPC_LIB_NAMES)
+  set(GRPC_GRPCPP_LIB_NAMES)
+  set(GRPC_ADDRESS_SORTING_LIB_NAMES)
+  set(GRPC_UPB_LIB_NAMES)
+  if(CMAKE_IMPORT_LIBRARY_SUFFIX)
+    list(APPEND GRPC_GPR_LIB_NAMES
+                "${CMAKE_IMPORT_LIBRARY_PREFIX}gpr${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+    list(APPEND GRPC_GRPC_LIB_NAMES
+                "${CMAKE_IMPORT_LIBRARY_PREFIX}grpc${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+    list(APPEND GRPC_GRPCPP_LIB_NAMES
+                "${CMAKE_IMPORT_LIBRARY_PREFIX}grpc++${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+    list(
+      APPEND GRPC_ADDRESS_SORTING_LIB_NAMES
+             "${CMAKE_IMPORT_LIBRARY_PREFIX}address_sorting${CMAKE_IMPORT_LIBRARY_SUFFIX}"
+      )
+    list(APPEND GRPC_UPB_LIB_NAMES
+                "${CMAKE_IMPORT_LIBRARY_PREFIX}upb${CMAKE_IMPORT_LIBRARY_SUFFIX}")
+  endif()
+  list(APPEND GRPC_GPR_LIB_NAMES
+              "${CMAKE_SHARED_LIBRARY_PREFIX}gpr${CMAKE_SHARED_LIBRARY_SUFFIX}")
+  list(APPEND GRPC_GRPC_LIB_NAMES
+              "${CMAKE_SHARED_LIBRARY_PREFIX}grpc${CMAKE_SHARED_LIBRARY_SUFFIX}")
+  list(APPEND GRPC_GRPCPP_LIB_NAMES
+              "${CMAKE_SHARED_LIBRARY_PREFIX}grpc++${CMAKE_SHARED_LIBRARY_SUFFIX}")
+  list(
+    APPEND GRPC_ADDRESS_SORTING_LIB_NAMES
+           "${CMAKE_SHARED_LIBRARY_PREFIX}address_sorting${CMAKE_SHARED_LIBRARY_SUFFIX}")
+  list(APPEND GRPC_UPB_LIB_NAMES
+              "${CMAKE_SHARED_LIBRARY_PREFIX}upb${CMAKE_SHARED_LIBRARY_SUFFIX}")
+else()
+  set(GRPC_GPR_LIB_NAMES
+      "${CMAKE_STATIC_LIBRARY_PREFIX}gpr${CMAKE_STATIC_LIBRARY_SUFFIX}")
+  set(GRPC_GRPC_LIB_NAMES
+      "${CMAKE_STATIC_LIBRARY_PREFIX}grpc${CMAKE_STATIC_LIBRARY_SUFFIX}")
+  set(GRPC_GRPCPP_LIB_NAMES
+      "${CMAKE_STATIC_LIBRARY_PREFIX}grpc++${CMAKE_STATIC_LIBRARY_SUFFIX}")
+  set(GRPC_ADDRESS_SORTING_LIB_NAMES
+      "${CMAKE_STATIC_LIBRARY_PREFIX}address_sorting${CMAKE_STATIC_LIBRARY_SUFFIX}")
+  set(GRPC_UPB_LIB_NAMES
+      "${CMAKE_STATIC_LIBRARY_PREFIX}upb${CMAKE_STATIC_LIBRARY_SUFFIX}")
+endif()
+
 if(gRPC_ROOT)
-  find_library(GRPC_GPR_LIB gpr
+  find_library(GRPC_GPR_LIB
+               NAMES ${GRPC_GPR_LIB_NAMES}
                PATHS ${gRPC_ROOT}
                PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                NO_DEFAULT_PATH)
-  find_library(GRPC_GRPC_LIB grpc
+  find_library(GRPC_GRPC_LIB
+               NAMES ${GRPC_GRPC_LIB_NAMES}
                PATHS ${gRPC_ROOT}
                PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                NO_DEFAULT_PATH)
-  find_library(GRPC_GRPCPP_LIB grpc++
+  find_library(GRPC_GRPCPP_LIB
+               NAMES ${GRPC_GRPCPP_LIB_NAMES}
                PATHS ${gRPC_ROOT}
                PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                NO_DEFAULT_PATH)
-  find_library(GRPC_ADDRESS_SORTING_LIB address_sorting
+  find_library(GRPC_ADDRESS_SORTING_LIB
+               NAMES ${GRPC_ADDRESS_SORTING_LIB_NAMES}
                PATHS ${gRPC_ROOT}
                PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                NO_DEFAULT_PATH)
-  find_library(GRPC_UPB_LIB upb
+  find_library(GRPC_UPB_LIB
+               NAMES ${GRPC_UPB_LIB_NAMES}
                PATHS ${gRPC_ROOT}
                PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                NO_DEFAULT_PATH)
@@ -49,23 +99,28 @@ else()
     list(APPEND GRPC_PC_LIBRARY_DIRS "${GRPC_PC_LIBDIR}")
     message(STATUS "${GRPC_PC_LIBRARY_DIRS}")
 
-    find_library(GRPC_GPR_LIB gpr
+    find_library(GRPC_GPR_LIB
+                 NAMES ${GRPC_GPR_LIB_NAMES}
                  PATHS ${GRPC_PC_LIBRARY_DIRS}
                  PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                  NO_DEFAULT_PATH)
-    find_library(GRPC_GRPC_LIB grpc
+    find_library(GRPC_GRPC_LIB
+                 NAMES ${GRPC_GRPC_LIB_NAMES}
                  PATHS ${GRPC_PC_LIBRARY_DIRS}
                  PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                  NO_DEFAULT_PATH)
-    find_library(GRPC_GRPCPP_LIB grpc++
+    find_library(GRPC_GRPCPP_LIB
+                 NAMES ${GRPC_GRPCPP_LIB_NAMES}
                  PATHS ${GRPC_PC_LIBRARY_DIRS}
                  PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                  NO_DEFAULT_PATH)
-    find_library(GRPC_ADDRESS_SORTING_LIB address_sorting
+    find_library(GRPC_ADDRESS_SORTING_LIB
+                 NAMES ${GRPC_ADDRESS_SORTING_LIB_NAMES}
                  PATHS ${GRPC_PC_LIBRARY_DIRS}
                  PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                  NO_DEFAULT_PATH)
-    find_library(GRPC_UPB_LIB upb
+    find_library(GRPC_UPB_LIB
+                 NAMES ${GRPC_UPB_LIB_NAMES}
                  PATHS ${GRPC_PC_LIBRARY_DIRS}
                  PATH_SUFFIXES ${LIB_PATH_SUFFIXES}
                  NO_DEFAULT_PATH)
@@ -74,12 +129,21 @@ else()
                  NO_DEFAULT_PATH
                  PATH_SUFFIXES "bin")
   else()
-    find_library(GRPC_GPR_LIB gpr PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
-    find_library(GRPC_GRPC_LIB grpc PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
-    find_library(GRPC_GRPCPP_LIB grpc++ PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
-    find_library(GRPC_ADDRESS_SORTING_LIB address_sorting
+    find_library(GRPC_GPR_LIB
+                 NAMES ${GRPC_GPR_LIB_NAMES}
+                 PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
+    find_library(GRPC_GRPC_LIB
+                 NAMES ${GRPC_GRPC_LIB_NAMES}
+                 PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
+    find_library(GRPC_GRPCPP_LIB
+                 NAMES ${GRPC_GRPCPP_LIB_NAMES}
+                 PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
+    find_library(GRPC_ADDRESS_SORTING_LIB
+                 NAMES ${GRPC_ADDRESS_SORTING_LIB_NAMES}
+                 PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
+    find_library(GRPC_UPB_LIB
+                 NAMES ${GRPC_UPB_LIB_NAMES}
                  PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
-    find_library(GRPC_UPB_LIB upb PATH_SUFFIXES ${LIB_PATH_SUFFIXES})
     find_program(GRPC_CPP_PLUGIN grpc_cpp_plugin PATH_SUFFIXES "bin")
     find_path(GRPC_INCLUDE_DIR NAMES grpc/grpc.h PATH_SUFFIXES ${INCLUDE_PATH_SUFFIXES})
   endif()
@@ -106,8 +170,12 @@ if(gRPCAlt_FOUND)
 
   add_library(gRPC::grpc UNKNOWN IMPORTED)
   set_target_properties(gRPC::grpc
-                        PROPERTIES IMPORTED_LOCATION "${GRPC_GRPC_LIB}"
-                                   INTERFACE_INCLUDE_DIRECTORIES "${GRPC_INCLUDE_DIR}")
+                        PROPERTIES IMPORTED_LOCATION
+                                   "${GRPC_GRPC_LIB}"
+                                   INTERFACE_INCLUDE_DIRECTORIES
+                                   "${GRPC_INCLUDE_DIR}"
+                                   INTERFACE_LINK_LIBRARIES
+                                   "OpenSSL::SSL;OpenSSL::Crypto")
 
   set(_GRPCPP_LINK_LIBRARIES "gRPC::grpc;gRPC::gpr")
 
diff --git a/dev/tasks/python-wheels/osx-build.sh b/dev/tasks/python-wheels/osx-build.sh
index a23dd3e..677b04f 100755
--- a/dev/tasks/python-wheels/osx-build.sh
+++ b/dev/tasks/python-wheels/osx-build.sh
@@ -70,6 +70,7 @@ function build_wheel {
           -DARROW_HDFS=ON \
           -DARROW_FLIGHT=ON \
           -DARROW_GANDIVA=${BUILD_ARROW_GANDIVA} \
+          -DARROW_GRPC_USE_SHARED=OFF \
           -DARROW_JEMALLOC=ON \
           -DARROW_ORC=OFF \
           -DARROW_PARQUET=ON \
diff --git a/dev/tasks/python-wheels/travis.osx.yml b/dev/tasks/python-wheels/travis.osx.yml
index 7e0d32a..be6072d 100644
--- a/dev/tasks/python-wheels/travis.osx.yml
+++ b/dev/tasks/python-wheels/travis.osx.yml
@@ -45,10 +45,6 @@ before_install:
       bison
       flex
 
-  # remove shared grpc libraries installed by brew to make sure
-  # we are linked against the static ones.
-  - rm -f /usr/local/opt/grpc/lib/*.dylib
-
   # source utilities required for wheel builds
   - export CONFIG_PATH=`pwd`/arrow/dev/tasks/python-wheels/osx-build.sh
   - source multibuild/common_utils.sh