You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ch...@apache.org on 2018/08/03 20:25:56 UTC

[mesos] 05/05: Always build gRPC in Mesos.

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

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

commit 5bb42453b1bbadf0c51b0965206fe9b4e71a00f5
Author: Chun-Hung Hsiao <ch...@mesosphere.io>
AuthorDate: Thu Jul 26 16:32:38 2018 -0700

    Always build gRPC in Mesos.
    
    Review: https://reviews.apache.org/r/68074
---
 3rdparty/CMakeLists.txt                    | 216 ++++++++++++++---------------
 3rdparty/Makefile.am                       |   2 -
 cmake/CompilationConfigure.cmake           |  10 --
 configure.ac                               |  92 ++++++------
 include/csi/spec.hpp                       |   4 -
 src/CMakeLists.txt                         |  12 +-
 src/Makefile.am                            |  48 ++-----
 src/cmake/MesosProtobuf.cmake              |   6 +-
 src/examples/CMakeLists.txt                |   4 +-
 src/python/native_common/ext_modules.py.in |  40 +++---
 src/resource_provider/local.cpp            |   4 +-
 src/tests/CMakeLists.txt                   |  23 +--
 12 files changed, 195 insertions(+), 266 deletions(-)

diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt
index 2e5d519..629b196 100644
--- a/3rdparty/CMakeLists.txt
+++ b/3rdparty/CMakeLists.txt
@@ -1215,140 +1215,138 @@ ExternalProject_Add(
   URL_HASH          ${PROTOBUF_HASH})
 
 
-if (ENABLE_GRPC)
-  # gRPC: Google's high performance, open-source universal RPC framework.
-  # https://grpc.io/
-  #######################################################################
-  EXTERNAL(grpc ${GRPC_VERSION} ${CMAKE_CURRENT_BINARY_DIR})
-
-  add_library(libgpr ${LIBRARY_LINKAGE} IMPORTED)
-  add_dependencies(libgpr ${GRPC_TARGET})
-  add_library(libgrpc ${LIBRARY_LINKAGE} IMPORTED)
-  add_dependencies(libgrpc ${GRPC_TARGET})
-  add_library(libgrpc++ ${LIBRARY_LINKAGE} IMPORTED)
-  add_dependencies(libgrpc++ ${GRPC_TARGET})
-
-  add_library(grpc INTERFACE)
-  target_link_libraries(grpc INTERFACE libgrpc++ libgrpc libgpr)
-
-  # TODO(chhsiao): Move grpc so these don't have to be GLOBAL.
-  add_executable(grpc_cpp_plugin IMPORTED GLOBAL)
-  add_dependencies(grpc_cpp_plugin ${GRPC_TARGET})
-
-  set(GRPC_CMAKE_ARGS
-    ${CMAKE_C_FORWARD_ARGS}
-    ${CMAKE_CXX_FORWARD_ARGS}
-    -DCMAKE_PREFIX_PATH=${PROTOBUF_ROOT}-build
-    -DgRPC_PROTOBUF_PROVIDER=package
-    -DgRPC_PROTOBUF_PACKAGE_TYPE=CONFIG
-    -DgRPC_ZLIB_PROVIDER=package)
-
-  if (ENABLE_SSL)
-    set(GRPC_VARIANT "")
-    list(APPEND GRPC_CMAKE_ARGS -DgRPC_SSL_PROVIDER=package ${CMAKE_SSL_FORWARD_ARGS})
-  else ()
-    set(GRPC_VARIANT "_unsecure")
-    list(APPEND GRPC_CMAKE_ARGS -DgRPC_SSL_PROVIDER=none)
-  endif ()
-
-  set(GRPC_BUILD_CMD
-    ${CMAKE_COMMAND} --build . --config $<CONFIG> --target gpr &&
-    ${CMAKE_COMMAND} --build . --config $<CONFIG> --target grpc${GRPC_VARIANT} &&
-    ${CMAKE_COMMAND} --build . --config $<CONFIG> --target grpc++${GRPC_VARIANT} &&
-    ${CMAKE_COMMAND} --build . --config $<CONFIG> --target grpc_cpp_plugin)
-
-  set_target_properties(
-    grpc PROPERTIES
-    INTERFACE_INCLUDE_DIRECTORIES ${GRPC_ROOT}/include)
+# gRPC: Google's high performance, open-source universal RPC framework.
+# https://grpc.io/
+#######################################################################
+EXTERNAL(grpc ${GRPC_VERSION} ${CMAKE_CURRENT_BINARY_DIR})
+
+add_library(libgpr ${LIBRARY_LINKAGE} IMPORTED)
+add_dependencies(libgpr ${GRPC_TARGET})
+add_library(libgrpc ${LIBRARY_LINKAGE} IMPORTED)
+add_dependencies(libgrpc ${GRPC_TARGET})
+add_library(libgrpc++ ${LIBRARY_LINKAGE} IMPORTED)
+add_dependencies(libgrpc++ ${GRPC_TARGET})
+
+add_library(grpc INTERFACE)
+target_link_libraries(grpc INTERFACE libgrpc++ libgrpc libgpr)
+
+# TODO(chhsiao): Move grpc so these don't have to be GLOBAL.
+add_executable(grpc_cpp_plugin IMPORTED GLOBAL)
+add_dependencies(grpc_cpp_plugin ${GRPC_TARGET})
+
+set(GRPC_CMAKE_ARGS
+  ${CMAKE_C_FORWARD_ARGS}
+  ${CMAKE_CXX_FORWARD_ARGS}
+  -DCMAKE_PREFIX_PATH=${PROTOBUF_ROOT}-build
+  -DgRPC_PROTOBUF_PROVIDER=package
+  -DgRPC_PROTOBUF_PACKAGE_TYPE=CONFIG
+  -DgRPC_ZLIB_PROVIDER=package)
 
