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:51 UTC

[mesos] branch master updated (72878f8 -> 5bb4245)

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

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


    from 72878f8  Moved around some functions definitions between files.
     new 9fb936a  Fixed gRPC compilation with Clang when building Mesos.
     new deeb3b0  Fixed gRPC compilation for standalone libprocess build with Clang.
     new 5d1ca8c  Fixed gRPC build for CMake with multi-configuration generators.
     new 200ed1d  Always build gRPC in libprocess.
     new 5bb4245  Always build gRPC in Mesos.

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 3rdparty/CMakeLists.txt                      | 216 +++++++++++++--------------
 3rdparty/Makefile.am                         |  14 +-
 3rdparty/libprocess/3rdparty/Makefile.am     |  14 +-
 3rdparty/libprocess/Makefile.am              |  28 ++--
 3rdparty/libprocess/configure.ac             |  96 ++++++------
 3rdparty/libprocess/src/CMakeLists.txt       |   8 +-
 3rdparty/libprocess/src/tests/CMakeLists.txt |  42 +++---
 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 +--
 17 files changed, 286 insertions(+), 375 deletions(-)


[mesos] 03/05: Fixed gRPC build for CMake with multi-configuration generators.

Posted by ch...@apache.org.
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 5d1ca8c0cbbcfd837a99828600bdb049410f4dc0
Author: Chun-Hung Hsiao <ch...@mesosphere.io>
AuthorDate: Wed Aug 1 14:42:17 2018 -0700

    Fixed gRPC build for CMake with multi-configuration generators.
    
    This patch adds `--config` options to the CMake build commands for gRPC,
    so that when building with a multi-configuration generator (e.g., Visual
    Studio or XCode), it could pass the specified configuration along.
    
    Review: https://reviews.apache.org/r/68176
---
 3rdparty/CMakeLists.txt | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt
