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)