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 <chhs...@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)