Upgrade gRPC (#11768)
* BUILD rule modifications * More build fixes * Code changes * More code fixes * Working tests * CMake build * Fix pprof * Fix header includes * CMake fix test * Bazel clean * Fix verbs * More verbs fixes * bazel clean for XLA * Windows build fix test * Add openssl/rand.h * New cmake build command * --config Release
This commit is contained in:
parent
3cd828474f
commit
d09304fca4
@ -18,7 +18,7 @@ cc_library(
|
|||||||
"//tensorflow/compiler/xla/service",
|
"//tensorflow/compiler/xla/service",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@local_config_cuda//cuda:cuda_headers",
|
"@local_config_cuda//cuda:cuda_headers",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
"""Wrapper around cc_proto_library used inside the XLA codebase."""
|
"""Wrapper around cc_proto_library used inside the XLA codebase."""
|
||||||
|
|
||||||
load("@protobuf//:protobuf.bzl", "cc_proto_library")
|
load("@protobuf_archive//:protobuf.bzl", "cc_proto_library")
|
||||||
|
|
||||||
# xla_proto_library() is a convenience wrapper around cc_proto_library.
|
# xla_proto_library() is a convenience wrapper around cc_proto_library.
|
||||||
def xla_proto_library(name, srcs=[], deps=[], visibility=None, testonly=0):
|
def xla_proto_library(name, srcs=[], deps=[], visibility=None, testonly=0):
|
||||||
cc_proto_library(name=name,
|
cc_proto_library(name=name,
|
||||||
srcs=srcs,
|
srcs=srcs,
|
||||||
deps=deps,
|
deps=deps,
|
||||||
cc_libs = ["@protobuf//:protobuf"],
|
cc_libs = ["@protobuf_archive//:protobuf"],
|
||||||
protoc="@protobuf//:protoc",
|
protoc="@protobuf_archive//:protoc",
|
||||||
default_runtime="@protobuf//:protobuf",
|
default_runtime="@protobuf_archive//:protobuf",
|
||||||
testonly=testonly,
|
testonly=testonly,
|
||||||
visibility=visibility,)
|
visibility=visibility,)
|
||||||
|
|
||||||
|
13
tensorflow/contrib/cmake/external/grpc.cmake
vendored
13
tensorflow/contrib/cmake/external/grpc.cmake
vendored
@ -17,7 +17,7 @@ include (ExternalProject)
|
|||||||
set(GRPC_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/include)
|
set(GRPC_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc/include)
|
||||||
set(GRPC_URL https://github.com/grpc/grpc.git)
|
set(GRPC_URL https://github.com/grpc/grpc.git)
|
||||||
set(GRPC_BUILD ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc)
|
set(GRPC_BUILD ${CMAKE_CURRENT_BINARY_DIR}/grpc/src/grpc)
|
||||||
set(GRPC_TAG 3bc78cd0b5bd784a235c01612d634b1ec5f8fb97)
|
set(GRPC_TAG 781fd6f6ea03645a520cd5c675da67ab61f87e4b)
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
set(grpc_STATIC_LIBRARIES
|
set(grpc_STATIC_LIBRARIES
|
||||||
@ -38,7 +38,10 @@ ExternalProject_Add(grpc
|
|||||||
GIT_TAG ${GRPC_TAG}
|
GIT_TAG ${GRPC_TAG}
|
||||||
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
|
DOWNLOAD_DIR "${DOWNLOAD_LOCATION}"
|
||||||
BUILD_IN_SOURCE 1
|
BUILD_IN_SOURCE 1
|
||||||
|
# TODO(jhseu): Remove this PATCH_COMMAND once grpc removes the dependency
|
||||||
|
# on "grpc" from the "grpc++_unsecure" rule.
|
||||||
PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/patches/grpc/CMakeLists.txt ${GRPC_BUILD}
|
PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/patches/grpc/CMakeLists.txt ${GRPC_BUILD}
|
||||||
|
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release --target grpc++_unsecure
|
||||||
INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
CMAKE_CACHE_ARGS
|
CMAKE_CACHE_ARGS
|
||||||
-DCMAKE_BUILD_TYPE:STRING=Release
|
-DCMAKE_BUILD_TYPE:STRING=Release
|
||||||
@ -46,5 +49,13 @@ ExternalProject_Add(grpc
|
|||||||
-DPROTOBUF_INCLUDE_DIRS:STRING=${PROTOBUF_INCLUDE_DIRS}
|
-DPROTOBUF_INCLUDE_DIRS:STRING=${PROTOBUF_INCLUDE_DIRS}
|
||||||
-DPROTOBUF_LIBRARIES:STRING=${protobuf_STATIC_LIBRARIES}
|
-DPROTOBUF_LIBRARIES:STRING=${protobuf_STATIC_LIBRARIES}
|
||||||
-DZLIB_ROOT:STRING=${ZLIB_INSTALL}
|
-DZLIB_ROOT:STRING=${ZLIB_INSTALL}
|
||||||
|
-DgRPC_SSL_PROVIDER:STRING=NONE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# grpc/src/core/ext/census/tracing.c depends on the existence of openssl/rand.h.
|
||||||
|
ExternalProject_Add_Step(grpc copy_rand
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_SOURCE_DIR}/patches/grpc/rand.h ${GRPC_BUILD}/include/openssl/rand.h
|
||||||
|
DEPENDEES patch
|
||||||
|
DEPENDERS build
|
||||||
|
)
|
||||||
|
File diff suppressed because it is too large
Load Diff
14
tensorflow/contrib/cmake/patches/grpc/rand.h
Normal file
14
tensorflow/contrib/cmake/patches/grpc/rand.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/* Copyright 2017 The TensorFlow Authors. All Rights Reserved.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
==============================================================================*/
|
@ -12,7 +12,7 @@ cc_library(
|
|||||||
":clustering_ops",
|
":clustering_ops",
|
||||||
":masked_matmul_ops",
|
":masked_matmul_ops",
|
||||||
":wals_solver_ops",
|
":wals_solver_ops",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ cc_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
alwayslink = 1,
|
alwayslink = 1,
|
||||||
)
|
)
|
||||||
@ -33,7 +33,7 @@ cc_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
alwayslink = 1,
|
alwayslink = 1,
|
||||||
)
|
)
|
||||||
@ -45,7 +45,7 @@ cc_library(
|
|||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"//tensorflow/core/kernels:bounds_check",
|
"//tensorflow/core/kernels:bounds_check",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
alwayslink = 1,
|
alwayslink = 1,
|
||||||
)
|
)
|
||||||
|
@ -17,7 +17,7 @@ cc_library(
|
|||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ tf_custom_op_library(
|
|||||||
"ops/single_image_random_dot_stereograms_ops.cc",
|
"ops/single_image_random_dot_stereograms_ops.cc",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
"@protobuf//:protobuf",
|
"@protobuf_archive//:protobuf",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ cc_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
alwayslink = 1,
|
alwayslink = 1,
|
||||||
)
|
)
|
||||||
|
@ -14,7 +14,7 @@ cc_library(
|
|||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@farmhash_archive//:farmhash",
|
"@farmhash_archive//:farmhash",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
alwayslink = 1,
|
alwayslink = 1,
|
||||||
)
|
)
|
||||||
|
@ -53,7 +53,7 @@ cc_library(
|
|||||||
":tree_utils",
|
":tree_utils",
|
||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
alwayslink = 1,
|
alwayslink = 1,
|
||||||
)
|
)
|
||||||
@ -356,7 +356,7 @@ cc_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ cc_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"//third_party/eigen3",
|
"//third_party/eigen3",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -43,19 +43,21 @@ VerbsService::Stub::Stub(
|
|||||||
const std::shared_ptr< ::grpc::ChannelInterface>& channel)
|
const std::shared_ptr< ::grpc::ChannelInterface>& channel)
|
||||||
: channel_(channel),
|
: channel_(channel),
|
||||||
rpcmethod_GetRemoteAddress_(grpcVerbsService_method_names[0],
|
rpcmethod_GetRemoteAddress_(grpcVerbsService_method_names[0],
|
||||||
::grpc::RpcMethod::NORMAL_RPC, channel) {}
|
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||||
|
channel) {}
|
||||||
|
|
||||||
::grpc::Status VerbsService::Stub::GetRemoteAddress(
|
::grpc::Status VerbsService::Stub::GetRemoteAddress(
|
||||||
::grpc::ClientContext* context, const GetRemoteAddressRequest& request,
|
::grpc::ClientContext* context, const GetRemoteAddressRequest& request,
|
||||||
GetRemoteAddressResponse* response) {
|
GetRemoteAddressResponse* response) {
|
||||||
return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_GetRemoteAddress_,
|
return ::grpc::internal::BlockingUnaryCall(
|
||||||
context, request, response);
|
channel_.get(), rpcmethod_GetRemoteAddress_, context, request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
VerbsService::AsyncService::AsyncService() {
|
VerbsService::AsyncService::AsyncService() {
|
||||||
for (int i = 0; i < 1; ++i) {
|
for (int i = 0; i < 1; ++i) {
|
||||||
AddMethod(new ::grpc::RpcServiceMethod(grpcVerbsService_method_names[i],
|
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||||
::grpc::RpcMethod::NORMAL_RPC,
|
grpcVerbsService_method_names[i],
|
||||||
|
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||||
nullptr));
|
nullptr));
|
||||||
::grpc::Service::MarkMethodAsync(i);
|
::grpc::Service::MarkMethodAsync(i);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ class VerbsService GRPC_FINAL {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr< ::grpc::ChannelInterface> channel_;
|
std::shared_ptr< ::grpc::ChannelInterface> channel_;
|
||||||
const ::grpc::RpcMethod rpcmethod_GetRemoteAddress_;
|
const ::grpc::internal::RpcMethod rpcmethod_GetRemoteAddress_;
|
||||||
};
|
};
|
||||||
static std::unique_ptr<Stub> NewStub(
|
static std::unique_ptr<Stub> NewStub(
|
||||||
const std::shared_ptr< ::grpc::ChannelInterface>& channel,
|
const std::shared_ptr< ::grpc::ChannelInterface>& channel,
|
||||||
|
@ -49,73 +49,74 @@ MasterService::Stub::Stub(
|
|||||||
const std::shared_ptr< ::grpc::ChannelInterface>& channel)
|
const std::shared_ptr< ::grpc::ChannelInterface>& channel)
|
||||||
: channel_(channel),
|
: channel_(channel),
|
||||||
rpcmethod_CreateSession_(grpcMasterService_method_names[0],
|
rpcmethod_CreateSession_(grpcMasterService_method_names[0],
|
||||||
::grpc::RpcMethod::NORMAL_RPC, channel),
|
::grpc::internal::RpcMethod::NORMAL_RPC, channel),
|
||||||
rpcmethod_ExtendSession_(grpcMasterService_method_names[1],
|
rpcmethod_ExtendSession_(grpcMasterService_method_names[1],
|
||||||
::grpc::RpcMethod::NORMAL_RPC, channel),
|
::grpc::internal::RpcMethod::NORMAL_RPC, channel),
|
||||||
rpcmethod_PartialRunSetup_(grpcMasterService_method_names[2],
|
rpcmethod_PartialRunSetup_(grpcMasterService_method_names[2],
|
||||||
::grpc::RpcMethod::NORMAL_RPC, channel),
|
::grpc::internal::RpcMethod::NORMAL_RPC, channel),
|
||||||
rpcmethod_RunStep_(grpcMasterService_method_names[3],
|
rpcmethod_RunStep_(grpcMasterService_method_names[3],
|
||||||
::grpc::RpcMethod::NORMAL_RPC, channel),
|
::grpc::internal::RpcMethod::NORMAL_RPC, channel),
|
||||||
rpcmethod_CloseSession_(grpcMasterService_method_names[4],
|
rpcmethod_CloseSession_(grpcMasterService_method_names[4],
|
||||||
::grpc::RpcMethod::NORMAL_RPC, channel),
|
::grpc::internal::RpcMethod::NORMAL_RPC, channel),
|
||||||
rpcmethod_ListDevices_(grpcMasterService_method_names[5],
|
rpcmethod_ListDevices_(grpcMasterService_method_names[5],
|
||||||
::grpc::RpcMethod::NORMAL_RPC, channel),
|
::grpc::internal::RpcMethod::NORMAL_RPC, channel),
|
||||||
rpcmethod_Reset_(grpcMasterService_method_names[6],
|
rpcmethod_Reset_(grpcMasterService_method_names[6],
|
||||||
::grpc::RpcMethod::NORMAL_RPC, channel) {}
|
::grpc::internal::RpcMethod::NORMAL_RPC, channel) {}
|
||||||
|
|
||||||
::grpc::Status MasterService::Stub::CreateSession(
|
::grpc::Status MasterService::Stub::CreateSession(
|
||||||
::grpc::ClientContext* context, const CreateSessionRequest& request,
|
::grpc::ClientContext* context, const CreateSessionRequest& request,
|
||||||
CreateSessionResponse* response) {
|
CreateSessionResponse* response) {
|
||||||
return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_CreateSession_,
|
return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_CreateSession_,
|
||||||
context, request, response);
|
context, request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
::grpc::Status MasterService::Stub::ExtendSession(
|
::grpc::Status MasterService::Stub::ExtendSession(
|
||||||
::grpc::ClientContext* context, const ExtendSessionRequest& request,
|
::grpc::ClientContext* context, const ExtendSessionRequest& request,
|
||||||
ExtendSessionResponse* response) {
|
ExtendSessionResponse* response) {
|
||||||
return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_ExtendSession_,
|
return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_ExtendSession_,
|
||||||
context, request, response);
|
context, request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
::grpc::Status MasterService::Stub::PartialRunSetup(
|
::grpc::Status MasterService::Stub::PartialRunSetup(
|
||||||
::grpc::ClientContext* context, const PartialRunSetupRequest& request,
|
::grpc::ClientContext* context, const PartialRunSetupRequest& request,
|
||||||
PartialRunSetupResponse* response) {
|
PartialRunSetupResponse* response) {
|
||||||
return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_PartialRunSetup_,
|
return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_PartialRunSetup_,
|
||||||
context, request, response);
|
context, request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
::grpc::Status MasterService::Stub::RunStep(::grpc::ClientContext* context,
|
::grpc::Status MasterService::Stub::RunStep(::grpc::ClientContext* context,
|
||||||
const RunStepRequest& request,
|
const RunStepRequest& request,
|
||||||
RunStepResponse* response) {
|
RunStepResponse* response) {
|
||||||
return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_RunStep_, context,
|
return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_RunStep_, context,
|
||||||
request, response);
|
request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
::grpc::Status MasterService::Stub::CloseSession(
|
::grpc::Status MasterService::Stub::CloseSession(
|
||||||
::grpc::ClientContext* context, const CloseSessionRequest& request,
|
::grpc::ClientContext* context, const CloseSessionRequest& request,
|
||||||
CloseSessionResponse* response) {
|
CloseSessionResponse* response) {
|
||||||
return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_CloseSession_,
|
return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_CloseSession_,
|
||||||
context, request, response);
|
context, request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
::grpc::Status MasterService::Stub::ListDevices(
|
::grpc::Status MasterService::Stub::ListDevices(
|
||||||
::grpc::ClientContext* context, const ListDevicesRequest& request,
|
::grpc::ClientContext* context, const ListDevicesRequest& request,
|
||||||
ListDevicesResponse* response) {
|
ListDevicesResponse* response) {
|
||||||
return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_ListDevices_,
|
return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_ListDevices_,
|
||||||
context, request, response);
|
context, request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
::grpc::Status MasterService::Stub::Reset(::grpc::ClientContext* context,
|
::grpc::Status MasterService::Stub::Reset(::grpc::ClientContext* context,
|
||||||
const ResetRequest& request,
|
const ResetRequest& request,
|
||||||
ResetResponse* response) {
|
ResetResponse* response) {
|
||||||
return ::grpc::BlockingUnaryCall(channel_.get(), rpcmethod_Reset_, context,
|
return ::grpc::internal::BlockingUnaryCall(channel_.get(), rpcmethod_Reset_, context,
|
||||||
request, response);
|
request, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
MasterService::AsyncService::AsyncService() {
|
MasterService::AsyncService::AsyncService() {
|
||||||
for (int i = 0; i < 7; ++i) {
|
for (int i = 0; i < 7; ++i) {
|
||||||
AddMethod(new ::grpc::RpcServiceMethod(grpcMasterService_method_names[i],
|
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||||
::grpc::RpcMethod::NORMAL_RPC,
|
grpcMasterService_method_names[i],
|
||||||
|
::grpc::internal::RpcMethod::NORMAL_RPC,
|
||||||
nullptr));
|
nullptr));
|
||||||
::grpc::Service::MarkMethodAsync(i);
|
::grpc::Service::MarkMethodAsync(i);
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ namespace grpc {
|
|||||||
// definition in "//tensorflow/core/protobuf/master_service.proto",
|
// definition in "//tensorflow/core/protobuf/master_service.proto",
|
||||||
// and the gRPC generated stub and service classes.
|
// and the gRPC generated stub and service classes.
|
||||||
// See that file for the definition of methods and messages.
|
// See that file for the definition of methods and messages.
|
||||||
class MasterService GRPC_FINAL {
|
class MasterService final {
|
||||||
public:
|
public:
|
||||||
class StubInterface {
|
class StubInterface {
|
||||||
public:
|
public:
|
||||||
@ -80,40 +80,40 @@ class MasterService GRPC_FINAL {
|
|||||||
const ResetRequest& request,
|
const ResetRequest& request,
|
||||||
ResetResponse* response) = 0;
|
ResetResponse* response) = 0;
|
||||||
};
|
};
|
||||||
class Stub GRPC_FINAL : public StubInterface {
|
class Stub final : public StubInterface {
|
||||||
public:
|
public:
|
||||||
Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
|
Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
|
||||||
::grpc::Status CreateSession(::grpc::ClientContext* context,
|
::grpc::Status CreateSession(::grpc::ClientContext* context,
|
||||||
const CreateSessionRequest& request,
|
const CreateSessionRequest& request,
|
||||||
CreateSessionResponse* response) GRPC_OVERRIDE;
|
CreateSessionResponse* response) override;
|
||||||
::grpc::Status ExtendSession(::grpc::ClientContext* context,
|
::grpc::Status ExtendSession(::grpc::ClientContext* context,
|
||||||
const ExtendSessionRequest& request,
|
const ExtendSessionRequest& request,
|
||||||
ExtendSessionResponse* response) GRPC_OVERRIDE;
|
ExtendSessionResponse* response) override;
|
||||||
::grpc::Status PartialRunSetup(
|
::grpc::Status PartialRunSetup(
|
||||||
::grpc::ClientContext* context, const PartialRunSetupRequest& request,
|
::grpc::ClientContext* context, const PartialRunSetupRequest& request,
|
||||||
PartialRunSetupResponse* response) GRPC_OVERRIDE;
|
PartialRunSetupResponse* response) override;
|
||||||
::grpc::Status RunStep(::grpc::ClientContext* context,
|
::grpc::Status RunStep(::grpc::ClientContext* context,
|
||||||
const RunStepRequest& request,
|
const RunStepRequest& request,
|
||||||
RunStepResponse* response) GRPC_OVERRIDE;
|
RunStepResponse* response) override;
|
||||||
::grpc::Status CloseSession(::grpc::ClientContext* context,
|
::grpc::Status CloseSession(::grpc::ClientContext* context,
|
||||||
const CloseSessionRequest& request,
|
const CloseSessionRequest& request,
|
||||||
CloseSessionResponse* response) GRPC_OVERRIDE;
|
CloseSessionResponse* response) override;
|
||||||
::grpc::Status ListDevices(::grpc::ClientContext* context,
|
::grpc::Status ListDevices(::grpc::ClientContext* context,
|
||||||
const ListDevicesRequest& request,
|
const ListDevicesRequest& request,
|
||||||
ListDevicesResponse* response) GRPC_OVERRIDE;
|
ListDevicesResponse* response) override;
|
||||||
::grpc::Status Reset(::grpc::ClientContext* context,
|
::grpc::Status Reset(::grpc::ClientContext* context,
|
||||||
const ResetRequest& request,
|
const ResetRequest& request,
|
||||||
ResetResponse* response) GRPC_OVERRIDE;
|
ResetResponse* response) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr< ::grpc::ChannelInterface> channel_;
|
std::shared_ptr< ::grpc::ChannelInterface> channel_;
|
||||||
const ::grpc::RpcMethod rpcmethod_CreateSession_;
|
const ::grpc::internal::RpcMethod rpcmethod_CreateSession_;
|
||||||
const ::grpc::RpcMethod rpcmethod_ExtendSession_;
|
const ::grpc::internal::RpcMethod rpcmethod_ExtendSession_;
|
||||||
const ::grpc::RpcMethod rpcmethod_PartialRunSetup_;
|
const ::grpc::internal::RpcMethod rpcmethod_PartialRunSetup_;
|
||||||
const ::grpc::RpcMethod rpcmethod_RunStep_;
|
const ::grpc::internal::RpcMethod rpcmethod_RunStep_;
|
||||||
const ::grpc::RpcMethod rpcmethod_CloseSession_;
|
const ::grpc::internal::RpcMethod rpcmethod_CloseSession_;
|
||||||
const ::grpc::RpcMethod rpcmethod_ListDevices_;
|
const ::grpc::internal::RpcMethod rpcmethod_ListDevices_;
|
||||||
const ::grpc::RpcMethod rpcmethod_Reset_;
|
const ::grpc::internal::RpcMethod rpcmethod_Reset_;
|
||||||
};
|
};
|
||||||
static std::unique_ptr<Stub> NewStub(
|
static std::unique_ptr<Stub> NewStub(
|
||||||
const std::shared_ptr< ::grpc::ChannelInterface>& channel,
|
const std::shared_ptr< ::grpc::ChannelInterface>& channel,
|
||||||
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
#define THIRD_PARTY_TENSORFLOW_CORE_DISTRIBUTED_RUNTIME_RPC_GRPC_SERIALIZATION_TRAITS_H_
|
#define THIRD_PARTY_TENSORFLOW_CORE_DISTRIBUTED_RUNTIME_RPC_GRPC_SERIALIZATION_TRAITS_H_
|
||||||
|
|
||||||
#include "grpc++/impl/codegen/proto_utils.h"
|
#include "grpc++/impl/codegen/proto_utils.h"
|
||||||
|
#include "grpc++/support/slice.h"
|
||||||
|
|
||||||
namespace grpc {
|
namespace grpc {
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ namespace tensorflow_helper {
|
|||||||
|
|
||||||
const int kGrpcBufferWriterMaxBufferLength = 8192;
|
const int kGrpcBufferWriterMaxBufferLength = 8192;
|
||||||
|
|
||||||
class GrpcBufferWriter GRPC_FINAL
|
class GrpcBufferWriter final
|
||||||
: public ::grpc::protobuf::io::ZeroCopyOutputStream {
|
: public ::grpc::protobuf::io::ZeroCopyOutputStream {
|
||||||
public:
|
public:
|
||||||
explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size)
|
explicit GrpcBufferWriter(grpc_byte_buffer** bp, int block_size)
|
||||||
@ -33,35 +34,35 @@ class GrpcBufferWriter GRPC_FINAL
|
|||||||
slice_buffer_ = &(*bp)->data.raw.slice_buffer;
|
slice_buffer_ = &(*bp)->data.raw.slice_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
~GrpcBufferWriter() GRPC_OVERRIDE {
|
~GrpcBufferWriter() override {
|
||||||
if (have_backup_) {
|
if (have_backup_) {
|
||||||
g_core_codegen_interface->gpr_slice_unref(backup_slice_);
|
g_core_codegen_interface->grpc_slice_unref(backup_slice_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Next(void** data, int* size) GRPC_OVERRIDE {
|
bool Next(void** data, int* size) override {
|
||||||
if (have_backup_) {
|
if (have_backup_) {
|
||||||
slice_ = backup_slice_;
|
slice_ = backup_slice_;
|
||||||
have_backup_ = false;
|
have_backup_ = false;
|
||||||
} else {
|
} else {
|
||||||
slice_ = g_core_codegen_interface->gpr_slice_malloc(block_size_);
|
slice_ = g_core_codegen_interface->grpc_slice_malloc(block_size_);
|
||||||
}
|
}
|
||||||
*data = GPR_SLICE_START_PTR(slice_);
|
*data = GRPC_SLICE_START_PTR(slice_);
|
||||||
// On win x64, int is only 32bit
|
// On win x64, int is only 32bit
|
||||||
GPR_CODEGEN_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
|
GPR_CODEGEN_ASSERT(GRPC_SLICE_LENGTH(slice_) <= INT_MAX);
|
||||||
byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
|
byte_count_ += * size = (int)GRPC_SLICE_LENGTH(slice_);
|
||||||
g_core_codegen_interface->gpr_slice_buffer_add(slice_buffer_, slice_);
|
g_core_codegen_interface->grpc_slice_buffer_add(slice_buffer_, slice_);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BackUp(int count) GRPC_OVERRIDE {
|
void BackUp(int count) override {
|
||||||
g_core_codegen_interface->gpr_slice_buffer_pop(slice_buffer_);
|
g_core_codegen_interface->grpc_slice_buffer_pop(slice_buffer_);
|
||||||
if (count == block_size_) {
|
if (count == block_size_) {
|
||||||
backup_slice_ = slice_;
|
backup_slice_ = slice_;
|
||||||
} else {
|
} else {
|
||||||
backup_slice_ = g_core_codegen_interface->gpr_slice_split_tail(
|
backup_slice_ = g_core_codegen_interface->grpc_slice_split_tail(
|
||||||
&slice_, GPR_SLICE_LENGTH(slice_) - count);
|
&slice_, GRPC_SLICE_LENGTH(slice_) - count);
|
||||||
g_core_codegen_interface->gpr_slice_buffer_add(slice_buffer_, slice_);
|
g_core_codegen_interface->grpc_slice_buffer_add(slice_buffer_, slice_);
|
||||||
}
|
}
|
||||||
// It's dangerous to keep an inlined grpc_slice as the backup slice, since
|
// It's dangerous to keep an inlined grpc_slice as the backup slice, since
|
||||||
// on a following Next() call, a reference will be returned to this slice
|
// on a following Next() call, a reference will be returned to this slice
|
||||||
@ -71,18 +72,18 @@ class GrpcBufferWriter GRPC_FINAL
|
|||||||
byte_count_ -= count;
|
byte_count_ -= count;
|
||||||
}
|
}
|
||||||
|
|
||||||
grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE { return byte_count_; }
|
grpc::protobuf::int64 ByteCount() const override { return byte_count_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const int block_size_;
|
const int block_size_;
|
||||||
int64_t byte_count_;
|
int64_t byte_count_;
|
||||||
gpr_slice_buffer* slice_buffer_;
|
grpc_slice_buffer* slice_buffer_;
|
||||||
bool have_backup_;
|
bool have_backup_;
|
||||||
gpr_slice backup_slice_;
|
grpc_slice backup_slice_;
|
||||||
gpr_slice slice_;
|
grpc_slice slice_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class GrpcBufferReader GRPC_FINAL
|
class GrpcBufferReader final
|
||||||
: public ::grpc::protobuf::io::ZeroCopyInputStream {
|
: public ::grpc::protobuf::io::ZeroCopyInputStream {
|
||||||
typedef void (CoreCodegenInterface::*OldReaderInitAPI)(
|
typedef void (CoreCodegenInterface::*OldReaderInitAPI)(
|
||||||
grpc_byte_buffer_reader* reader, grpc_byte_buffer* buffer);
|
grpc_byte_buffer_reader* reader, grpc_byte_buffer* buffer);
|
||||||
@ -104,13 +105,13 @@ class GrpcBufferReader GRPC_FINAL
|
|||||||
ReaderInit(&CoreCodegenInterface::grpc_byte_buffer_reader_init, &reader_,
|
ReaderInit(&CoreCodegenInterface::grpc_byte_buffer_reader_init, &reader_,
|
||||||
buffer);
|
buffer);
|
||||||
}
|
}
|
||||||
~GrpcBufferReader() GRPC_OVERRIDE {
|
~GrpcBufferReader() override {
|
||||||
g_core_codegen_interface->grpc_byte_buffer_reader_destroy(&reader_);
|
g_core_codegen_interface->grpc_byte_buffer_reader_destroy(&reader_);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Next(const void** data, int* size) GRPC_OVERRIDE {
|
bool Next(const void** data, int* size) override {
|
||||||
if (backup_count_ > 0) {
|
if (backup_count_ > 0) {
|
||||||
*data = GPR_SLICE_START_PTR(slice_) + GPR_SLICE_LENGTH(slice_) -
|
*data = GRPC_SLICE_START_PTR(slice_) + GRPC_SLICE_LENGTH(slice_) -
|
||||||
backup_count_;
|
backup_count_;
|
||||||
GPR_CODEGEN_ASSERT(backup_count_ <= INT_MAX);
|
GPR_CODEGEN_ASSERT(backup_count_ <= INT_MAX);
|
||||||
*size = (int)backup_count_;
|
*size = (int)backup_count_;
|
||||||
@ -121,17 +122,17 @@ class GrpcBufferReader GRPC_FINAL
|
|||||||
&slice_)) {
|
&slice_)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
g_core_codegen_interface->gpr_slice_unref(slice_);
|
g_core_codegen_interface->grpc_slice_unref(slice_);
|
||||||
*data = GPR_SLICE_START_PTR(slice_);
|
*data = GRPC_SLICE_START_PTR(slice_);
|
||||||
// On win x64, int is only 32bit
|
// On win x64, int is only 32bit
|
||||||
GPR_CODEGEN_ASSERT(GPR_SLICE_LENGTH(slice_) <= INT_MAX);
|
GPR_CODEGEN_ASSERT(GRPC_SLICE_LENGTH(slice_) <= INT_MAX);
|
||||||
byte_count_ += * size = (int)GPR_SLICE_LENGTH(slice_);
|
byte_count_ += * size = (int)GRPC_SLICE_LENGTH(slice_);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BackUp(int count) GRPC_OVERRIDE { backup_count_ = count; }
|
void BackUp(int count) override { backup_count_ = count; }
|
||||||
|
|
||||||
bool Skip(int count) GRPC_OVERRIDE {
|
bool Skip(int count) override {
|
||||||
const void* data;
|
const void* data;
|
||||||
int size;
|
int size;
|
||||||
while (Next(&data, &size)) {
|
while (Next(&data, &size)) {
|
||||||
@ -146,7 +147,7 @@ class GrpcBufferReader GRPC_FINAL
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
grpc::protobuf::int64 ByteCount() const GRPC_OVERRIDE {
|
grpc::protobuf::int64 ByteCount() const override {
|
||||||
return byte_count_ - backup_count_;
|
return byte_count_ - backup_count_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,7 +155,7 @@ class GrpcBufferReader GRPC_FINAL
|
|||||||
int64_t byte_count_;
|
int64_t byte_count_;
|
||||||
int64_t backup_count_;
|
int64_t backup_count_;
|
||||||
grpc_byte_buffer_reader reader_;
|
grpc_byte_buffer_reader reader_;
|
||||||
gpr_slice slice_;
|
grpc_slice slice_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace tensorflow_helper
|
} // namespace tensorflow_helper
|
||||||
@ -175,12 +176,12 @@ class UnlimitedSizeProtoSerializationTraits {
|
|||||||
return Status(StatusCode::INTERNAL, "Message length was negative");
|
return Status(StatusCode::INTERNAL, "Message length was negative");
|
||||||
} else if (byte_size <=
|
} else if (byte_size <=
|
||||||
tensorflow_helper::kGrpcBufferWriterMaxBufferLength) {
|
tensorflow_helper::kGrpcBufferWriterMaxBufferLength) {
|
||||||
gpr_slice slice = g_core_codegen_interface->gpr_slice_malloc(byte_size);
|
grpc_slice slice = g_core_codegen_interface->grpc_slice_malloc(byte_size);
|
||||||
GPR_CODEGEN_ASSERT(
|
GPR_CODEGEN_ASSERT(
|
||||||
GPR_SLICE_END_PTR(slice) ==
|
GRPC_SLICE_END_PTR(slice) ==
|
||||||
msg.SerializeWithCachedSizesToArray(GPR_SLICE_START_PTR(slice)));
|
msg.SerializeWithCachedSizesToArray(GRPC_SLICE_START_PTR(slice)));
|
||||||
*bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(&slice, 1);
|
*bp = g_core_codegen_interface->grpc_raw_byte_buffer_create(&slice, 1);
|
||||||
g_core_codegen_interface->gpr_slice_unref(slice);
|
g_core_codegen_interface->grpc_slice_unref(slice);
|
||||||
return g_core_codegen_interface->ok();
|
return g_core_codegen_interface->ok();
|
||||||
} else {
|
} else {
|
||||||
tensorflow_helper::GrpcBufferWriter writer(
|
tensorflow_helper::GrpcBufferWriter writer(
|
||||||
|
@ -38,9 +38,9 @@ static void unref_tensorbuffer(void* raw) {
|
|||||||
void EncodeRecvTensorResponseToByteBuffer(const RecvTensorResponse& proto,
|
void EncodeRecvTensorResponseToByteBuffer(const RecvTensorResponse& proto,
|
||||||
::grpc::ByteBuffer* result) {
|
::grpc::ByteBuffer* result) {
|
||||||
size_t len = proto.ByteSizeLong();
|
size_t len = proto.ByteSizeLong();
|
||||||
gpr_slice s = gpr_slice_malloc(len);
|
grpc_slice s = grpc_slice_malloc(len);
|
||||||
proto.SerializeWithCachedSizesToArray(
|
proto.SerializeWithCachedSizesToArray(
|
||||||
reinterpret_cast<uint8*>(GPR_SLICE_START_PTR(s)));
|
reinterpret_cast<uint8*>(GRPC_SLICE_START_PTR(s)));
|
||||||
::grpc::Slice slice(s, ::grpc::Slice::STEAL_REF);
|
::grpc::Slice slice(s, ::grpc::Slice::STEAL_REF);
|
||||||
*result = ::grpc::ByteBuffer(&slice, 1);
|
*result = ::grpc::ByteBuffer(&slice, 1);
|
||||||
}
|
}
|
||||||
@ -68,12 +68,12 @@ void EncodeRecvTensorResponseToByteBuffer(const RecvTensorResponse& proto,
|
|||||||
// E: <actual data for val's representation>
|
// E: <actual data for val's representation>
|
||||||
//
|
//
|
||||||
// If the tensor data is up to "kLargeTensorBytes", then A
|
// If the tensor data is up to "kLargeTensorBytes", then A
|
||||||
// through E will all be encoded into "*result" in a single gpr_slice.
|
// through E will all be encoded into "*result" in a single grpc_slice.
|
||||||
//
|
//
|
||||||
// If the tensor data is larger than "kLargeTensorBytes", then A through
|
// If the tensor data is larger than "kLargeTensorBytes", then A through
|
||||||
// D2 will be encoded in one gpr_slice, and E will be encoded in a second
|
// D2 will be encoded in one grpc_slice, and E will be encoded in a second
|
||||||
// gpr_slice that points to the backing store for the tensor data, to avoid
|
// grpc_slice that points to the backing store for the tensor data, to avoid
|
||||||
// copying the tensor data (and the gpr_slice setup will be arrange so as
|
// copying the tensor data (and the grpc_slice setup will be arrange so as
|
||||||
// to dereference the underlying tensor data buffer when it is no longer
|
// to dereference the underlying tensor data buffer when it is no longer
|
||||||
// needed in the "*result" ByteBuffer).
|
// needed in the "*result" ByteBuffer).
|
||||||
static int VarLengthEncodingSize(uint32 tag, size_t bytes) {
|
static int VarLengthEncodingSize(uint32 tag, size_t bytes) {
|
||||||
@ -209,11 +209,11 @@ void EncodeTensorToByteBuffer(bool is_dead, const Tensor& val,
|
|||||||
int num_slices = 0;
|
int num_slices = 0;
|
||||||
{
|
{
|
||||||
size_t slice_len = e.size() + (tensor_data_is_large ? 0 : tdata.size());
|
size_t slice_len = e.size() + (tensor_data_is_large ? 0 : tdata.size());
|
||||||
gpr_slice s0 = gpr_slice_malloc(slice_len);
|
grpc_slice s0 = grpc_slice_malloc(slice_len);
|
||||||
memcpy(GPR_SLICE_START_PTR(s0), e.data(), e.size());
|
memcpy(GRPC_SLICE_START_PTR(s0), e.data(), e.size());
|
||||||
if (!tensor_data_is_large) {
|
if (!tensor_data_is_large) {
|
||||||
// (E)
|
// (E)
|
||||||
memcpy(GPR_SLICE_START_PTR(s0) + e.size(), tdata.data(), tdata.size());
|
memcpy(GRPC_SLICE_START_PTR(s0) + e.size(), tdata.data(), tdata.size());
|
||||||
}
|
}
|
||||||
slices[0] = ::grpc::Slice(s0, ::grpc::Slice::STEAL_REF);
|
slices[0] = ::grpc::Slice(s0, ::grpc::Slice::STEAL_REF);
|
||||||
num_slices += 1;
|
num_slices += 1;
|
||||||
@ -230,7 +230,7 @@ void EncodeTensorToByteBuffer(bool is_dead, const Tensor& val,
|
|||||||
// hypothetical grpc_slice-related changes (e.g. the
|
// hypothetical grpc_slice-related changes (e.g. the
|
||||||
// implementation could decide to destroy 0-length slices
|
// implementation could decide to destroy 0-length slices
|
||||||
// eagerly). In practice, this does not happen with the current
|
// eagerly). In practice, this does not happen with the current
|
||||||
// implementation, and the gpr_slice interface at the moment does
|
// implementation, and the grpc_slice interface at the moment does
|
||||||
// not allow us to do the Tensor-unreferencing in the right way
|
// not allow us to do the Tensor-unreferencing in the right way
|
||||||
// (since the Tensor pointer is different than the backing store
|
// (since the Tensor pointer is different than the backing store
|
||||||
// array pointer).
|
// array pointer).
|
||||||
@ -245,13 +245,13 @@ void EncodeTensorToByteBuffer(bool is_dead, const Tensor& val,
|
|||||||
|
|
||||||
const TensorBuffer* buf = DMAHelper::buffer(&val);
|
const TensorBuffer* buf = DMAHelper::buffer(&val);
|
||||||
buf->Ref();
|
buf->Ref();
|
||||||
gpr_slice s1 = gpr_slice_new(
|
grpc_slice s1 = grpc_slice_new(
|
||||||
const_cast<void*>(static_cast<const void*>(tdata.data())),
|
const_cast<void*>(static_cast<const void*>(tdata.data())),
|
||||||
tdata.size(), do_nothing);
|
tdata.size(), do_nothing);
|
||||||
slices[1] = ::grpc::Slice(s1, ::grpc::Slice::STEAL_REF);
|
slices[1] = ::grpc::Slice(s1, ::grpc::Slice::STEAL_REF);
|
||||||
|
|
||||||
gpr_slice s2 =
|
grpc_slice s2 =
|
||||||
gpr_slice_new(const_cast<TensorBuffer*>(buf), 0, unref_tensorbuffer);
|
grpc_slice_new(const_cast<TensorBuffer*>(buf), 0, unref_tensorbuffer);
|
||||||
slices[2] = ::grpc::Slice(s2, ::grpc::Slice::STEAL_REF);
|
slices[2] = ::grpc::Slice(s2, ::grpc::Slice::STEAL_REF);
|
||||||
num_slices += 2;
|
num_slices += 2;
|
||||||
}
|
}
|
||||||
|
@ -80,9 +80,9 @@ grpc::protobuf::int64 GrpcByteBufferSource::ByteCount() const {
|
|||||||
void GrpcUnparseProto(const protobuf::Message& src, grpc::ByteBuffer* dst) {
|
void GrpcUnparseProto(const protobuf::Message& src, grpc::ByteBuffer* dst) {
|
||||||
// TODO(sanjay): For bigger protos, serialize into a ZeroCopyOutputStream.
|
// TODO(sanjay): For bigger protos, serialize into a ZeroCopyOutputStream.
|
||||||
size_t len = src.ByteSizeLong();
|
size_t len = src.ByteSizeLong();
|
||||||
gpr_slice s = gpr_slice_malloc(len);
|
grpc_slice s = grpc_slice_malloc(len);
|
||||||
src.SerializeWithCachedSizesToArray(
|
src.SerializeWithCachedSizesToArray(
|
||||||
reinterpret_cast<uint8*>(GPR_SLICE_START_PTR(s)));
|
reinterpret_cast<uint8*>(GRPC_SLICE_START_PTR(s)));
|
||||||
::grpc::Slice slice(s, ::grpc::Slice::STEAL_REF);
|
::grpc::Slice slice(s, ::grpc::Slice::STEAL_REF);
|
||||||
::grpc::ByteBuffer buffer(&slice, 1);
|
::grpc::ByteBuffer buffer(&slice, 1);
|
||||||
// TODO(sanjay): Use Swap() when grpc version we are using is new enough.
|
// TODO(sanjay): Use Swap() when grpc version we are using is new enough.
|
||||||
|
@ -38,7 +38,7 @@ grpc::ByteBuffer MakeBuffer(const string& str, int num_slices) {
|
|||||||
const size_t per_slice = (str.size() + num_slices - 1) / num_slices;
|
const size_t per_slice = (str.size() + num_slices - 1) / num_slices;
|
||||||
for (size_t pos = 0; pos < str.size();) {
|
for (size_t pos = 0; pos < str.size();) {
|
||||||
const size_t n = std::min(str.size() - pos, per_slice);
|
const size_t n = std::min(str.size() - pos, per_slice);
|
||||||
auto slice = gpr_slice_from_copied_buffer(&str[pos], n);
|
auto slice = grpc_slice_from_copied_buffer(&str[pos], n);
|
||||||
slices.push_back(::grpc::Slice(slice, ::grpc::Slice::STEAL_REF));
|
slices.push_back(::grpc::Slice(slice, ::grpc::Slice::STEAL_REF));
|
||||||
pos += n;
|
pos += n;
|
||||||
}
|
}
|
||||||
|
@ -58,9 +58,9 @@ namespace grpc {
|
|||||||
|
|
||||||
WorkerService::AsyncService::AsyncService() {
|
WorkerService::AsyncService::AsyncService() {
|
||||||
for (int i = 0; i < kGrpcNumWorkerMethods; ++i) {
|
for (int i = 0; i < kGrpcNumWorkerMethods; ++i) {
|
||||||
AddMethod(new ::grpc::RpcServiceMethod(
|
AddMethod(new ::grpc::internal::RpcServiceMethod(
|
||||||
GrpcWorkerMethodName(static_cast<GrpcWorkerMethod>(i)),
|
GrpcWorkerMethodName(static_cast<GrpcWorkerMethod>(i)),
|
||||||
::grpc::RpcMethod::NORMAL_RPC, nullptr));
|
::grpc::internal::RpcMethod::NORMAL_RPC, nullptr));
|
||||||
::grpc::Service::MarkMethodAsync(i);
|
::grpc::Service::MarkMethodAsync(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ namespace grpc {
|
|||||||
// definition in "//tensorflow/core/protobuf/worker_service.proto",
|
// definition in "//tensorflow/core/protobuf/worker_service.proto",
|
||||||
// and the gRPC generated stub and service classes.
|
// and the gRPC generated stub and service classes.
|
||||||
// See the proto file for the definition of methods and messages.
|
// See the proto file for the definition of methods and messages.
|
||||||
class WorkerService GRPC_FINAL {
|
class WorkerService final {
|
||||||
public:
|
public:
|
||||||
class AsyncService : public ::grpc::Service {
|
class AsyncService : public ::grpc::Service {
|
||||||
public:
|
public:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Platform-specific build configurations.
|
# Platform-specific build configurations.
|
||||||
|
|
||||||
load("@protobuf//:protobuf.bzl", "cc_proto_library")
|
load("@protobuf_archive//:protobuf.bzl", "cc_proto_library")
|
||||||
load("@protobuf//:protobuf.bzl", "py_proto_library")
|
load("@protobuf_archive//:protobuf.bzl", "py_proto_library")
|
||||||
load("//tensorflow:tensorflow.bzl", "if_not_mobile")
|
load("//tensorflow:tensorflow.bzl", "if_not_mobile")
|
||||||
load("//tensorflow:tensorflow.bzl", "if_not_windows")
|
load("//tensorflow:tensorflow.bzl", "if_not_windows")
|
||||||
|
|
||||||
@ -44,15 +44,15 @@ def tf_proto_library_cc(name, srcs = [], has_services = None,
|
|||||||
cc_proto_library(
|
cc_proto_library(
|
||||||
name = name + "_cc",
|
name = name + "_cc",
|
||||||
srcs = srcs,
|
srcs = srcs,
|
||||||
deps = tf_deps(protodeps, "_cc") + ["@protobuf//:cc_wkt_protos"],
|
deps = tf_deps(protodeps, "_cc") + ["@protobuf_archive//:cc_wkt_protos"],
|
||||||
cc_libs = cc_libs + ["@protobuf//:protobuf"],
|
cc_libs = cc_libs + ["@protobuf_archive//:protobuf"],
|
||||||
copts = if_not_windows([
|
copts = if_not_windows([
|
||||||
"-Wno-unknown-warning-option",
|
"-Wno-unknown-warning-option",
|
||||||
"-Wno-unused-but-set-variable",
|
"-Wno-unused-but-set-variable",
|
||||||
"-Wno-sign-compare",
|
"-Wno-sign-compare",
|
||||||
]),
|
]),
|
||||||
protoc = "@protobuf//:protoc",
|
protoc = "@protobuf_archive//:protoc",
|
||||||
default_runtime = "@protobuf//:protobuf",
|
default_runtime = "@protobuf_archive//:protobuf",
|
||||||
use_grpc_plugin = use_grpc_plugin,
|
use_grpc_plugin = use_grpc_plugin,
|
||||||
testonly = testonly,
|
testonly = testonly,
|
||||||
visibility = visibility,
|
visibility = visibility,
|
||||||
@ -65,9 +65,9 @@ def tf_proto_library_py(name, srcs=[], protodeps=[], deps=[], visibility=[],
|
|||||||
name = name + "_py",
|
name = name + "_py",
|
||||||
srcs = srcs,
|
srcs = srcs,
|
||||||
srcs_version = srcs_version,
|
srcs_version = srcs_version,
|
||||||
deps = deps + tf_deps(protodeps, "_py") + ["@protobuf//:protobuf_python"],
|
deps = deps + tf_deps(protodeps, "_py") + ["@protobuf_archive//:protobuf_python"],
|
||||||
protoc = "@protobuf//:protoc",
|
protoc = "@protobuf_archive//:protoc",
|
||||||
default_runtime = "@protobuf//:protobuf_python",
|
default_runtime = "@protobuf_archive//:protobuf_python",
|
||||||
visibility = visibility,
|
visibility = visibility,
|
||||||
testonly = testonly,
|
testonly = testonly,
|
||||||
)
|
)
|
||||||
|
@ -24,7 +24,7 @@ template <class ResponseMessage, class RequestMessage>
|
|||||||
::grpc::ClientAsyncResponseReader<ResponseMessage>*
|
::grpc::ClientAsyncResponseReader<ResponseMessage>*
|
||||||
CreateClientAsyncResponseReader(::grpc::ChannelInterface* channel,
|
CreateClientAsyncResponseReader(::grpc::ChannelInterface* channel,
|
||||||
::grpc::CompletionQueue* cq,
|
::grpc::CompletionQueue* cq,
|
||||||
const ::grpc::RpcMethod& method,
|
const ::grpc::internal::RpcMethod& method,
|
||||||
::grpc::ClientContext* context,
|
::grpc::ClientContext* context,
|
||||||
const RequestMessage& request) {
|
const RequestMessage& request) {
|
||||||
return new ::grpc::ClientAsyncResponseReader<ResponseMessage>(
|
return new ::grpc::ClientAsyncResponseReader<ResponseMessage>(
|
||||||
|
@ -38,7 +38,7 @@ template <class ResponseMessage, class RequestMessage>
|
|||||||
::grpc::ClientAsyncResponseReader<ResponseMessage>*
|
::grpc::ClientAsyncResponseReader<ResponseMessage>*
|
||||||
CreateClientAsyncResponseReader(::grpc::ChannelInterface* channel,
|
CreateClientAsyncResponseReader(::grpc::ChannelInterface* channel,
|
||||||
::grpc::CompletionQueue* cq,
|
::grpc::CompletionQueue* cq,
|
||||||
const ::grpc::RpcMethod& method,
|
const ::grpc::internal::RpcMethod& method,
|
||||||
::grpc::ClientContext* context,
|
::grpc::ClientContext* context,
|
||||||
const RequestMessage& request);
|
const RequestMessage& request);
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ then
|
|||||||
then
|
then
|
||||||
echo "Protocol buffer compiler protoc not found in PATH or in ${PROTOC}"
|
echo "Protocol buffer compiler protoc not found in PATH or in ${PROTOC}"
|
||||||
echo "Perhaps build it using:"
|
echo "Perhaps build it using:"
|
||||||
echo "bazel build --config opt @protobuf//:protoc"
|
echo "bazel build --config opt @protobuf_archive//:protoc"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
PROTOC=$PATH_PROTOC
|
PROTOC=$PATH_PROTOC
|
||||||
|
@ -277,7 +277,7 @@ cc_binary(
|
|||||||
linkshared = 1,
|
linkshared = 1,
|
||||||
deps = [
|
deps = [
|
||||||
"//tensorflow/core:framework_headers_lib",
|
"//tensorflow/core:framework_headers_lib",
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -2518,7 +2518,7 @@ py_library(
|
|||||||
deps = [
|
deps = [
|
||||||
"//third_party/py/numpy",
|
"//third_party/py/numpy",
|
||||||
"@org_python_pypi_backports_weakref",
|
"@org_python_pypi_backports_weakref",
|
||||||
"@protobuf//:protobuf_python",
|
"@protobuf_archive//:protobuf_python",
|
||||||
"@six_archive//:six",
|
"@six_archive//:six",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -868,7 +868,7 @@ def cc_header_only_library(name, deps=[], **kwargs):
|
|||||||
|
|
||||||
def tf_custom_op_library_additional_deps():
|
def tf_custom_op_library_additional_deps():
|
||||||
return [
|
return [
|
||||||
"@protobuf//:protobuf_headers",
|
"@protobuf_archive//:protobuf_headers",
|
||||||
clean_dep("//third_party/eigen3"),
|
clean_dep("//third_party/eigen3"),
|
||||||
clean_dep("//tensorflow/core:framework_headers_lib"),
|
clean_dep("//tensorflow/core:framework_headers_lib"),
|
||||||
]
|
]
|
||||||
|
@ -95,6 +95,10 @@
|
|||||||
#
|
#
|
||||||
# This script can be used by Jenkins parameterized / matrix builds.
|
# This script can be used by Jenkins parameterized / matrix builds.
|
||||||
|
|
||||||
|
# TODO(jhseu): Temporary for the gRPC pull request due to the
|
||||||
|
# protobuf -> protobuf_archive rename. Remove later.
|
||||||
|
TF_BUILD_BAZEL_CLEAN=1
|
||||||
|
|
||||||
# Helper function: Convert to lower case
|
# Helper function: Convert to lower case
|
||||||
to_lower () {
|
to_lower () {
|
||||||
echo "$1" | tr '[:upper:]' '[:lower:]'
|
echo "$1" | tr '[:upper:]' '[:lower:]'
|
||||||
|
@ -35,6 +35,7 @@ export TF_CUDA_COMPUTE_CAPABILITIES=3.7
|
|||||||
|
|
||||||
$PYTHON_BIN_PATH configure.py
|
$PYTHON_BIN_PATH configure.py
|
||||||
|
|
||||||
|
bazel clean
|
||||||
# Run bazel test command. Double test timeouts to avoid flakes.
|
# Run bazel test command. Double test timeouts to avoid flakes.
|
||||||
bazel test --config=cuda --test_tag_filters=-no_gpu,-benchmark-test -k \
|
bazel test --config=cuda --test_tag_filters=-no_gpu,-benchmark-test -k \
|
||||||
--jobs=${N_JOBS} --test_timeout 300,450,1200,3600 \
|
--jobs=${N_JOBS} --test_timeout 300,450,1200,3600 \
|
||||||
|
@ -102,7 +102,7 @@ genrule(
|
|||||||
"@lmdb//:LICENSE",
|
"@lmdb//:LICENSE",
|
||||||
"@local_config_sycl//sycl:LICENSE.text",
|
"@local_config_sycl//sycl:LICENSE.text",
|
||||||
"@png_archive//:LICENSE",
|
"@png_archive//:LICENSE",
|
||||||
"@protobuf//:LICENSE",
|
"@protobuf_archive//:LICENSE",
|
||||||
"@snappy//:COPYING",
|
"@snappy//:COPYING",
|
||||||
"@zlib_archive//:zlib.h",
|
"@zlib_archive//:zlib.h",
|
||||||
] + if_mkl([
|
] + if_mkl([
|
||||||
@ -136,7 +136,7 @@ genrule(
|
|||||||
"@lmdb//:LICENSE",
|
"@lmdb//:LICENSE",
|
||||||
"@local_config_sycl//sycl:LICENSE.text",
|
"@local_config_sycl//sycl:LICENSE.text",
|
||||||
"@png_archive//:LICENSE",
|
"@png_archive//:LICENSE",
|
||||||
"@protobuf//:LICENSE",
|
"@protobuf_archive//:LICENSE",
|
||||||
"@snappy//:COPYING",
|
"@snappy//:COPYING",
|
||||||
"@zlib_archive//:zlib.h",
|
"@zlib_archive//:zlib.h",
|
||||||
] + if_mkl([
|
] + if_mkl([
|
||||||
|
@ -119,9 +119,9 @@ filegroup(
|
|||||||
"@libxsmm_archive//:LICENSE",
|
"@libxsmm_archive//:LICENSE",
|
||||||
"@lmdb//:LICENSE",
|
"@lmdb//:LICENSE",
|
||||||
"@local_config_sycl//sycl:LICENSE.text",
|
"@local_config_sycl//sycl:LICENSE.text",
|
||||||
"@nanopb_git//:LICENSE.txt",
|
"@grpc//third_party/nanopb:LICENSE.txt",
|
||||||
"@png_archive//:LICENSE",
|
"@png_archive//:LICENSE",
|
||||||
"@protobuf//:LICENSE",
|
"@protobuf_archive//:LICENSE",
|
||||||
"@six_archive//:LICENSE",
|
"@six_archive//:LICENSE",
|
||||||
"@snappy//:COPYING",
|
"@snappy//:COPYING",
|
||||||
"@zlib_archive//:zlib.h",
|
"@zlib_archive//:zlib.h",
|
||||||
|
@ -130,7 +130,7 @@ function main() {
|
|||||||
mkdir -p ${TMPDIR}/google
|
mkdir -p ${TMPDIR}/google
|
||||||
mkdir -p ${TMPDIR}/third_party
|
mkdir -p ${TMPDIR}/third_party
|
||||||
pushd ${RUNFILES%org_tensorflow}
|
pushd ${RUNFILES%org_tensorflow}
|
||||||
for header in $(find protobuf -name \*.h); do
|
for header in $(find protobuf_archive -name \*.h); do
|
||||||
mkdir -p "${TMPDIR}/google/$(dirname ${header})"
|
mkdir -p "${TMPDIR}/google/$(dirname ${header})"
|
||||||
cp "$header" "${TMPDIR}/google/$(dirname ${header})/"
|
cp "$header" "${TMPDIR}/google/$(dirname ${header})/"
|
||||||
done
|
done
|
||||||
|
@ -113,7 +113,7 @@ class InstallHeaders(Command):
|
|||||||
install_dir = os.path.join(self.install_dir, os.path.dirname(header))
|
install_dir = os.path.join(self.install_dir, os.path.dirname(header))
|
||||||
# Get rid of some extra intervening directories so we can have fewer
|
# Get rid of some extra intervening directories so we can have fewer
|
||||||
# directories for -I
|
# directories for -I
|
||||||
install_dir = re.sub('/google/protobuf/src', '', install_dir)
|
install_dir = re.sub('/google/protobuf_archive/src', '', install_dir)
|
||||||
|
|
||||||
# Copy eigen code into tensorflow/include.
|
# Copy eigen code into tensorflow/include.
|
||||||
# A symlink would do, but the wheel file that gets created ignores
|
# A symlink would do, but the wheel file that gets created ignores
|
||||||
@ -164,7 +164,7 @@ else:
|
|||||||
|
|
||||||
headers = (list(find_files('*.h', 'tensorflow/core')) +
|
headers = (list(find_files('*.h', 'tensorflow/core')) +
|
||||||
list(find_files('*.h', 'tensorflow/stream_executor')) +
|
list(find_files('*.h', 'tensorflow/stream_executor')) +
|
||||||
list(find_files('*.h', 'google/protobuf/src')) +
|
list(find_files('*.h', 'google/protobuf_archive/src')) +
|
||||||
list(find_files('*', 'third_party/eigen3')) +
|
list(find_files('*', 'third_party/eigen3')) +
|
||||||
list(find_files('*', 'external/eigen_archive')))
|
list(find_files('*', 'external/eigen_archive')))
|
||||||
|
|
||||||
|
@ -358,7 +358,7 @@ def tf_workspace(path_prefix="", tf_repo_name=""):
|
|||||||
)
|
)
|
||||||
|
|
||||||
patched_http_archive(
|
patched_http_archive(
|
||||||
name = "protobuf",
|
name = "protobuf_archive",
|
||||||
urls = [
|
urls = [
|
||||||
"https://github.com/google/protobuf/archive/0b059a3d8a8f8aa40dde7bea55edca4ec5dfea66.tar.gz",
|
"https://github.com/google/protobuf/archive/0b059a3d8a8f8aa40dde7bea55edca4ec5dfea66.tar.gz",
|
||||||
"http://mirror.bazel.build/github.com/google/protobuf/archive/0b059a3d8a8f8aa40dde7bea55edca4ec5dfea66.tar.gz",
|
"http://mirror.bazel.build/github.com/google/protobuf/archive/0b059a3d8a8f8aa40dde7bea55edca4ec5dfea66.tar.gz",
|
||||||
@ -372,6 +372,11 @@ def tf_workspace(path_prefix="", tf_repo_name=""):
|
|||||||
patch_file = str(Label("//third_party/protobuf:add_noinlines.patch")),
|
patch_file = str(Label("//third_party/protobuf:add_noinlines.patch")),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
native.bind(
|
||||||
|
name = "protobuf",
|
||||||
|
actual = "@protobuf_archive//:protobuf",
|
||||||
|
)
|
||||||
|
|
||||||
# We need to import the protobuf library under the names com_google_protobuf
|
# We need to import the protobuf library under the names com_google_protobuf
|
||||||
# and com_google_protobuf_cc to enable proto_library support in bazel.
|
# and com_google_protobuf_cc to enable proto_library support in bazel.
|
||||||
# Unfortunately there is no way to alias http_archives at the moment.
|
# Unfortunately there is no way to alias http_archives at the moment.
|
||||||
@ -470,23 +475,30 @@ def tf_workspace(path_prefix="", tf_repo_name=""):
|
|||||||
# to point to the protobuf's compiler library.
|
# to point to the protobuf's compiler library.
|
||||||
native.bind(
|
native.bind(
|
||||||
name = "protobuf_clib",
|
name = "protobuf_clib",
|
||||||
actual = "@protobuf//:protoc_lib",
|
actual = "@protobuf_archive//:protoc_lib",
|
||||||
)
|
)
|
||||||
|
|
||||||
native.bind(
|
native.bind(
|
||||||
name = "protobuf_compiler",
|
name = "libssl",
|
||||||
actual = "@protobuf//:protoc_lib",
|
actual = "@boringssl//:ssl",
|
||||||
)
|
)
|
||||||
|
|
||||||
native.new_http_archive(
|
# gRPC has includes directly from their third_party path for nanopb, so we
|
||||||
|
# must depend on their version of it.
|
||||||
|
native.bind(
|
||||||
|
name = "nanopb",
|
||||||
|
actual = "@grpc//third_party/nanopb:nanopb",
|
||||||
|
)
|
||||||
|
|
||||||
|
patched_http_archive(
|
||||||
name = "grpc",
|
name = "grpc",
|
||||||
urls = [
|
urls = [
|
||||||
"http://mirror.bazel.build/github.com/grpc/grpc/archive/d7ff4ff40071d2b486a052183e3e9f9382afb745.tar.gz",
|
"http://mirror.bazel.build/github.com/grpc/grpc/archive/781fd6f6ea03645a520cd5c675da67ab61f87e4b.tar.gz",
|
||||||
"https://github.com/grpc/grpc/archive/d7ff4ff40071d2b486a052183e3e9f9382afb745.tar.gz",
|
"https://github.com/grpc/grpc/archive/781fd6f6ea03645a520cd5c675da67ab61f87e4b.tar.gz",
|
||||||
],
|
],
|
||||||
sha256 = "a15f352436ab92c521b1ac11e729e155ace38d0856380cf25048c5d1d9ba8e31",
|
sha256 = "2004635e6a078acfac8ffa71738397796be4f8fb72f572cc44ecee5d99511d9f",
|
||||||
strip_prefix = "grpc-d7ff4ff40071d2b486a052183e3e9f9382afb745",
|
strip_prefix = "grpc-781fd6f6ea03645a520cd5c675da67ab61f87e4b",
|
||||||
build_file = str(Label("//third_party:grpc.BUILD")),
|
patch_file = str(Label("//third_party/grpc:grpc.patch")),
|
||||||
)
|
)
|
||||||
|
|
||||||
# protobuf expects //external:grpc_cpp_plugin to point to grpc's
|
# protobuf expects //external:grpc_cpp_plugin to point to grpc's
|
||||||
@ -566,22 +578,6 @@ def tf_workspace(path_prefix="", tf_repo_name=""):
|
|||||||
patch_file = str(Label("//third_party/boringssl:add_boringssl_s390x.patch")),
|
patch_file = str(Label("//third_party/boringssl:add_boringssl_s390x.patch")),
|
||||||
)
|
)
|
||||||
|
|
||||||
native.new_http_archive(
|
|
||||||
name = "nanopb_git",
|
|
||||||
urls = [
|
|
||||||
"http://mirror.bazel.build/github.com/nanopb/nanopb/archive/1251fa1065afc0d62f635e0f63fec8276e14e13c.tar.gz",
|
|
||||||
"https://github.com/nanopb/nanopb/archive/1251fa1065afc0d62f635e0f63fec8276e14e13c.tar.gz",
|
|
||||||
],
|
|
||||||
sha256 = "ab1455c8edff855f4f55b68480991559e51c11e7dab060bbab7cffb12dd3af33",
|
|
||||||
strip_prefix = "nanopb-1251fa1065afc0d62f635e0f63fec8276e14e13c",
|
|
||||||
build_file = str(Label("//third_party:nanopb.BUILD")),
|
|
||||||
)
|
|
||||||
|
|
||||||
native.bind(
|
|
||||||
name = "nanopb",
|
|
||||||
actual = "@nanopb_git//:nanopb",
|
|
||||||
)
|
|
||||||
|
|
||||||
native.new_http_archive(
|
native.new_http_archive(
|
||||||
name = "zlib_archive",
|
name = "zlib_archive",
|
||||||
urls = [
|
urls = [
|
||||||
|
2478
third_party/grpc.BUILD
vendored
2478
third_party/grpc.BUILD
vendored
File diff suppressed because it is too large
Load Diff
0
third_party/grpc/BUILD
vendored
Normal file
0
third_party/grpc/BUILD
vendored
Normal file
76
third_party/grpc/grpc.patch
vendored
Normal file
76
third_party/grpc/grpc.patch
vendored
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
diff --git a/bazel/grpc_build_system.bzl b/bazel/grpc_build_system.bzl
|
||||||
|
index f793cae56d..0295adb8ab 100644
|
||||||
|
--- a/bazel/grpc_build_system.bzl
|
||||||
|
+++ b/bazel/grpc_build_system.bzl
|
||||||
|
@@ -80,7 +80,7 @@ def grpc_cc_test(name, srcs = [], deps = [], external_deps = [], args = [], data
|
||||||
|
linkopts = ["-pthread"],
|
||||||
|
)
|
||||||
|
|
||||||
|
-def grpc_cc_binary(name, srcs = [], deps = [], external_deps = [], args = [], data = [], language = "C++", testonly = False, linkshared = False):
|
||||||
|
+def grpc_cc_binary(name, srcs = [], deps = [], external_deps = [], args = [], data = [], language = "C++", testonly = False, linkshared = False, linkopts = []):
|
||||||
|
copts = []
|
||||||
|
if language.upper() == "C":
|
||||||
|
copts = ["-std=c99"]
|
||||||
|
@@ -93,7 +93,7 @@ def grpc_cc_binary(name, srcs = [], deps = [], external_deps = [], args = [], da
|
||||||
|
linkshared = linkshared,
|
||||||
|
deps = deps + ["//external:" + dep for dep in external_deps],
|
||||||
|
copts = copts,
|
||||||
|
- linkopts = ["-pthread"],
|
||||||
|
+ linkopts = ["-pthread"] + linkopts,
|
||||||
|
)
|
||||||
|
|
||||||
|
def grpc_generate_one_off_targets():
|
||||||
|
diff --git a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
|
||||||
|
index 7eb599d81a..4cc2e30af4 100644
|
||||||
|
--- a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
|
||||||
|
+++ b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
|
||||||
|
@@ -28,18 +28,12 @@ extern void grpc_client_channel_init(void);
|
||||||
|
extern void grpc_client_channel_shutdown(void);
|
||||||
|
extern void grpc_inproc_plugin_init(void);
|
||||||
|
extern void grpc_inproc_plugin_shutdown(void);
|
||||||
|
-extern void grpc_resolver_dns_ares_init(void);
|
||||||
|
-extern void grpc_resolver_dns_ares_shutdown(void);
|
||||||
|
extern void grpc_resolver_dns_native_init(void);
|
||||||
|
extern void grpc_resolver_dns_native_shutdown(void);
|
||||||
|
extern void grpc_resolver_sockaddr_init(void);
|
||||||
|
extern void grpc_resolver_sockaddr_shutdown(void);
|
||||||
|
-extern void grpc_resolver_fake_init(void);
|
||||||
|
-extern void grpc_resolver_fake_shutdown(void);
|
||||||
|
extern void grpc_load_reporting_plugin_init(void);
|
||||||
|
extern void grpc_load_reporting_plugin_shutdown(void);
|
||||||
|
-extern void grpc_lb_policy_grpclb_init(void);
|
||||||
|
-extern void grpc_lb_policy_grpclb_shutdown(void);
|
||||||
|
extern void grpc_lb_policy_pick_first_init(void);
|
||||||
|
extern void grpc_lb_policy_pick_first_shutdown(void);
|
||||||
|
extern void grpc_lb_policy_round_robin_init(void);
|
||||||
|
@@ -64,18 +58,12 @@ void grpc_register_built_in_plugins(void) {
|
||||||
|
grpc_client_channel_shutdown);
|
||||||
|
grpc_register_plugin(grpc_inproc_plugin_init,
|
||||||
|
grpc_inproc_plugin_shutdown);
|
||||||
|
- grpc_register_plugin(grpc_resolver_dns_ares_init,
|
||||||
|
- grpc_resolver_dns_ares_shutdown);
|
||||||
|
grpc_register_plugin(grpc_resolver_dns_native_init,
|
||||||
|
grpc_resolver_dns_native_shutdown);
|
||||||
|
grpc_register_plugin(grpc_resolver_sockaddr_init,
|
||||||
|
grpc_resolver_sockaddr_shutdown);
|
||||||
|
- grpc_register_plugin(grpc_resolver_fake_init,
|
||||||
|
- grpc_resolver_fake_shutdown);
|
||||||
|
grpc_register_plugin(grpc_load_reporting_plugin_init,
|
||||||
|
grpc_load_reporting_plugin_shutdown);
|
||||||
|
- grpc_register_plugin(grpc_lb_policy_grpclb_init,
|
||||||
|
- grpc_lb_policy_grpclb_shutdown);
|
||||||
|
grpc_register_plugin(grpc_lb_policy_pick_first_init,
|
||||||
|
grpc_lb_policy_pick_first_shutdown);
|
||||||
|
grpc_register_plugin(grpc_lb_policy_round_robin_init,
|
||||||
|
diff --git a/test/cpp/util/BUILD b/test/cpp/util/BUILD
|
||||||
|
index 33240f6f69..d2e1f67f06 100644
|
||||||
|
--- a/test/cpp/util/BUILD
|
||||||
|
+++ b/test/cpp/util/BUILD
|
||||||
|
@@ -29,6 +29,7 @@ package(
|
||||||
|
grpc_cc_binary(
|
||||||
|
name = "testso.so",
|
||||||
|
srcs = [],
|
||||||
|
+ linkopts = ['-Wl,--no-undefined'],
|
||||||
|
linkshared = 1,
|
||||||
|
deps = ["//:grpc++_unsecure"],
|
||||||
|
)
|
23
third_party/nanopb.BUILD
vendored
23
third_party/nanopb.BUILD
vendored
@ -1,23 +0,0 @@
|
|||||||
# Description:
|
|
||||||
# Nanopb, a tiny ANSI C protobuf implementation for use on embedded devices.
|
|
||||||
|
|
||||||
licenses(["notice"]) # zlib license
|
|
||||||
|
|
||||||
exports_files(["LICENSE.txt"])
|
|
||||||
|
|
||||||
cc_library(
|
|
||||||
name = "nanopb",
|
|
||||||
srcs = [
|
|
||||||
"pb_common.c",
|
|
||||||
"pb_decode.c",
|
|
||||||
"pb_encode.c",
|
|
||||||
],
|
|
||||||
hdrs = [
|
|
||||||
"pb.h",
|
|
||||||
"pb_common.h",
|
|
||||||
"pb_decode.h",
|
|
||||||
"pb_encode.h",
|
|
||||||
],
|
|
||||||
includes = ["."],
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
)
|
|
8
third_party/pprof.BUILD
vendored
8
third_party/pprof.BUILD
vendored
@ -4,15 +4,15 @@ package(
|
|||||||
|
|
||||||
licenses(["notice"]) # MIT
|
licenses(["notice"]) # MIT
|
||||||
|
|
||||||
load("@protobuf//:protobuf.bzl", "py_proto_library")
|
load("@protobuf_archive//:protobuf.bzl", "py_proto_library")
|
||||||
|
|
||||||
exports_files(["pprof/LICENSE"])
|
exports_files(["pprof/LICENSE"])
|
||||||
|
|
||||||
py_proto_library(
|
py_proto_library(
|
||||||
name = "pprof_proto_py",
|
name = "pprof_proto_py",
|
||||||
srcs = ["proto/profile.proto"],
|
srcs = ["proto/profile.proto"],
|
||||||
default_runtime = "@protobuf//:protobuf_python",
|
default_runtime = "@protobuf_archive//:protobuf_python",
|
||||||
protoc = "@protobuf//:protoc",
|
protoc = "@protobuf_archive//:protoc",
|
||||||
srcs_version = "PY2AND3",
|
srcs_version = "PY2AND3",
|
||||||
deps = ["@protobuf//:protobuf_python"],
|
deps = ["@protobuf_archive//:protobuf_python"],
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user