index 8300088..2e5d519 100644
--- a/3rdparty/CMakeLists.txt
+++ b/3rdparty/CMakeLists.txt
@@ -1252,10 +1252,10 @@ if (ENABLE_GRPC)
   endif ()
 
   set(GRPC_BUILD_CMD
-    ${CMAKE_COMMAND} --build . --target gpr &&
-    ${CMAKE_COMMAND} --build . --target grpc${GRPC_VARIANT} &&
-    ${CMAKE_COMMAND} --build . --target grpc++${GRPC_VARIANT} &&
-    ${CMAKE_COMMAND} --build . --target grpc_cpp_plugin)
+    ${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


[mesos] 02/05: Fixed gRPC compilation for standalone libprocess build with Clang.

Posted by ch...@apache.org.
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 deeb3b021e2bf3e7bc0c9f7b6a93cdbc249d9708
Author: Chun-Hung Hsiao <ch...@mesosphere.io>
AuthorDate: Wed Aug 1 14:42:17 2018 -0700

    Fixed gRPC compilation for standalone libprocess build with Clang.
    
    When compiling gRPC with Clang, there are some array-out-of-bound
    warnings due to the use of GLIBC's `__strcmp_cg` macro in the c-ares
    library. With `-Werror` on, these warnings would stop gRPC from
    compiling. This patch ignores such errors.
    
    Review: https://reviews.apache.org/r/68154
---
 3rdparty/libprocess/3rdparty/Makefile.am | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/3rdparty/libprocess/3rdparty/Makefile.am b/3rdparty/libprocess/3rdparty/Makefile.am
index da350b1..a0c7f38 100644
--- a/3rdparty/libprocess/3rdparty/Makefile.am
+++ b/3rdparty/libprocess/3rdparty/Makefile.am
@@ -221,16 +221,20 @@ LIB_GRPC = $(GRPC)/libs/opt/libgrpc++$(GRPC_VARIANT).a	\
 
 $(LIB_GRPC): $(GRPC)-build-stamp
 
-# NOTE: We the include flags through the `CPPFLAGS` environment variable rather
-# than the command line because gRPC uses target-specific assignments to append
-# flags to `CPPFLAGS`, which will be overwritten by command line arguments. See:
+# NOTE: We include flags through the `CPPFLAGS` environment variable rather than
+# the command line because gRPC uses target-specific assignments to append flags
+# to `CPPFLAGS`, which will be overwritten by command line arguments. See:
 # https://www.gnu.org/software/make/manual/html_node/Target_002dspecific.html
+#
+# NOTE: We ignore `array-bounds` errors generated by the GLIBC's `__strcmp_cg`
+# macro used in gRPC's c-ares library when compiled with Clang.
 $(GRPC)-build-stamp: $(GRPC)-stamp			\
                      $(PROTOBUF)-build-stamp
 	cd $(GRPC) &&					\
 	  CPPFLAGS="$(PROTOBUF_INCLUDE_FLAGS)		\
 	            $(SSL_INCLUDE_FLAGS)		\
-	            $(ZLIB_INCLUDE_FLAGS)"		\
+	            $(ZLIB_INCLUDE_FLAGS)		\
+	            -Wno-array-bounds"			\
 	  $(MAKE) $(AM_MAKEFLAGS)			\
 	    $(LIB_GRPC:%=$(abs_builddir)/%)		\
 	    CC="$(CC)"					\


[mesos] 04/05: Always build gRPC in libprocess.

Posted by ch...@apache.org.
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 200ed1d83c80f2c21ba04e25b2248f40c30b234a
Author: Chun-Hung Hsiao <ch...@mesosphere.io>
AuthorDate: Fri Jul 27 12:00:01 2018 -0700

    Always build gRPC in libprocess.
    
    Review: https://reviews.apache.org/r/68091
---
 3rdparty/libprocess/3rdparty/Makefile.am     |  2 -
 3rdparty/libprocess/Makefile.am              | 28 +++-----
 3rdparty/libprocess/configure.ac             | 96 +++++++++++++---------------
 3rdparty/libprocess/src/CMakeLists.txt       |  8 +--
 3rdparty/libprocess/src/tests/CMakeLists.txt | 42 ++++++------
 5 files changed, 75 insertions(+), 101 deletions(-)

diff --git a/3rdparty/libprocess/3rdparty/Makefile.am b/3rdparty/libprocess/3rdparty/Makefile.am
index a0c7f38..5541419 100644
--- a/3rdparty/libprocess/3rdparty/Makefile.am
+++ b/3rdparty/libprocess/3rdparty/Makefile.am
@@ -209,7 +209,6 @@ PROTOBUF_LINKER_FLAGS = @PROTOBUF_LINKERFLAGS@
 PROTOC = @PROTOCOMPILER@
 endif
 
-if ENABLE_GRPC
 if !ENABLE_SSL
 GRPC_VARIANT = _unsecure
 endif
@@ -254,7 +253,6 @@ else
 $(GRPC)-build-stamp:
 	touch $@
 endif
-endif
 
 # Convenience library for gmock/gtest.
 check_LTLIBRARIES = libgmock.la
diff --git a/3rdparty/libprocess/Makefile.am b/3rdparty/libprocess/Makefile.am
index abf6673..f9d9d06 100644
--- a/3rdparty/libprocess/Makefile.am
+++ b/3rdparty/libprocess/Makefile.am
@@ -113,7 +113,6 @@ $(LIB_GPERFTOOLS): $(GPERFTOOLS)-build-stamp
 BUNDLED_DEPS += $(GPERFTOOLS)-build-stamp
 endif
 
-if ENABLE_GRPC
 if !ENABLE_SSL
 GRPC_VARIANT = _unsecure
 endif
@@ -136,7 +135,6 @@ else
 LIB_GRPC = -lgrpc++$(GRPC_VARIANT) -lgrpc$(GRPC_VARIANT) -lgpr
 GRPC_CPP_PLUGIN = @GRPC_CXX_PLUGIN@
 endif
-endif
 
 if WITH_BUNDLED_HTTP_PARSER
 HTTP_PARSER_INCLUDE_FLAGS = -I$(HTTP_PARSER)
@@ -204,6 +202,7 @@ libprocess_la_SOURCES =		\
   src/event_queue.hpp		\
   src/firewall.cpp		\
   src/gate.hpp			\
+  src/grpc.cpp			\
   src/gtest_constants.cpp	\
   src/help.cpp			\
   src/http.cpp			\
@@ -265,11 +264,6 @@ libprocess_la_CPPFLAGS =			\
   $(STOUT_INCLUDE_FLAGS)			\
   $(AM_CPPFLAGS)
 
-if ENABLE_GRPC
-libprocess_la_SOURCES +=	\
-  src/grpc.cpp
-endif
-
 if ENABLE_LIBEVENT
 libprocess_la_SOURCES +=			\
   src/posix/libevent/libevent.hpp		\
@@ -309,6 +303,8 @@ libprocess_tests_SOURCES =					\
   src/tests/decoder_tests.cpp					\
   src/tests/encoder_tests.cpp					\
   src/tests/future_tests.cpp					\
+  src/tests/grpc_tests.cpp					\
+  src/tests/grpc_tests.proto					\
   src/tests/http_tests.cpp					\
   src/tests/io_tests.cpp					\
   src/tests/limiter_tests.cpp					\
@@ -333,6 +329,12 @@ libprocess_tests_SOURCES =					\
   src/tests/timeseries_tests.cpp				\
   src/tests/time_tests.cpp
 
+GRPC_TESTS_PROTOS =			\
+  grpc_tests.grpc.pb.cc			\
+  grpc_tests.grpc.pb.h			\
+  grpc_tests.pb.cc			\
+  grpc_tests.pb.h
+
 libprocess_tests_CPPFLAGS =		\
   -I$(srcdir)/src			\
   $(GMOCK_INCLUDE_FLAGS)		\
@@ -345,18 +347,6 @@ libprocess_tests_LDADD =		\
   $(LIB_PROTOBUF)			\
   libprocess.la
 
-if ENABLE_GRPC
-libprocess_tests_SOURCES +=		\
-  src/tests/grpc_tests.cpp		\
-  src/tests/grpc_tests.proto
-
-GRPC_TESTS_PROTOS =			\
-  grpc_tests.grpc.pb.cc			\
-  grpc_tests.grpc.pb.h			\
-  grpc_tests.pb.cc			\
-  grpc_tests.pb.h
-endif
-
 if ENABLE_SSL
 check_PROGRAMS += ssl-client
 ssl_client_SOURCES = src/tests/ssl_client.cpp
diff --git a/3rdparty/libprocess/configure.ac b/3rdparty/libprocess/configure.ac
index f125e43..752d5ba 100644
--- a/3rdparty/libprocess/configure.ac
+++ b/3rdparty/libprocess/configure.ac
@@ -105,11 +105,6 @@ AC_ARG_ENABLE([debug],
                               option won't change them default: no]),
               [], [enable_debug=no])
 
-AC_ARG_ENABLE([grpc],
-              AS_HELP_STRING([--enable-grpc],
-                             [enable grpc support]),
-              [], [enable_grpc=no])
-
 AC_ARG_ENABLE([install],
               AS_HELP_STRING([--enable-install],
                              [install libprocess]),
@@ -1188,52 +1183,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
-
-    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"
-
-    if test "x$found_grpc" = "xyes"; then
-      with_bundled_grpc=no
+# 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
 
-      AC_CHECK_TOOL([GRPC_CXX_PLUGIN_TEST],
-                    [grpc_cpp_plugin],
-                    [],
-                    [$GRPCPREFIX/bin])
+  if test "x$enable_ssl" = "xno"; then
+    GRPC_VARIANT="_unsecure"
+  fi
 
-      if test -z "`echo $GRPC_CXX_PLUGIN_TEST`"; then
-        AC_MSG_ERROR([grpc_cpp_plugin not found in PATH])
-      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"
+
+  if test "x$found_grpc" = "xyes"; then
+    with_bundled_grpc=no
+
+    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
 
-      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.
@@ -1242,14 +1236,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
+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/3rdparty/libprocess/src/CMakeLists.txt b/3rdparty/libprocess/src/CMakeLists.txt
index bb8af6d..19fa980 100644
--- a/3rdparty/libprocess/src/CMakeLists.txt
+++ b/3rdparty/libprocess/src/CMakeLists.txt
@@ -29,6 +29,7 @@ set(PROCESS_SRC
   authenticator_manager.cpp
   clock.cpp
   firewall.cpp
+  grpc.cpp
   gtest_constants.cpp
   help.cpp
   http.cpp
@@ -56,11 +57,6 @@ else ()
     posix/subprocess.cpp)
 endif ()
 
-if (ENABLE_GRPC)
-  list(APPEND PROCESS_SRC
-    grpc.cpp)
-endif ()
-
 if (ENABLE_LIBEVENT)
   list(APPEND PROCESS_SRC
     posix/libevent/libevent.cpp
@@ -104,7 +100,7 @@ target_link_libraries(
   process PUBLIC
   stout
   http_parser
-  $<$<BOOL:${ENABLE_GRPC}>:grpc>
+  grpc
   $<$<BOOL:${ENABLE_SSL}>:OpenSSL::SSL>
   $<$<BOOL:${ENABLE_SSL}>:OpenSSL::Crypto>)
 
diff --git a/3rdparty/libprocess/src/tests/CMakeLists.txt b/3rdparty/libprocess/src/tests/CMakeLists.txt
index 5814bc6..a03a77e 100644
--- a/3rdparty/libprocess/src/tests/CMakeLists.txt
+++ b/3rdparty/libprocess/src/tests/CMakeLists.txt
@@ -24,6 +24,7 @@ set(PROCESS_TESTS_SRC
   decoder_tests.cpp
   encoder_tests.cpp
   future_tests.cpp
+  grpc_tests.cpp
   http_tests.cpp
   limiter_tests.cpp
   loop_tests.cpp
@@ -45,6 +46,25 @@ set(PROCESS_TESTS_SRC
   time_tests.cpp
   timeseries_tests.cpp)
 
+set(GRPC_TESTS_PROTOS
+  grpc_tests.grpc.pb.cc
+  grpc_tests.grpc.pb.h
+  grpc_tests.pb.cc
+  grpc_tests.pb.h)
+
+list(APPEND PROCESS_TESTS_SRC
+  ${GRPC_TESTS_PROTOS})
+
+add_custom_command(
+  OUTPUT ${GRPC_TESTS_PROTOS}
+  COMMAND protoc
+    -I${CMAKE_CURRENT_SOURCE_DIR}
+    --cpp_out=${CMAKE_CURRENT_BINARY_DIR}
+    --grpc_out=${CMAKE_CURRENT_BINARY_DIR}
+    --plugin=protoc-gen-grpc=$<TARGET_FILE:grpc_cpp_plugin>
+    ${CMAKE_CURRENT_SOURCE_DIR}/grpc_tests.proto
+  DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/grpc_tests.proto)
+
 if (NOT WIN32)
   list(APPEND PROCESS_TESTS_SRC
     io_tests.cpp
@@ -54,28 +74,6 @@ elseif (ENABLE_LIBWINIO)
     io_tests.cpp)
 endif ()
 
-if (ENABLE_GRPC)
-  set(GRPC_TESTS_PROTOS
-    grpc_tests.grpc.pb.cc
-    grpc_tests.grpc.pb.h
-    grpc_tests.pb.cc
-    grpc_tests.pb.h)
-
-  list(APPEND PROCESS_TESTS_SRC
-    grpc_tests.cpp
-    ${GRPC_TESTS_PROTOS})
-
-  add_custom_command(
-    OUTPUT ${GRPC_TESTS_PROTOS}
-    COMMAND protoc
-      -I${CMAKE_CURRENT_SOURCE_DIR}
-      --cpp_out=${CMAKE_CURRENT_BINARY_DIR}
-      --grpc_out=${CMAKE_CURRENT_BINARY_DIR}
-      --plugin=protoc-gen-grpc=$<TARGET_FILE:grpc_cpp_plugin>
-      ${CMAKE_CURRENT_SOURCE_DIR}/grpc_tests.proto
-    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/grpc_tests.proto)
-endif ()
-
 if (ENABLE_SSL)
   list(APPEND PROCESS_TESTS_SRC
     jwt_tests.cpp


[mesos] 01/05: Fixed gRPC compilation with Clang when building Mesos.

Posted by ch...@apache.org.
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 9fb936abdce72e313e77aa15f0b9fc95c7fea512
Author: Chun-Hung Hsiao <ch...@mesosphere.io>
AuthorDate: Mon Jul 30 16:58:54 2018 -0700

    Fixed gRPC compilation with Clang when building Mesos.
    
    When compiling gRPC with Clang, there are some array-out-of-bound
    warnings due to the use of GLIBC's `__strcmp_cg` macro in the c-ares
    library. With `-Werror` on, these warnings would stop gRPC from
    compiling. This patch ignores such errors.
    
    Review: https://reviews.apache.org/r/68114
---
 3rdparty/Makefile.am | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/3rdparty/Makefile.am b/3rdparty/Makefile.am
index e7005fb..9508b0f 100644
--- a/3rdparty/Makefile.am
+++ b/3rdparty/Makefile.am
@@ -425,16 +425,20 @@ LIB_GRPC = $(GRPC)/libs/opt/libgrpc++$(GRPC_VARIANT).a	\
 
 $(LIB_GRPC): $(GRPC)-build-stamp
 
-# NOTE: We the include flags through the `CPPFLAGS` environment variable rather
-# than the command line because gRPC uses target-specific assignments to append
-# flags to `CPPFLAGS`, which will be overwritten by command line arguments. See:
+# NOTE: We include flags through the `CPPFLAGS` environment variable rather than
+# the command line because gRPC uses target-specific assignments to append flags
+# to `CPPFLAGS`, which will be overwritten by command line arguments. See:
 # https://www.gnu.org/software/make/manual/html_node/Target_002dspecific.html
+#
+# NOTE: We ignore `array-bounds` errors generated by the GLIBC's `__strcmp_cg`
+# macro used in gRPC's c-ares library when compiled with Clang.
 $(GRPC)-build-stamp: $(GRPC)-stamp			\
                      $(PROTOBUF)-build-stamp
 	cd $(GRPC) &&					\
 	  CPPFLAGS="$(PROTOBUF_INCLUDE_FLAGS)		\
 	            $(SSL_INCLUDE_FLAGS)		\
-	            $(ZLIB_INCLUDE_FLAGS)"		\
+	            $(ZLIB_INCLUDE_FLAGS)		\
+	            -Wno-array-bounds"			\
 	  $(MAKE) $(AM_MAKEFLAGS)			\
 	    $(LIB_GRPC:%=$(abs_builddir)/%)		\
 	    CC="$(CC)"					\


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

Posted by ch...@apache.org.
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)