# Bazel build # C/C++ documentation: https://docs.bazel.build/versions/master/be/c-cpp.html load("@com_github_grpc_grpc//bazel:cython_library.bzl", "pyx_library") load("@rules_proto_grpc//python:defs.bzl", "python_proto_compile") proto_library( name = "streaming_proto", srcs = ["src/protobuf/streaming.proto"], visibility = ["//visibility:public"], ) cc_proto_library( name = "streaming_cc_proto", deps = [":streaming_proto"], ) proto_library( name = "streaming_queue_proto", srcs = ["src/protobuf/streaming_queue.proto"], ) cc_proto_library( name = "streaming_queue_cc_proto", deps = ["streaming_queue_proto"], ) # Use `linkshared` to ensure ray related symbols are not packed into streaming libs # to avoid duplicate symbols. In runtime we expose ray related symbols, which can # be linked into streaming libs by dynamic linker. See bazel rule `//:_raylet` cc_binary( name = "ray_util.so", linkshared = 1, visibility = ["//visibility:public"], deps = ["//:ray_util"], ) cc_binary( name = "ray_common.so", linkshared = 1, visibility = ["//visibility:public"], deps = ["//:ray_common"], ) cc_binary( name = "core_worker_lib.so", linkshared = 1, deps = ["//:core_worker_lib"], ) cc_library( name = "streaming_util", srcs = glob([ "src/util/*.cc", ]), hdrs = glob([ "src/util/*.h", ]), includes = [ "src", ], visibility = ["//visibility:public"], deps = [ "ray_util.so", "@boost//:any", "@com_google_googletest//:gtest", ], ) cc_library( name = "streaming_config", srcs = glob([ "src/config/*.cc", ]), hdrs = glob([ "src/config/*.h", ]), deps = [ "ray_common.so", ":streaming_cc_proto", ":streaming_util", ], ) cc_library( name = "streaming_message", srcs = glob([ "src/message/*.cc", ]), hdrs = glob([ "src/message/*.h", ]), deps = [ "ray_common.so", ":streaming_config", ":streaming_util", ], ) cc_library( name = "streaming_queue", srcs = glob([ "src/queue/*.cc", ]), hdrs = glob([ "src/queue/*.h", ]), deps = [ "core_worker_lib.so", "ray_common.so", "ray_util.so", ":streaming_config", ":streaming_message", ":streaming_queue_cc_proto", ":streaming_util", "@boost//:asio", "@boost//:thread", ], ) cc_library( name = "streaming_lib", srcs = glob([ "src/*.cc", ]), hdrs = glob([ "src/*.h", "src/queue/*.h", "src/test/*.h", ]), includes = ["src"], visibility = ["//visibility:public"], deps = [ "ray_common.so", "ray_util.so", ":streaming_config", ":streaming_message", ":streaming_queue", ":streaming_util", "@boost//:circular_buffer", ], ) test_common_deps = [ ":streaming_lib", "//:ray_common", "//:ray_util", "//:core_worker_lib", ] # streaming queue mock actor binary cc_binary( name = "streaming_test_worker", srcs = glob(["src/test/*.h"]) + [ "src/test/mock_actor.cc", ], includes = [ "streaming/src/test", ], deps = test_common_deps, ) # use src/test/run_streaming_queue_test.sh to run this test cc_binary( name = "streaming_queue_tests", srcs = glob(["src/test/*.h"]) + [ "src/test/streaming_queue_tests.cc", ], deps = test_common_deps, ) cc_test( name = "streaming_message_ring_buffer_tests", srcs = [ "src/test/ring_buffer_tests.cc", ], includes = [ "streaming/src/test", ], deps = test_common_deps, ) cc_test( name = "streaming_message_serialization_tests", srcs = [ "src/test/message_serialization_tests.cc", ], deps = test_common_deps, ) cc_test( name = "streaming_mock_transfer", srcs = [ "src/test/mock_transfer_tests.cc", ], deps = test_common_deps, ) cc_test( name = "streaming_util_tests", srcs = [ "src/test/streaming_util_tests.cc", ], deps = test_common_deps, ) python_proto_compile( name = "streaming_py_proto", deps = ["//streaming:streaming_proto"], ) genrule( name = "copy_streaming_py_proto", srcs = [ ":streaming_py_proto", ], outs = [ "copy_streaming_py_proto.out", ], cmd = """ set -e set -x WORK_DIR=$$(pwd) # Copy generated files. GENERATED_DIR=$$WORK_DIR/streaming/python/generated rm -rf $$GENERATED_DIR mkdir -p $$GENERATED_DIR for f in $(locations //streaming:streaming_py_proto); do cp $$f $$GENERATED_DIR done echo $$(date) > $@ """, local = 1, visibility = ["//visibility:public"], )