aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/core/platform/default/build_config.bzl
diff options
context:
space:
mode:
authorGravatar Jiri Simsa <jsimsa@google.com>2018-04-16 14:47:31 -0700
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2018-04-16 14:49:54 -0700
commitbe86852d8b63e0c655bd55728c8dc8d4f6dabaeb (patch)
tree6a08ad9ed3e6d2258bdf6cc01d06f4bd2b3a07eb /tensorflow/core/platform/default/build_config.bzl
parente0c50ac5bb843178742273ba3b651397553f3eb7 (diff)
Porting tests for `rpc_op` to OS.
PiperOrigin-RevId: 193102564
Diffstat (limited to 'tensorflow/core/platform/default/build_config.bzl')
-rw-r--r--tensorflow/core/platform/default/build_config.bzl86
1 files changed, 83 insertions, 3 deletions
diff --git a/tensorflow/core/platform/default/build_config.bzl b/tensorflow/core/platform/default/build_config.bzl
index 4cfa25bf66..44356e3438 100644
--- a/tensorflow/core/platform/default/build_config.bzl
+++ b/tensorflow/core/platform/default/build_config.bzl
@@ -1,7 +1,6 @@
# Platform-specific build configurations.
load("@protobuf_archive//:protobuf.bzl", "proto_gen")
-load("@protobuf_archive//:protobuf.bzl", "py_proto_library")
load("//tensorflow:tensorflow.bzl", "if_not_mobile")
load("//tensorflow:tensorflow.bzl", "if_windows")
load("//tensorflow:tensorflow.bzl", "if_not_windows")
@@ -110,6 +109,12 @@ def _proto_cc_srcs(srcs, use_grpc_plugin=False):
ret += [s[:-len(".proto")] + ".grpc.pb.cc" for s in srcs]
return ret
+def _proto_py_outs(srcs, use_grpc_plugin=False):
+ ret = [s[:-len(".proto")] + "_pb2.py" for s in srcs]
+ if use_grpc_plugin:
+ ret += [s[:-len(".proto")] + "_pb2_grpc.py" for s in srcs]
+ return ret
+
# Re-defined protocol buffer rule to allow building "header only" protocol
# buffers, to avoid duplicate registrations. Also allows non-iterable cc_libs
# containing select() statements.
@@ -217,6 +222,80 @@ def cc_proto_library(
hdrs=gen_hdrs,
**kargs)
+# Re-defined protocol buffer rule to bring in the change introduced in commit
+# https://github.com/google/protobuf/commit/294b5758c373cbab4b72f35f4cb62dc1d8332b68
+# which was not part of a stable protobuf release in 04/2018.
+# TODO(jsimsa): Remove this once the protobuf dependency version is updated
+# to include the above commit.
+def py_proto_library(
+ name,
+ srcs=[],
+ deps=[],
+ py_libs=[],
+ py_extra_srcs=[],
+ include=None,
+ default_runtime="@protobuf_archive//:protobuf_python",
+ protoc="@protobuf_archive//:protoc",
+ use_grpc_plugin=False,
+ **kargs):
+ """Bazel rule to create a Python protobuf library from proto source files
+
+ NOTE: the rule is only an internal workaround to generate protos. The
+ interface may change and the rule may be removed when bazel has introduced
+ the native rule.
+
+ Args:
+ name: the name of the py_proto_library.
+ srcs: the .proto files of the py_proto_library.
+ deps: a list of dependency labels; must be py_proto_library.
+ py_libs: a list of other py_library targets depended by the generated
+ py_library.
+ py_extra_srcs: extra source files that will be added to the output
+ py_library. This attribute is used for internal bootstrapping.
+ include: a string indicating the include path of the .proto files.
+ default_runtime: the implicitly default runtime which will be depended on by
+ the generated py_library target.
+ protoc: the label of the protocol compiler to generate the sources.
+ use_grpc_plugin: a flag to indicate whether to call the Python C++ plugin
+ when processing the proto files.
+ **kargs: other keyword arguments that are passed to cc_library.
+ """
+ outs = _proto_py_outs(srcs, use_grpc_plugin)
+
+ includes = []
+ if include != None:
+ includes = [include]
+
+ grpc_python_plugin = None
+ if use_grpc_plugin:
+ grpc_python_plugin = "//external:grpc_python_plugin"
+ # Note: Generated grpc code depends on Python grpc module. This dependency
+ # is not explicitly listed in py_libs. Instead, host system is assumed to
+ # have grpc installed.
+
+ proto_gen(
+ name=name + "_genproto",
+ srcs=srcs,
+ deps=[s + "_genproto" for s in deps],
+ includes=includes,
+ protoc=protoc,
+ gen_py=1,
+ outs=outs,
+ visibility=["//visibility:public"],
+ plugin=grpc_python_plugin,
+ plugin_language="grpc"
+ )
+
+ if default_runtime and not default_runtime in py_libs + deps:
+ py_libs = py_libs + [default_runtime]
+
+ native.py_library(
+ name=name,
+ srcs=outs+py_extra_srcs,
+ deps=py_libs+deps,
+ imports=includes,
+ **kargs)
+
def tf_proto_library_cc(name, srcs = [], has_services = None,
protodeps = [],
visibility = [], testonly = 0,
@@ -261,8 +340,7 @@ def tf_proto_library_cc(name, srcs = [], has_services = None,
)
def tf_proto_library_py(name, srcs=[], protodeps=[], deps=[], visibility=[],
- testonly=0,
- srcs_version="PY2AND3"):
+ testonly=0, srcs_version="PY2AND3", use_grpc_plugin=False):
py_proto_library(
name = name + "_py",
srcs = srcs,
@@ -272,6 +350,7 @@ def tf_proto_library_py(name, srcs=[], protodeps=[], deps=[], visibility=[],
default_runtime = "@protobuf_archive//:protobuf_python",
visibility = visibility,
testonly = testonly,
+ use_grpc_plugin = use_grpc_plugin,
)
def tf_jspb_proto_library(**kwargs):
@@ -310,6 +389,7 @@ def tf_proto_library(name, srcs = [], has_services = None,
srcs_version = "PY2AND3",
testonly = testonly,
visibility = visibility,
+ use_grpc_plugin = has_services,
)
def tf_additional_lib_hdrs(exclude = []):