-  if (WIN32)
-    PATCH_CMD(GRPC_PATCH_CMD grpc-${GRPC_VERSION}.patch)
+if (ENABLE_SSL)
+  set(GRPC_VARIANT "")
+  list(APPEND GRPC_CMAKE_ARGS -DgRPC_SSL_PROVIDER=package ${CMAKE_SSL_FORWARD_ARGS})
+else ()
+  set(GRPC_VARIANT "_unsecure")
+  list(APPEND GRPC_CMAKE_ARGS -DgRPC_SSL_PROVIDER=none)
+endif ()
 
-    list(APPEND GRPC_CMAKE_ARGS -DZLIB_ROOT=${ZLIB_ROOT}-lib)
+set(GRPC_BUILD_CMD
+  ${CMAKE_COMMAND} --build . --config $<CONFIG> --target gpr &&
+  ${CMAKE_COMMAND} --build . --config $<CONFIG> --target grpc${GRPC_VARIANT} &&
+  ${CMAKE_COMMAND} --build . --config $<CONFIG> --target grpc++${GRPC_VARIANT} &&
+  ${CMAKE_COMMAND} --build . --config $<CONFIG> --target grpc_cpp_plugin)
 
-    if (CMAKE_GENERATOR MATCHES "Visual Studio")
-      set_target_properties(
-        libgpr PROPERTIES
-        IMPORTED_LOCATION_DEBUG ${GRPC_ROOT}-build/Debug/gpr${LIBRARY_SUFFIX}
-        IMPORTED_LOCATION_RELEASE ${GRPC_ROOT}-build/Release/gpr${LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB_DEBUG ${GRPC_ROOT}-build/Debug/gpr${CMAKE_IMPORT_LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB_RELEASE ${GRPC_ROOT}-build/Release/gpr${CMAKE_IMPORT_LIBRARY_SUFFIX})
+set_target_properties(
+  grpc PROPERTIES
+  INTERFACE_INCLUDE_DIRECTORIES ${GRPC_ROOT}/include)
 
-      set_target_properties(
-        libgrpc PROPERTIES
-        IMPORTED_LOCATION_DEBUG ${GRPC_ROOT}-build/Debug/grpc${GRPC_VARIANT}${LIBRARY_SUFFIX}
-        IMPORTED_LOCATION_RELEASE ${GRPC_ROOT}-build/Release/grpc${GRPC_VARIANT}${LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB_DEBUG ${GRPC_ROOT}-build/Debug/grpc${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB_RELEASE ${GRPC_ROOT}-build/Release/grpc${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX})
+if (WIN32)
+  PATCH_CMD(GRPC_PATCH_CMD grpc-${GRPC_VERSION}.patch)
 
-      set_target_properties(
-        libgrpc++ PROPERTIES
-        IMPORTED_LOCATION_DEBUG ${GRPC_ROOT}-build/Debug/grpc++${GRPC_VARIANT}${LIBRARY_SUFFIX}
-        IMPORTED_LOCATION_RELEASE ${GRPC_ROOT}-build/Release/grpc++${GRPC_VARIANT}${LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB_DEBUG ${GRPC_ROOT}-build/Debug/grpc++${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB_RELEASE ${GRPC_ROOT}-build/Release/grpc++${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX})
+  list(APPEND GRPC_CMAKE_ARGS -DZLIB_ROOT=${ZLIB_ROOT}-lib)
 
-      set_target_properties(
-        grpc_cpp_plugin PROPERTIES
-        IMPORTED_LOCATION_DEBUG ${GRPC_ROOT}-build/Debug/grpc_cpp_plugin.exe
-        IMPORTED_LOCATION_RELEASE ${GRPC_ROOT}-build/Release/grpc_cpp_plugin.exe)
-    else ()
-      set_target_properties(
-        libgpr PROPERTIES
-        IMPORTED_LOCATION ${GRPC_ROOT}-build/gpr${LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB ${GRPC_ROOT}-build/gpr${CMAKE_IMPORT_LIBRARY_SUFFIX})
+  if (CMAKE_GENERATOR MATCHES "Visual Studio")
+    set_target_properties(
+      libgpr PROPERTIES
+      IMPORTED_LOCATION_DEBUG ${GRPC_ROOT}-build/Debug/gpr${LIBRARY_SUFFIX}
+      IMPORTED_LOCATION_RELEASE ${GRPC_ROOT}-build/Release/gpr${LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB_DEBUG ${GRPC_ROOT}-build/Debug/gpr${CMAKE_IMPORT_LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB_RELEASE ${GRPC_ROOT}-build/Release/gpr${CMAKE_IMPORT_LIBRARY_SUFFIX})
 
-      set_target_properties(
-        libgrpc PROPERTIES
-        IMPORTED_LOCATION ${GRPC_ROOT}-build/grpc${GRPC_VARIANT}${LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB ${GRPC_ROOT}-build/grpc${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX})
+    set_target_properties(
+      libgrpc PROPERTIES
+      IMPORTED_LOCATION_DEBUG ${GRPC_ROOT}-build/Debug/grpc${GRPC_VARIANT}${LIBRARY_SUFFIX}
+      IMPORTED_LOCATION_RELEASE ${GRPC_ROOT}-build/Release/grpc${GRPC_VARIANT}${LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB_DEBUG ${GRPC_ROOT}-build/Debug/grpc${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB_RELEASE ${GRPC_ROOT}-build/Release/grpc${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX})
 
-      set_target_properties(
-        libgrpc++ PROPERTIES
-        IMPORTED_LOCATION ${GRPC_ROOT}-build/grpc++${GRPC_VARIANT}${LIBRARY_SUFFIX}
-        IMPORTED_IMPLIB ${GRPC_ROOT}-build/grpc++${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX})
+    set_target_properties(
+      libgrpc++ PROPERTIES
+      IMPORTED_LOCATION_DEBUG ${GRPC_ROOT}-build/Debug/grpc++${GRPC_VARIANT}${LIBRARY_SUFFIX}
+      IMPORTED_LOCATION_RELEASE ${GRPC_ROOT}-build/Release/grpc++${GRPC_VARIANT}${LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB_DEBUG ${GRPC_ROOT}-build/Debug/grpc++${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB_RELEASE ${GRPC_ROOT}-build/Release/grpc++${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX})
 
-      set_target_properties(
-        grpc_cpp_plugin PROPERTIES
-        IMPORTED_LOCATION ${GRPC_ROOT}-build/grpc_cpp_plugin.exe)
-    endif()
+    set_target_properties(
+      grpc_cpp_plugin PROPERTIES
+      IMPORTED_LOCATION_DEBUG ${GRPC_ROOT}-build/Debug/grpc_cpp_plugin.exe
+      IMPORTED_LOCATION_RELEASE ${GRPC_ROOT}-build/Release/grpc_cpp_plugin.exe)
   else ()
     set_target_properties(
       libgpr PROPERTIES
-      IMPORTED_LOCATION ${GRPC_ROOT}-build/libgpr${LIBRARY_SUFFIX})
+      IMPORTED_LOCATION ${GRPC_ROOT}-build/gpr${LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB ${GRPC_ROOT}-build/gpr${CMAKE_IMPORT_LIBRARY_SUFFIX})
 
     set_target_properties(
       libgrpc PROPERTIES
-      IMPORTED_LOCATION ${GRPC_ROOT}-build/libgrpc${GRPC_VARIANT}${LIBRARY_SUFFIX})
+      IMPORTED_LOCATION ${GRPC_ROOT}-build/grpc${GRPC_VARIANT}${LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB ${GRPC_ROOT}-build/grpc${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX})
 
     set_target_properties(
       libgrpc++ PROPERTIES
-      IMPORTED_LOCATION ${GRPC_ROOT}-build/libgrpc++${GRPC_VARIANT}${LIBRARY_SUFFIX})
+      IMPORTED_LOCATION ${GRPC_ROOT}-build/grpc++${GRPC_VARIANT}${LIBRARY_SUFFIX}
+      IMPORTED_IMPLIB ${GRPC_ROOT}-build/grpc++${GRPC_VARIANT}${CMAKE_IMPORT_LIBRARY_SUFFIX})
 
     set_target_properties(
       grpc_cpp_plugin PROPERTIES
-      IMPORTED_LOCATION ${GRPC_ROOT}-build/grpc_cpp_plugin)
-  endif ()
+      IMPORTED_LOCATION ${GRPC_ROOT}-build/grpc_cpp_plugin.exe)
+  endif()
+else ()
+  set_target_properties(
+    libgpr PROPERTIES
+    IMPORTED_LOCATION ${GRPC_ROOT}-build/libgpr${LIBRARY_SUFFIX})
 
-  MAKE_INCLUDE_DIR(grpc)
-  GET_BYPRODUCTS(libgpr)
-  GET_BYPRODUCTS(libgrpc)
-  GET_BYPRODUCTS(libgrpc++)
-  GET_BYPRODUCTS(grpc_cpp_plugin)
+  set_target_properties(
+    libgrpc PROPERTIES
+    IMPORTED_LOCATION ${GRPC_ROOT}-build/libgrpc${GRPC_VARIANT}${LIBRARY_SUFFIX})
 
-  ExternalProject_Add(
-    ${GRPC_TARGET}
-    DEPENDS          protobuf protoc zlib
-    PREFIX           ${GRPC_CMAKE_ROOT}
-    PATCH_COMMAND    ${GRPC_PATCH_CMD}
-    BUILD_BYPRODUCTS ${LIBGPR_BYPRODUCTS};${LIBGRPC_BYPRODUCTS};${LIBGRPC++_BYPRODUCTS};${GRPC_CPP_PLUGIN_BYPRODUCTS}
-    CMAKE_ARGS       ${GRPC_CMAKE_ARGS}
-    BUILD_COMMAND    ${GRPC_BUILD_CMD}
-    INSTALL_COMMAND  ${CMAKE_NOOP}
-    URL              ${GRPC_URL}
-    URL_HASH         ${GRPC_HASH})
+  set_target_properties(
+    libgrpc++ PROPERTIES
+    IMPORTED_LOCATION ${GRPC_ROOT}-build/libgrpc++${GRPC_VARIANT}${LIBRARY_SUFFIX})
+
+  set_target_properties(
+    grpc_cpp_plugin PROPERTIES
+    IMPORTED_LOCATION ${GRPC_ROOT}-build/grpc_cpp_plugin)
 endif ()
 
+MAKE_INCLUDE_DIR(grpc)
+GET_BYPRODUCTS(libgpr)
+GET_BYPRODUCTS(libgrpc)
+GET_BYPRODUCTS(libgrpc++)
+GET_BYPRODUCTS(grpc_cpp_plugin)
+
+ExternalProject_Add(
+  ${GRPC_TARGET}
+  DEPENDS          protobuf protoc zlib
+  PREFIX           ${GRPC_CMAKE_ROOT}
+  PATCH_COMMAND    ${GRPC_PATCH_CMD}
+  BUILD_BYPRODUCTS ${LIBGPR_BYPRODUCTS};${LIBGRPC_BYPRODUCTS};${LIBGRPC++_BYPRODUCTS};${GRPC_CPP_PLUGIN_BYPRODUCTS}
+  CMAKE_ARGS       ${GRPC_CMAKE_ARGS}
+  BUILD_COMMAND    ${GRPC_BUILD_CMD}
+  INSTALL_COMMAND  ${CMAKE_NOOP}
+  URL              ${GRPC_URL}
+  URL_HASH         ${GRPC_HASH})
+
 
 # Jemalloc: General-purpose malloc implementation.
 # http://jemalloc.net
diff --git a/3rdparty/Makefile.am b/3rdparty/Makefile.am
index 9508b0f..6476b04 100644
--- a/3rdparty/Makefile.am
+++ b/3rdparty/Makefile.am
@@ -413,7 +413,6 @@ PROTOBUF_LINKER_FLAGS = @PROTOBUF_LINKERFLAGS@
 PROTOC = @PROTOCOMPILER@
 endif
 
-if ENABLE_GRPC
 if !ENABLE_SSL
 GRPC_VARIANT = _unsecure
 endif
@@ -458,7 +457,6 @@ else
 $(GRPC)-build-stamp:
 	touch $@
 endif
-endif
 
 # NOTE: We extract `csi.proto` even if gRPC is disabled because it is
 # imported by other proto files.
diff --git a/cmake/CompilationConfigure.cmake b/cmake/CompilationConfigure.cmake
index 50c4c5d..10cacfb 100644
--- a/cmake/CompilationConfigure.cmake
+++ b/cmake/CompilationConfigure.cmake
@@ -75,11 +75,6 @@ option(
   TRUE)
 
 option(
-  ENABLE_GRPC
-  "Build libprocess with gRPC support."
-  FALSE)
-
-option(
   ENABLE_LIBEVENT
   "Use libevent instead of libev as the core event loop implementation."
   FALSE)
@@ -556,11 +551,6 @@ add_definitions(
   -DVERSION="${PACKAGE_VERSION}"
   -DPKGDATADIR="${DATA_INSTALL_PREFIX}")
 
-if (ENABLE_GRPC)
-  # TODO(chhsiao): Make this non-global.
-  add_definitions(-DENABLE_GRPC=1)
-endif ()
-
 if (ENABLE_SSL)
   # TODO(andschwa): Make this non-global.
   add_definitions(-DUSE_SSL_SOCKET=1)
diff --git a/configure.ac b/configure.ac
index 58003b6..d845818 100644
--- a/configure.ac
+++ b/configure.ac
@@ -246,11 +246,6 @@ AC_ARG_ENABLE([gc-unused],
                              [enable garbage collection of unused program segments]),
                              [], [enable_gc_unused=no])
 
-AC_ARG_ENABLE([grpc],
-              AS_HELP_STRING([--enable-grpc],
-                             [enable grpc support]),
-              [], [enable_grpc=no])
-
 AC_ARG_ENABLE([hardening],
               AS_HELP_STRING([--disable-hardening],
                              [disables security measures such as stack
@@ -2199,52 +2194,51 @@ location of protobuf used by grpc by providing a prefix path via
   LDFLAGS="$LDFLAGS -L${with_grpc}/lib"
 fi
 
-if test "x$enable_grpc" = "xyes"; then
-  # Check if user has asked us to use a preinstalled grpc, or if they
-  # asked us to ignore all bundled libraries while compiling and linking.
-  if test "x$without_bundled_grpc" = "xyes" || \
-     test "x$enable_bundled" != "xyes"; then
-    # Use the system default prefix if not specified.
-    if test -n "`echo $with_grpc`"; then
-      GRPCPREFIX="${with_grpc}"
-    elif test "x$enable_bundled" != "xyes"; then
-      GRPCPREFIX="/usr"
-    fi
+# Check if user has asked us to use a preinstalled grpc, or if they
+# asked us to ignore all bundled libraries while compiling and linking.
+if test "x$without_bundled_grpc" = "xyes" || \
+   test "x$enable_bundled" != "xyes"; then
+  # Use the system default prefix if not specified.
+  if test -n "`echo $with_grpc`"; then
+    GRPCPREFIX="${with_grpc}"
+  elif test "x$enable_bundled" != "xyes"; then
+    GRPCPREFIX="/usr"
+  fi
 
-    if test "x$enable_ssl" = "xno"; then
-      GRPC_VARIANT="_unsecure"
-    fi
+  if test "x$enable_ssl" = "xno"; then
+    GRPC_VARIANT="_unsecure"
+  fi
 
-    # Check if headers and library were located.
-    saved_LIBS="$LIBS"
-    LIBS="-lgrpc++$GRPC_VARIANT -lgrpc$GRPC_VARIANT -lgpr $LIBS"
-    AC_LANG_PUSH([C++])
-    AC_CHECK_HEADERS([grpcpp/grpcpp.h],
-                     [AC_LINK_IFELSE(
-                         [AC_LANG_PROGRAM([#include <grpcpp/grpcpp.h>],
-                                          [grpc::Version();])],
-                         [found_grpc=yes],
-                         [found_grpc=no])],
-                     [found_grpc=no])
-    AC_LANG_POP()
-    LIBS="$saved_LIBS"
+  # Check if headers and library were located.
+  saved_LIBS="$LIBS"
+  LIBS="-lgrpc++$GRPC_VARIANT -lgrpc$GRPC_VARIANT -lgpr $LIBS"
+  AC_LANG_PUSH([C++])
+  AC_CHECK_HEADERS([grpcpp/grpcpp.h],
+                   [AC_LINK_IFELSE(
+                       [AC_LANG_PROGRAM([#include <grpcpp/grpcpp.h>],
+                                        [grpc::Version();])],
+                       [found_grpc=yes],
+                       [found_grpc=no])],
+                   [found_grpc=no])
+  AC_LANG_POP()
+  LIBS="$saved_LIBS"
 
-    if test "x$found_grpc" = "xyes"; then
-      with_bundled_grpc=no
+  if test "x$found_grpc" = "xyes"; then
+    with_bundled_grpc=no
 
-      AC_CHECK_TOOL([GRPC_CXX_PLUGIN_TEST],
-                    [grpc_cpp_plugin],
-                    [],
-                    [$GRPCPREFIX/bin])
+    AC_CHECK_TOOL([GRPC_CXX_PLUGIN_TEST],
+                  [grpc_cpp_plugin],
+                  [],
+                  [$GRPCPREFIX/bin])
 
-      if test -z "`echo $GRPC_CXX_PLUGIN_TEST`"; then
-        AC_MSG_ERROR([grpc_cpp_plugin not found in PATH])
-      fi
+    if test -z "`echo $GRPC_CXX_PLUGIN_TEST`"; then
+      AC_MSG_ERROR([grpc_cpp_plugin not found in PATH])
+    fi
 
-      GRPC_CXX_PLUGIN="$GRPCPREFIX/bin/grpc_cpp_plugin"
+    GRPC_CXX_PLUGIN="$GRPCPREFIX/bin/grpc_cpp_plugin"
 
-    else
-      AC_MSG_ERROR([cannot find grpc
+  else
+    AC_MSG_ERROR([cannot find grpc
 -------------------------------------------------------------------
 You have requested the use of a non-bundled grpc but no suitable
 grpc could be found.
@@ -2253,16 +2247,12 @@ You may want specify the location of grpc by providing a prefix
 path via --with-grpc=DIR, or check that the path you provided is
 correct if you are already doing this.
 -------------------------------------------------------------------
-      ])
-    fi
-  else
-    with_bundled_grpc=yes
+    ])
   fi
-
-  AC_DEFINE([ENABLE_GRPC])
+else
+  with_bundled_grpc=yes
 fi
 
-AM_CONDITIONAL([ENABLE_GRPC], [test "x$enable_grpc" = "xyes"])
 AM_CONDITIONAL([WITH_BUNDLED_GRPC],
                [test "x$with_bundled_grpc" = "xyes"])
 
diff --git a/include/csi/spec.hpp b/include/csi/spec.hpp
index 2e9b870..19d9445 100644
--- a/include/csi/spec.hpp
+++ b/include/csi/spec.hpp
@@ -20,12 +20,8 @@
 // ONLY USEFUL AFTER RUNNING PROTOC.
 #include <csi/csi.pb.h>
 
-// TODO(chhsiao): Consider removing the conditional inclusion to make
-// this public header not depend on a build flag. See MESOS-8715.
-#ifdef ENABLE_GRPC
 // ONLY USEFUL AFTER RUNNING PROTOC WITH GRPC CPP PLUGIN.
 #include <csi/csi.grpc.pb.h>
-#endif // ENABLE_GRPC
 
 namespace mesos {
 namespace csi {
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0e0913b..a80b011 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -109,7 +109,7 @@ add_library(
 
 target_link_libraries(mesos-protobufs PUBLIC
   protobuf
-  $<$<BOOL:${ENABLE_GRPC}>:grpc>)
+  grpc)
 
 target_include_directories(
   mesos-protobufs
@@ -237,15 +237,11 @@ set(COMMON_SRC
   common/values.cpp)
 
 set(CSI_SRC
+  csi/client.cpp
   csi/paths.cpp
+  csi/rpc.cpp
   csi/utils.cpp)
 
-if (ENABLE_GRPC)
-  list(APPEND CSI_SRC
-    csi/client.cpp
-    csi/rpc.cpp)
-endif ()
-
 set(DOCKER_SRC
   docker/docker.cpp
   docker/spec.cpp)
@@ -422,7 +418,7 @@ set(RESOURCE_PROVIDER_SRC
 
 # NOTE: The storage local resource provider uses Unix domain sockets to talk to
 # CSI plugins, thus it is currently not supported on Windows.
-if (ENABLE_GRPC AND NOT WIN32)
+if (NOT WIN32)
   list(APPEND RESOURCE_PROVIDER_SRC
     resource_provider/storage/provider.cpp)
 endif ()
diff --git a/src/Makefile.am b/src/Makefile.am
index 10ef977..cf0cf22 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -170,7 +170,6 @@ LIB_GLOG = -lglog
 LDADD += -lglog
 endif
 
-if ENABLE_GRPC
 if !ENABLE_SSL
 GRPC_VARIANT = _unsecure
 endif
@@ -185,7 +184,6 @@ else
 LIB_GRPC = -lgrpc++$(GRPC_VARIANT) -lgrpc$(GRPC_VARIANT) -lgpr
 GRPC_CPP_PLUGIN = @GRPC_CXX_PLUGIN@
 endif
-endif
 
 if WITH_BUNDLED_JEMALLOC
 # TODO(bennoe): We could call `jemalloc-conf --libs` to get the required
@@ -405,17 +403,13 @@ CXX_PROTOS +=								\
   resource_provider/storage/disk_profile.pb.h
 
 CXX_CSI_PROTOS =							\
+  ../include/csi/csi.grpc.pb.cc						\
+  ../include/csi/csi.grpc.pb.h						\
   ../include/csi/csi.pb.cc						\
   ../include/csi/csi.pb.h						\
   csi/state.pb.cc							\
   csi/state.pb.h
 
-if ENABLE_GRPC
-CXX_CSI_PROTOS +=							\
-  ../include/csi/csi.grpc.pb.cc						\
-  ../include/csi/csi.grpc.pb.h
-endif
-
 CXX_LOG_PROTOS =							\
   messages/log.pb.cc							\
   messages/log.pb.h
@@ -1471,13 +1465,9 @@ libmesos_no_3rdparty_la_SOURCES +=					\
   resource_provider/storage/disk_profile_adaptor.cpp			\
   resource_provider/storage/disk_profile.proto				\
   resource_provider/storage/disk_profile_utils.cpp			\
-  resource_provider/storage/disk_profile_utils.hpp
-
-if ENABLE_GRPC
-libmesos_no_3rdparty_la_SOURCES +=					\
+  resource_provider/storage/disk_profile_utils.hpp			\
   resource_provider/storage/provider.cpp				\
   resource_provider/storage/provider.hpp
-endif
 
 libmesos_no_3rdparty_la_CPPFLAGS = $(MESOS_CPPFLAGS)
 
@@ -1525,23 +1515,19 @@ libmesos_no_3rdparty_la_LIBADD += libbuild.la
 # Convenience library for build the CSI client.
 noinst_LTLIBRARIES += libcsi.la
 libcsi_la_SOURCES =							\
+  csi/client.cpp							\
   csi/paths.cpp								\
+  csi/rpc.cpp								\
   csi/utils.cpp
 libcsi_la_SOURCES +=							\
   ../include/csi/spec.hpp						\
+  csi/client.hpp							\
   csi/paths.hpp								\
+  csi/rpc.hpp								\
   csi/state.hpp								\
   csi/state.proto							\
   csi/utils.hpp
 
-if ENABLE_GRPC
-libcsi_la_SOURCES +=							\
-  csi/client.cpp							\
-  csi/client.hpp							\
-  csi/rpc.cpp								\
-  csi/rpc.hpp
-endif
-
 nodist_libcsi_la_SOURCES = $(CXX_CSI_PROTOS)
 libcsi_la_CPPFLAGS = $(MESOS_CPPFLAGS)
 
@@ -2325,14 +2311,12 @@ disk_full_framework_SOURCES = examples/disk_full_framework.cpp
 disk_full_framework_CPPFLAGS = $(MESOS_CPPFLAGS)
 disk_full_framework_LDADD = libmesos.la $(LDADD)
 
-if ENABLE_GRPC
 if OS_LINUX
 check_PROGRAMS += test-csi-plugin
 test_csi_plugin_SOURCES = examples/test_csi_plugin.cpp
 test_csi_plugin_CPPFLAGS = $(MESOS_CPPFLAGS)
 test_csi_plugin_LDADD = libmesos.la $(LIB_PROTOBUF) $(LIB_GRPC) $(LDADD)
 endif
-endif
 
 check_PROGRAMS += test-helper
 test_helper_SOURCES =						\
@@ -2512,6 +2496,7 @@ mesos_tests_SOURCES =						\
   tests/containerizer.hpp					\
   tests/cram_md5_authentication_tests.cpp			\
   tests/credentials_tests.cpp					\
+  tests/csi_client_tests.cpp					\
   tests/default_executor_tests.cpp				\
   tests/disk_profile_adaptor_tests.cpp				\
   tests/disk_profile_server.hpp					\
@@ -2555,6 +2540,8 @@ mesos_tests_SOURCES =						\
   tests/mesos.cpp						\
   tests/mesos.hpp						\
   tests/metrics_tests.cpp					\
+  tests/mock_csi_plugin.cpp					\
+  tests/mock_csi_plugin.hpp					\
   tests/mock_docker.cpp						\
   tests/mock_docker.hpp						\
   tests/mock_fetcher.cpp					\
@@ -2647,13 +2634,6 @@ mesos_tests_SOURCES =						\
   tests/containerizer/setns_test_helper.hpp			\
   tests/containerizer/volume_sandbox_path_isolator_tests.cpp
 
-if ENABLE_GRPC
-mesos_tests_SOURCES +=						\
-  tests/csi_client_tests.cpp					\
-  tests/mock_csi_plugin.cpp					\
-  tests/mock_csi_plugin.hpp
-endif
-
 if ENABLE_XFS_DISK_ISOLATOR
 mesos_tests_SOURCES +=						\
   tests/containerizer/xfs_quota_tests.cpp
@@ -2686,8 +2666,10 @@ mesos_tests_DEPENDENCIES =					\
 
 if OS_LINUX
 mesos_tests_SOURCES +=						\
+  tests/agent_resource_provider_config_api_tests.cpp		\
   tests/ldcache_tests.cpp					\
   tests/ldd_tests.cpp						\
+  tests/storage_local_resource_provider_tests.cpp		\
   tests/containerizer/linux_capabilities_isolator_tests.cpp	\
   tests/containerizer/capabilities_tests.cpp			\
   tests/containerizer/capabilities_test_helper.cpp		\
@@ -2710,12 +2692,6 @@ mesos_tests_SOURCES +=						\
   tests/containerizer/volume_host_path_isolator_tests.cpp	\
   tests/containerizer/volume_image_isolator_tests.cpp		\
   tests/containerizer/volume_secret_isolator_tests.cpp
-
-if ENABLE_GRPC
-mesos_tests_SOURCES +=						\
-  tests/agent_resource_provider_config_api_tests.cpp		\
-  tests/storage_local_resource_provider_tests.cpp
-endif
 endif
 
 if ENABLE_LINUX_ROUTING
diff --git a/src/cmake/MesosProtobuf.cmake b/src/cmake/MesosProtobuf.cmake
index 9fadc9f..09074d7 100644
--- a/src/cmake/MesosProtobuf.cmake
+++ b/src/cmake/MesosProtobuf.cmake
@@ -127,7 +127,7 @@ function(PROTOC_GENERATE)
     list(APPEND PROTOC_OPTIONS -I${INTERNAL_PROTO_PATH})
   endif ()
 
-  if (PROTOC_GRPC AND ENABLE_GRPC)
+  if (PROTOC_GRPC)
     list(APPEND PROTOC_OPTIONS
       --grpc_out=${CPP_OUT}
       --plugin=protoc-gen-grpc=$<TARGET_FILE:grpc_cpp_plugin>)
@@ -142,7 +142,7 @@ function(PROTOC_GENERATE)
   set(CC ${CPP_OUT}/${PROTOC_TARGET}.pb.cc)
   set(H ${CPP_OUT}/${PROTOC_TARGET}.pb.h)
 
-  if (PROTOC_GRPC AND ENABLE_GRPC)
+  if (PROTOC_GRPC)
     set(GRPC_CC ${CPP_OUT}/${PROTOC_TARGET}.grpc.pb.cc)
     set(GRPC_H ${CPP_OUT}/${PROTOC_TARGET}.grpc.pb.h)
   endif ()
@@ -211,7 +211,7 @@ function(PROTOC_GENERATE)
   endif ()
 
   # Make sure that the gRPC plugin is built.
-  if (PROTOC_GRPC AND ENABLE_GRPC)
+  if (PROTOC_GRPC)
     list(APPEND PROTOC_DEPENDS grpc_cpp_plugin)
   endif ()
 
diff --git a/src/examples/CMakeLists.txt b/src/examples/CMakeLists.txt
index 6a6ee7c..a2c0dd1 100644
--- a/src/examples/CMakeLists.txt
+++ b/src/examples/CMakeLists.txt
@@ -53,7 +53,7 @@ if (NOT WIN32)
   add_executable(test-csi-user-framework       test_csi_user_framework.cpp)
 
   # TODO(chhsiao): The test CSI plugin is Linux only for now.
-  if (ENABLE_GRPC AND LINUX)
+  if (LINUX)
     add_executable(test-csi-plugin test_csi_plugin.cpp)
   endif ()
 
@@ -91,7 +91,7 @@ if (NOT WIN32)
   target_link_libraries(test-csi-user-framework       PRIVATE mesos)
 
   # TODO(chhsiao): The test CSI plugin is Linux only for now.
-  if (ENABLE_GRPC AND LINUX)
+  if (LINUX)
     # NOTE: We explicitly add `grpc` here since the test CSI plugin uses the
     # server-side gRPC library, which might not be linked in mesos.
     target_link_libraries(test-csi-plugin PRIVATE mesos grpc)
diff --git a/src/python/native_common/ext_modules.py.in b/src/python/native_common/ext_modules.py.in
index dc4d91a..7efbb8e 100644
--- a/src/python/native_common/ext_modules.py.in
+++ b/src/python/native_common/ext_modules.py.in
@@ -125,29 +125,27 @@ def _create_module(module_name):
         EXTRA_OBJECTS.append(libprofiler)
 
 
-    # We need to check for the presense of libgrpc++.a, libgrpc.a and libgpr.a
-    # only if gRPC is enabled.
-    if '@ENABLE_GRPC_FALSE@' == '#':
-        grpc = os.path.join('3rdparty', 'grpc-1.10.0')
-        grpc_variant = '_unsecure' if '@ENABLE_SSL_TRUE@' == '#' else ''
-        libgrpcpp = os.path.join(abs_top_builddir, grpc, 'libs', 'opt', 'libgrpc++%s.a' % grpc_variant)
-        libgrpc = os.path.join(abs_top_builddir, grpc, 'libs', 'opt', 'libgrpc%s.a' % grpc_variant)
-        libgpr = os.path.join(abs_top_builddir, grpc, 'libs', 'opt', 'libgpr.a')
-
-        if os.path.exists(libgrpcpp):
-            EXTRA_OBJECTS.append(libgrpcpp)
-        else:
-            EXTRA_OBJECTS.append('-lgrpc++%s' % grpc_variant)
+    # We link different grpc library variants based on whether SSL is enabled.
+    grpc = os.path.join('3rdparty', 'grpc-1.10.0')
+    grpc_variant = '_unsecure' if '@ENABLE_SSL_TRUE@' == '#' else ''
+    libgrpcpp = os.path.join(abs_top_builddir, grpc, 'libs', 'opt', 'libgrpc++%s.a' % grpc_variant)
+    libgrpc = os.path.join(abs_top_builddir, grpc, 'libs', 'opt', 'libgrpc%s.a' % grpc_variant)
+    libgpr = os.path.join(abs_top_builddir, grpc, 'libs', 'opt', 'libgpr.a')
+
+    if os.path.exists(libgrpcpp):
+        EXTRA_OBJECTS.append(libgrpcpp)
+    else:
+        EXTRA_OBJECTS.append('-lgrpc++%s' % grpc_variant)
 
-        if os.path.exists(libgrpc):
-            EXTRA_OBJECTS.append(libgrpc)
-        else:
-            EXTRA_OBJECTS.append('-lgrpc%s' % grpc_variant)
+    if os.path.exists(libgrpc):
+        EXTRA_OBJECTS.append(libgrpc)
+    else:
+        EXTRA_OBJECTS.append('-lgrpc%s' % grpc_variant)
 
-        if os.path.exists(libgpr):
-            EXTRA_OBJECTS.append(libgpr)
-        else:
-            EXTRA_OBJECTS.append('-lgpr')
+    if os.path.exists(libgpr):
+        EXTRA_OBJECTS.append(libgpr)
+    else:
+        EXTRA_OBJECTS.append('-lgpr')
 
 
     # OSX uses a different linker (llvm-ld) and doesn't support --as-needed
diff --git a/src/resource_provider/local.cpp b/src/resource_provider/local.cpp
index ae23c20..801e6c4 100644
--- a/src/resource_provider/local.cpp
+++ b/src/resource_provider/local.cpp
@@ -42,7 +42,7 @@ Try<Owned<LocalResourceProvider>> LocalResourceProvider::create(
 {
   // TODO(jieyu): Document the built-in local resource providers.
   const hashmap<string, lambda::function<decltype(create)>> creators = {
-#if defined(ENABLE_GRPC) && defined(__linux__)
+#if defined(__linux__)
     {"org.apache.mesos.rp.local.storage", &StorageLocalResourceProvider::create}
 #endif
   };
@@ -63,7 +63,7 @@ Try<Principal> LocalResourceProvider::principal(
   // providers.
   const hashmap<string, lambda::function<decltype(principal)>>
     principalGenerators = {
-#if defined(ENABLE_GRPC) && defined(__linux__)
+#if defined(__linux__)
       {"org.apache.mesos.rp.local.storage",
         &StorageLocalResourceProvider::principal}
 #endif
diff --git a/src/tests/CMakeLists.txt b/src/tests/CMakeLists.txt
index d4ddd13..fed072a 100644
--- a/src/tests/CMakeLists.txt
+++ b/src/tests/CMakeLists.txt
@@ -48,6 +48,7 @@ set(MESOS_TESTS_UTILS_SRC
   http_server_test_helper.cpp
   main.cpp
   mesos.cpp
+  mock_csi_plugin.cpp
   mock_docker.cpp
   mock_fetcher.cpp
   mock_registrar.cpp
@@ -70,11 +71,6 @@ if (LINUX)
     containerizer/setns_test_helper.cpp)
 endif ()
 
-if (ENABLE_GRPC)
-  list(APPEND MESOS_TESTS_UTILS_SRC
-    mock_csi_plugin.cpp)
-endif ()
-
 
 # All the test sources.
 #######################
@@ -92,6 +88,7 @@ set(MESOS_TESTS_SRC
   container_daemon_tests.cpp
   cram_md5_authentication_tests.cpp
   credentials_tests.cpp
+  csi_client_tests.cpp
   default_executor_tests.cpp
   exception_tests.cpp
   executor_http_api_tests.cpp
@@ -216,15 +213,12 @@ if (NOT WIN32)
     containerizer/volume_sandbox_path_isolator_tests.cpp)
 endif ()
 
-if (ENABLE_GRPC)
-  list(APPEND MESOS_TESTS_SRC
-    csi_client_tests.cpp)
-endif ()
-
 if (LINUX)
   list(APPEND MESOS_TESTS_SRC
+    agent_resource_provider_config_api_tests.cpp
     ldcache_tests.cpp
     ldd_tests.cpp
+    storage_local_resource_provider_tests.cpp
     containerizer/capabilities_tests.cpp
     containerizer/cgroups_isolator_tests.cpp
     containerizer/cgroups_tests.cpp
@@ -246,13 +240,6 @@ if (LINUX)
     containerizer/volume_image_isolator_tests.cpp
     containerizer/volume_secret_isolator_tests.cpp)
 
-  # NOTE: These use the `filesystem/linux` isolator.
-  if (ENABLE_GRPC)
-    list(APPEND MESOS_TESTS_SRC
-      agent_resource_provider_config_api_tests.cpp
-      storage_local_resource_provider_tests.cpp)
-  endif ()
-
   if (ENABLE_XFS_DISK_ISOLATOR)
     list(APPEND MESOS_TESTS_SRC
       containerizer/xfs_quota_tests.cpp)
@@ -366,7 +353,7 @@ if (NOT WIN32)
     test-http-framework)
 
   # SLRP-related tests are Linux only and require the test CSI plugin binary.
-  if (ENABLE_GRPC AND LINUX)
+  if (LINUX)
     add_dependencies(
       mesos-tests
       test-csi-plugin)