# Bazel build # C/C++ documentation: https://docs.bazel.build/versions/master/be/c-cpp.html load("@rules_python//python:defs.bzl", "py_library") load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library") load("@com_github_grpc_grpc//bazel:cython_library.bzl", "pyx_library") load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library") load("//bazel:ray.bzl", "COPTS", "PYX_COPTS", "PYX_SRCS", "copy_to_workspace") config_setting( name = "msvc-cl", flag_values = {"@bazel_tools//tools/cpp:compiler": "msvc-cl"}, ) config_setting( name = "clang-cl", flag_values = {"@bazel_tools//tools/cpp:compiler": "clang-cl"}, ) config_setting( name = "opt", values = {"compilation_mode": "opt"}, ) # === Begin of rpc definitions === # GRPC common lib. cc_library( name = "grpc_common_lib", srcs = glob([ "src/ray/rpc/*.cc", ]), hdrs = glob([ "src/ray/rpc/*.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":ray_common", "@boost//:asio", "@com_github_grpc_grpc//:grpc++", "@com_google_protobuf//:protobuf", ], ) # Node manager gRPC lib. cc_grpc_library( name = "node_manager_cc_grpc", srcs = ["//src/ray/protobuf:node_manager_proto"], grpc_only = True, deps = ["//src/ray/protobuf:node_manager_cc_proto"], ) # Node manager server and client. cc_library( name = "node_manager_rpc", hdrs = glob([ "src/ray/rpc/node_manager/*.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":grpc_common_lib", ":node_manager_cc_grpc", ":ray_common", "@boost//:asio", "@com_github_grpc_grpc//:grpc++", ], ) # gcs_service gRPC lib. cc_grpc_library( name = "gcs_service_cc_grpc", srcs = ["//src/ray/protobuf:gcs_service_proto"], grpc_only = True, deps = ["//src/ray/protobuf:gcs_service_cc_proto"], ) # gcs rpc server and client. cc_library( name = "gcs_service_rpc", hdrs = glob([ "src/ray/rpc/gcs_server/gcs_rpc_server.h", "src/ray/rpc/gcs_server/gcs_rpc_client.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":gcs_service_cc_grpc", ":grpc_common_lib", ":ray_common", "@boost//:asio", "@com_github_grpc_grpc//:grpc++", ], ) # Object manager gRPC lib. cc_grpc_library( name = "object_manager_cc_grpc", srcs = ["//src/ray/protobuf:object_manager_proto"], grpc_only = True, deps = ["//src/ray/protobuf:object_manager_cc_proto"], ) # Object manager rpc server and client. cc_library( name = "object_manager_rpc", hdrs = glob([ "src/ray/rpc/object_manager/*.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":grpc_common_lib", ":object_manager_cc_grpc", ":ray_common", "@boost//:asio", "@com_github_grpc_grpc//:grpc++", ], ) # Worker gRPC lib. cc_grpc_library( name = "worker_cc_grpc", srcs = ["//src/ray/protobuf:core_worker_proto"], grpc_only = True, deps = ["//src/ray/protobuf:worker_cc_proto"], ) # worker server and client. cc_library( name = "worker_rpc", srcs = glob([ "src/ray/rpc/worker/*.cc", ]), hdrs = glob([ "src/ray/rpc/worker/*.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":grpc_common_lib", ":ray_common", ":worker_cc_grpc", "@boost//:asio", "@boost//:thread", "@com_github_grpc_grpc//:grpc++", ], ) # Metrics Agent gRPC lib. cc_grpc_library( name = "reporter_cc_grpc", srcs = ["//src/ray/protobuf:reporter_proto"], grpc_only = True, deps = ["//src/ray/protobuf:reporter_cc_proto"], ) # Metrics Agent client. cc_library( name = "reporter_rpc", hdrs = glob([ "src/ray/rpc/metrics_agent_client.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":grpc_common_lib", ":ray_common", ":reporter_cc_grpc", "@boost//:asio", "@boost//:thread", "@com_github_grpc_grpc//:grpc++", ], ) # Agent manager. cc_grpc_library( name = "agent_manager_cc_grpc", srcs = ["//src/ray/protobuf:agent_manager_proto"], grpc_only = True, deps = ["//src/ray/protobuf:agent_manager_cc_proto"], ) cc_library( name = "agent_manager_rpc", hdrs = glob([ "src/ray/rpc/agent_manager/*.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":agent_manager_cc_grpc", ":grpc_common_lib", ":ray_common", "@boost//:asio", "@com_github_grpc_grpc//:grpc++", ], ) # === End of rpc definitions === # === Begin of plasma definitions === # TODO(mehrdadn): (How to) support dynamic linking? PROPAGATED_WINDOWS_DEFINES = ["ARROW_STATIC"] PLASMA_COPTS = COPTS + select({ "@bazel_tools//src/conditions:windows": [ ] + ["-D" + define for define in PROPAGATED_WINDOWS_DEFINES], "//conditions:default": [ "-DARROW_USE_GLOG", ], }) PLASMA_LINKOPTS = [] + select({ "@bazel_tools//src/conditions:windows": [ "-DefaultLib:" + "ws2_32.lib", ], "//conditions:default": [ ], }) cc_library( name = "plasma_client", srcs = [ "src/ray/object_manager/plasma/client.cc", "src/ray/object_manager/plasma/connection.cc", "src/ray/object_manager/plasma/malloc.cc", "src/ray/object_manager/plasma/plasma.cc", "src/ray/object_manager/plasma/protocol.cc", "src/ray/object_manager/plasma/shared_memory.cc", ] + select({ "@bazel_tools//src/conditions:windows": [ ], "//conditions:default": [ "src/ray/object_manager/plasma/fling.cc", ], }), hdrs = [ "src/ray/object_manager/format/object_manager_generated.h", "src/ray/object_manager/notification/object_store_notification_manager.h", "src/ray/object_manager/plasma/client.h", "src/ray/object_manager/plasma/common.h", "src/ray/object_manager/plasma/compat.h", "src/ray/object_manager/plasma/external_store.h", "src/ray/object_manager/plasma/connection.h", "src/ray/object_manager/plasma/malloc.h", "src/ray/object_manager/plasma/plasma.h", "src/ray/object_manager/plasma/plasma_generated.h", "src/ray/object_manager/plasma/protocol.h", "src/ray/object_manager/plasma/shared_memory.h", ] + select({ "@bazel_tools//src/conditions:windows": [ ], "//conditions:default": [ "src/ray/object_manager/plasma/fling.h", ], }), copts = PLASMA_COPTS, defines = select({ "@bazel_tools//src/conditions:windows": PROPAGATED_WINDOWS_DEFINES, "//conditions:default": [], }), linkopts = PLASMA_LINKOPTS, strip_include_prefix = "src", deps = [ ":object_manager_fbs", ":plasma_fbs", ":ray_common", ":ray_util", "//src/ray/protobuf:common_cc_proto", "@arrow", "@com_github_google_glog//:glog", "@msgpack", ], ) cc_library( name = "plasma_store_server_lib", srcs = [ "src/ray/object_manager/plasma/dlmalloc.cc", "src/ray/object_manager/plasma/eviction_policy.cc", "src/ray/object_manager/plasma/external_store.cc", "src/ray/object_manager/plasma/plasma_allocator.cc", "src/ray/object_manager/plasma/quota_aware_policy.cc", "src/ray/object_manager/plasma/store.cc", "src/ray/object_manager/plasma/store_runner.cc", ], hdrs = [ "src/ray/object_manager/plasma/eviction_policy.h", "src/ray/object_manager/plasma/external_store.h", "src/ray/object_manager/plasma/plasma_allocator.h", "src/ray/object_manager/plasma/quota_aware_policy.h", "src/ray/object_manager/plasma/store.h", "src/ray/object_manager/plasma/store_runner.h", "src/ray/thirdparty/dlmalloc.c", ], copts = PLASMA_COPTS, linkopts = PLASMA_LINKOPTS, strip_include_prefix = "src", deps = [ ":plasma_client", "@com_github_google_glog//:glog", ], ) cc_binary( name = "plasma_store_server", srcs = [ "src/ray/plasma/store_exec.cc", ], copts = PLASMA_COPTS, visibility = ["//visibility:public"], deps = [ ":plasma_store_server_lib", ], ) FLATC_ARGS = [ "--gen-object-api", "--gen-mutable", "--scoped-enums", ] flatbuffer_cc_library( name = "plasma_fbs", srcs = ["src/ray/object_manager/plasma/plasma.fbs"], flatc_args = FLATC_ARGS, out_prefix = "src/ray/object_manager/plasma/", ) # === End of plasma definitions === cc_library( name = "ray_common", srcs = glob( [ "src/ray/common/**/*.cc", ], exclude = [ "src/ray/common/**/*_test.cc", ], ), hdrs = glob( [ "src/ray/common/**/*.h", ], ), copts = COPTS, strip_include_prefix = "src", visibility = ["//visibility:public"], deps = [ ":node_manager_fbs", ":ray_util", "//src/ray/protobuf:common_cc_proto", "//src/ray/protobuf:gcs_cc_proto", "@arrow", "@boost//:asio", "@com_github_grpc_grpc//:grpc++", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:flat_hash_set", "@com_google_absl//absl/memory", "@com_google_googletest//:gtest", "@msgpack", ], ) cc_binary( name = "raylet", srcs = ["src/ray/raylet/main.cc"], copts = COPTS, visibility = ["//java:__subpackages__"], deps = [ ":ray_util", ":raylet_lib", "@com_github_gflags_gflags//:gflags", ], ) cc_library( name = "gcs_pub_sub_lib", srcs = glob( [ "src/ray/gcs/pubsub/gcs_pub_sub.cc", ], ), hdrs = glob( [ "src/ray/gcs/pubsub/gcs_pub_sub.h", ], ), copts = COPTS, strip_include_prefix = "src", deps = [ ":gcs", ":ray_common", ":redis_client", ], ) cc_test( name = "gcs_pub_sub_test", srcs = ["src/ray/gcs/pubsub/test/gcs_pub_sub_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs_pub_sub_lib", "@com_google_googletest//:gtest_main", ], ) cc_library( name = "gcs_server_lib", srcs = glob( [ "src/ray/gcs/gcs_server/*.cc", ], exclude = [ "src/ray/gcs/gcs_server/gcs_server_main.cc", "src/ray/gcs/gcs_server/test/*.cc", ], ), hdrs = glob( [ "src/ray/gcs/gcs_server/*.h", ], ), copts = COPTS, strip_include_prefix = "src", deps = [ ":agent_manager_rpc", ":gcs", ":gcs_pub_sub_lib", ":gcs_service_rpc", ":gcs_table_storage_lib", ":node_manager_rpc", ":raylet_client_lib", ":worker_rpc", ], ) cc_binary( name = "gcs_server", srcs = [ "src/ray/gcs/gcs_server/gcs_server_main.cc", ], copts = COPTS, visibility = ["//java:__subpackages__"], deps = [ ":gcs_server_lib", ":stats_lib", "@com_github_gflags_gflags//:gflags", ], ) cc_library( name = "stats_lib", srcs = glob( [ "src/ray/stats/*.cc", ], exclude = [ "src/ray/stats/*_test.cc", ], ), hdrs = glob( [ "src/ray/stats/*.h", ], ), copts = COPTS, linkopts = select({ "@bazel_tools//src/conditions:windows": [ ], "//conditions:default": [ "-lpthread", ], }), strip_include_prefix = "src", deps = [ ":ray_util", ":reporter_rpc", "@com_github_jupp0r_prometheus_cpp//pull", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest", "@io_opencensus_cpp//opencensus/exporters/stats/prometheus:prometheus_exporter", "@io_opencensus_cpp//opencensus/exporters/stats/stdout:stdout_exporter", "@io_opencensus_cpp//opencensus/stats", "@io_opencensus_cpp//opencensus/tags", ], ) cc_library( name = "raylet_lib", srcs = glob( [ "src/ray/raylet/**/*.cc", ], exclude = [ "src/ray/raylet/**/*_test.cc", "src/ray/raylet/main.cc", ], ), hdrs = glob( [ "src/ray/raylet/**/*.h", "src/ray/core_worker/common.h", ], ), copts = COPTS, linkopts = select({ "@bazel_tools//src/conditions:windows": [ ], "//conditions:default": [ "-lpthread", ], }), strip_include_prefix = "src", visibility = ["//streaming:__subpackages__"], deps = [ ":agent_manager_rpc", ":gcs", ":node_manager_fbs", ":node_manager_rpc", ":object_manager", ":plasma_client", ":ray_common", ":ray_util", ":service_based_gcs_client_lib", ":stats_lib", ":worker_rpc", "//src/ray/protobuf:common_cc_proto", "@boost//:asio", "@com_github_jupp0r_prometheus_cpp//pull", "@com_google_absl//absl/base:core_headers", "@com_google_absl//absl/container:flat_hash_set", "@com_google_absl//absl/memory", "@com_google_absl//absl/strings", "@com_google_googletest//:gtest", "@io_opencensus_cpp//opencensus/exporters/stats/prometheus:prometheus_exporter", "@io_opencensus_cpp//opencensus/stats", "@io_opencensus_cpp//opencensus/tags", ], ) cc_library( name = "raylet_client_lib", srcs = glob([ "src/ray/raylet_client/*.cc", ]), hdrs = glob([ "src/ray/raylet_client/*.h", ]), copts = COPTS, linkopts = select({ "@bazel_tools//src/conditions:windows": [ ], "//conditions:default": [ "-lpthread", ], }), strip_include_prefix = "src", visibility = ["//streaming:__subpackages__"], deps = [ ":agent_manager_rpc", ":node_manager_fbs", ":node_manager_rpc", ":ray_common", ":ray_util", "//src/ray/protobuf:gcs_cc_proto", "@boost//:asio", ], ) cc_library( name = "core_worker_lib", srcs = glob( [ "src/ray/core_worker/*.cc", "src/ray/core_worker/store_provider/*.cc", "src/ray/core_worker/store_provider/memory_store/*.cc", "src/ray/core_worker/transport/*.cc", "src/ray/rpc/worker/*.cc", ], exclude = [ "src/ray/core_worker/**/*_test.cc", "src/ray/core_worker/mock_worker.cc", ], ), hdrs = glob([ "src/ray/core_worker/*.h", "src/ray/core_worker/store_provider/*.h", "src/ray/core_worker/store_provider/memory_store/*.h", "src/ray/core_worker/transport/*.h", ]), copts = COPTS, strip_include_prefix = "src", visibility = ["//visibility:public"], deps = [ ":gcs", ":plasma_client", ":ray_common", ":ray_util", ":raylet_client_lib", ":service_based_gcs_client_lib", ":stats_lib", ":worker_rpc", "//src/ray/protobuf:worker_cc_proto", "@boost//:fiber", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:flat_hash_set", ], ) cc_library( name = "mock_worker_lib", srcs = ["src/ray/core_worker/test/mock_worker.cc"], hdrs = glob([ "src/ray/core_worker/test/*.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":core_worker_lib", ], ) cc_binary( name = "mock_worker", copts = COPTS, deps = [ ":mock_worker_lib", ], ) cc_test( name = "core_worker_test", srcs = ["src/ray/core_worker/test/core_worker_test.cc"], args = [ "$(location //:plasma_store_server)", "$(location raylet)", "$(location mock_worker)", "$(location gcs_server)", "$(location redis-cli)", "$(location redis-server)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:gcs_server", "//:libray_redis_module.so", "//:mock_worker", "//:plasma_store_server", "//:raylet", "//:redis-cli", "//:redis-server", ], deps = [ ":core_worker_lib", ":gcs", "@com_google_absl//absl/container:flat_hash_map", "@com_google_absl//absl/container:flat_hash_set", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "direct_actor_transport_test", srcs = ["src/ray/core_worker/test/direct_actor_transport_test.cc"], copts = COPTS, deps = [ ":core_worker_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "direct_task_transport_test", srcs = ["src/ray/core_worker/test/direct_task_transport_test.cc"], copts = COPTS, deps = [ ":core_worker_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "reference_count_test", srcs = ["src/ray/core_worker/reference_count_test.cc"], copts = COPTS, deps = [ ":core_worker_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "object_recovery_manager_test", srcs = ["src/ray/core_worker/test/object_recovery_manager_test.cc"], copts = COPTS, deps = [ ":core_worker_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "scheduling_queue_test", srcs = ["src/ray/core_worker/test/scheduling_queue_test.cc"], copts = COPTS, deps = [ ":core_worker_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "task_manager_test", srcs = ["src/ray/core_worker/test/task_manager_test.cc"], copts = COPTS, deps = [ ":core_worker_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "actor_manager_test", srcs = ["src/ray/core_worker/test/actor_manager_test.cc"], copts = COPTS, deps = [ ":core_worker_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "cluster_resource_scheduler_test", srcs = [ "src/ray/raylet/scheduling/cluster_resource_scheduler_test.cc", ], copts = COPTS, deps = [ ":raylet_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "cluster_task_manager_test", srcs = [ "src/ray/raylet/scheduling/cluster_task_manager_test.cc", ], copts = COPTS, deps = [ ":raylet_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "reconstruction_policy_test", srcs = ["src/ray/raylet/reconstruction_policy_test.cc"], copts = COPTS + select({ "//:msvc-cl": [ ], "//conditions:default": [ # Ignore this warning since it's impractical to fix in the relevant headers "-Wno-inconsistent-missing-override", ], }), deps = [ ":node_manager_fbs", ":object_manager", ":raylet_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "worker_pool_test", srcs = ["src/ray/raylet/worker_pool_test.cc"], copts = COPTS, deps = [ ":raylet_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "scheduling_resources_test", srcs = ["src/ray/common/task/scheduling_resources_test.cc"], copts = COPTS, deps = [ "ray_common", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "id_test", srcs = ["src/ray/common/id_test.cc"], copts = COPTS, deps = [ "ray_common", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "logging_test", srcs = ["src/ray/util/logging_test.cc"], args = ["--gtest_filter=PrintLogTest*"], copts = COPTS, deps = [ ":ray_util", "@boost//:asio", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "event_test", srcs = ["src/ray/util/event_test.cc"], copts = COPTS, deps = [ ":ray_util", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "filesystem_test", srcs = ["src/ray/util/filesystem_test.cc"], copts = COPTS, deps = [ ":ray_util", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "util_test", srcs = ["src/ray/util/util_test.cc"], copts = COPTS, deps = [ ":ray_util", "@boost//:asio", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "sample_test", srcs = ["src/ray/util/sample_test.cc"], copts = COPTS, deps = [ ":ray_common", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "task_dependency_manager_test", srcs = ["src/ray/raylet/task_dependency_manager_test.cc"], copts = COPTS, deps = [ ":raylet_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "client_connection_test", srcs = ["src/ray/common/test/client_connection_test.cc"], copts = COPTS, deps = [ ":ray_common", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "signal_test", srcs = ["src/ray/util/signal_test.cc"], copts = COPTS, deps = [ ":raylet_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "sequencer_test", srcs = ["src/ray/util/sequencer_test.cc"], copts = COPTS, deps = [ ":ray_util", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "stats_test", srcs = ["src/ray/stats/stats_test.cc"], copts = COPTS, tags = ["stats"], deps = [ ":stats_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "metric_exporter_client_test", srcs = ["src/ray/stats/metric_exporter_client_test.cc"], copts = COPTS, tags = ["stats"], deps = [ ":stats_lib", "@com_google_googletest//:gtest_main", ], ) cc_library( name = "gcs_test_util_lib", hdrs = [ "src/ray/gcs/test/accessor_test_base.h", "src/ray/gcs/test/gcs_test_util.h", ], copts = COPTS, strip_include_prefix = "src", deps = [ ":gcs", ":gcs_service_rpc", ], ) cc_test( name = "gcs_server_rpc_test", srcs = [ "src/ray/gcs/gcs_server/test/gcs_server_rpc_test.cc", ], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs_server_lib", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_library( name = "gcs_server_test_util", hdrs = [ "src/ray/gcs/gcs_server/test/gcs_server_test_util.h", ], copts = COPTS, strip_include_prefix = "src", ) cc_test( name = "gcs_node_manager_test", srcs = [ "src/ray/gcs/gcs_server/test/gcs_node_manager_test.cc", ], copts = COPTS, deps = [ ":gcs_server_lib", ":gcs_server_test_util", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "gcs_placement_group_manager_test", srcs = [ "src/ray/gcs/gcs_server/test/gcs_placement_group_manager_test.cc", ], copts = COPTS, deps = [ ":gcs_server_lib", ":gcs_server_test_util", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "gcs_placement_group_scheduler_test", srcs = [ "src/ray/gcs/gcs_server/test/gcs_placement_group_scheduler_test.cc", ], copts = COPTS, deps = [ ":gcs_server_lib", ":gcs_server_test_util", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "gcs_actor_scheduler_test", srcs = [ "src/ray/gcs/gcs_server/test/gcs_actor_scheduler_test.cc", ], copts = COPTS, deps = [ ":gcs_server_lib", ":gcs_server_test_util", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "gcs_actor_manager_test", srcs = [ "src/ray/gcs/gcs_server/test/gcs_actor_manager_test.cc", ], copts = COPTS, deps = [ ":gcs_server_lib", ":gcs_server_test_util", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_library( name = "gcs_table_storage_lib", srcs = glob( [ "src/ray/gcs/gcs_server/gcs_table_storage.cc", ], ), hdrs = glob( [ "src/ray/gcs/gcs_server/gcs_table_storage.h", ], ), copts = COPTS, strip_include_prefix = "src", deps = [ ":gcs", ":gcs_in_memory_store_client", ":ray_common", ":redis_store_client", ], ) cc_library( name = "gcs_table_storage_test_lib", hdrs = [ "src/ray/gcs/gcs_server/test/gcs_table_storage_test_base.h", ], copts = COPTS, strip_include_prefix = "src", deps = [ "redis_store_client", ], ) cc_test( name = "redis_gcs_table_storage_test", srcs = [ "src/ray/gcs/gcs_server/test/redis_gcs_table_storage_test.cc", ], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs_table_storage_lib", ":gcs_table_storage_test_lib", ":gcs_test_util_lib", ":store_client_test_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "in_memory_gcs_table_storage_test", srcs = [ "src/ray/gcs/gcs_server/test/in_memory_gcs_table_storage_test.cc", ], copts = COPTS, deps = [ ":gcs_table_storage_lib", ":gcs_table_storage_test_lib", ":gcs_test_util_lib", ":store_client_test_lib", "@com_google_googletest//:gtest_main", ], ) cc_library( name = "service_based_gcs_client_lib", srcs = glob( [ "src/ray/gcs/gcs_client/service_based_*.cc", ], ), hdrs = glob( [ "src/ray/gcs/gcs_client/service_based_*.h", ], ), copts = COPTS, strip_include_prefix = "src", deps = [ ":gcs", ":gcs_pub_sub_lib", ":gcs_service_rpc", ":redis_store_client", ], ) cc_library( name = "global_state_accessor_lib", srcs = glob( [ "src/ray/gcs/gcs_client/global_state_accessor.cc", ], ), hdrs = glob( [ "src/ray/gcs/gcs_client/global_state_accessor.h", ], ), copts = COPTS, strip_include_prefix = "src", deps = [ ":service_based_gcs_client_lib", ], ) cc_test( name = "global_state_accessor_test", srcs = [ "src/ray/gcs/gcs_client/test/global_state_accessor_test.cc", ], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs_server_lib", ":gcs_test_util_lib", ":global_state_accessor_lib", ":service_based_gcs_client_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "gcs_server_test", srcs = [ "src/ray/gcs/gcs_client/test/service_based_gcs_client_test.cc", ], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs_server_lib", ":gcs_test_util_lib", ":service_based_gcs_client_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "gcs_object_manager_test", srcs = [ "src/ray/gcs/gcs_server/test/gcs_object_manager_test.cc", ], copts = COPTS, deps = [ ":gcs_server_lib", ":gcs_server_test_util", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_library( name = "object_manager", srcs = glob([ "src/ray/object_manager/*.cc", "src/ray/object_manager/notification/*.cc", ]), hdrs = glob([ "src/ray/object_manager/*.h", "src/ray/object_manager/notification/*.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":core_worker_lib", ":gcs", ":object_manager_fbs", ":object_manager_rpc", ":plasma_store_server_lib", ":ray_common", ":ray_util", "@boost//:asio", ], ) cc_binary( name = "object_manager_test", testonly = 1, srcs = ["src/ray/object_manager/test/object_manager_test.cc"], copts = COPTS, deps = [ ":object_manager", "//src/ray/protobuf:common_cc_proto", "@com_google_googletest//:gtest_main", ], ) cc_binary( name = "object_manager_stress_test", testonly = 1, srcs = ["src/ray/object_manager/test/object_manager_stress_test.cc"], copts = COPTS, deps = [ ":object_manager", "//src/ray/protobuf:common_cc_proto", "@com_google_googletest//:gtest_main", ], ) cc_library( name = "platform_shims", srcs = [] + select({ "@bazel_tools//src/conditions:windows": glob([ "src/shims/windows/**/*.c", "src/shims/windows/**/*.cc", "src/shims/windows/**/*.h", ]), "//conditions:default": [], }), hdrs = [] + select({ "@bazel_tools//src/conditions:windows": glob([ "src/shims/windows/**/*.h", ]), "//conditions:default": [], }), copts = COPTS, strip_include_prefix = select({ "@bazel_tools//src/conditions:windows": "src/shims/windows", "//conditions:default": "", }), visibility = ["//visibility:public"], ) cc_library( name = "ray_util", srcs = glob( [ "src/ray/util/*.cc", ], exclude = [ "src/ray/util/*_test.cc", ], ), hdrs = glob([ "src/ray/util/*.h", ]), copts = COPTS, strip_include_prefix = "src", visibility = ["//visibility:public"], deps = [ ":sha256", "//src/ray/protobuf:event_cc_proto", "@boost//:asio", "@com_github_google_glog//:glog", "@com_google_absl//absl/synchronization", "@com_google_absl//absl/time", "@com_google_googletest//:gtest_main", ], ) filegroup( name = "iwyu_sh", srcs = ["ci/travis/iwyu.sh"], ) filegroup( name = "extra_actions_base_proto", srcs = [ # TODO: Replace our file with the built-in copy once this issue is resolved: # https://github.com/bazelbuild/bazel/issues/8738 "thirdparty/protobuf/extra_actions_base.proto", #"@bazel_tools//src/main/protobuf:extra_actions_base.proto", ], ) action_listener( name = "iwyu_cpp", extra_actions = [":iwyu_action"], mnemonics = ["CppCompile"], ) extra_action( name = "iwyu_action", cmd = "$(location :iwyu_sh) postbuild $(location @com_google_protobuf//:protoc) $(location :extra_actions_base_proto) --extra_action_file=$(EXTRA_ACTION_FILE) > $(output $(ACTION_ID).iwyu.txt)", out_templates = [ "$(ACTION_ID).iwyu.txt", ], tools = [ ":extra_actions_base_proto", ":iwyu_sh", "@com_google_protobuf//:protoc", ], ) cc_library( name = "sha256", srcs = [ "src/ray/thirdparty/sha256.c", ], hdrs = [ "src/ray/thirdparty/sha256.h", ], copts = COPTS, strip_include_prefix = "src", ) alias( name = "hiredis", actual = "@com_github_redis_hiredis//:hiredis", ) cc_library( name = "redis_client", srcs = [ "src/ray/gcs/asio.cc", "src/ray/gcs/redis_async_context.cc", "src/ray/gcs/redis_client.cc", "src/ray/gcs/redis_context.cc", ], hdrs = [ "src/ray/gcs/asio.h", "src/ray/gcs/redis_async_context.h", "src/ray/gcs/redis_client.h", "src/ray/gcs/redis_context.h", ], copts = COPTS, strip_include_prefix = "src", deps = [ ":hiredis", ":ray_common", ":ray_util", ":stats_lib", "@boost//:asio", ], ) cc_library( name = "redis_store_client", srcs = [ "src/ray/gcs/store_client/redis_store_client.cc", ], hdrs = [ "src/ray/gcs/callback.h", "src/ray/gcs/store_client/redis_store_client.h", "src/ray/gcs/store_client/store_client.h", ], copts = COPTS, strip_include_prefix = "src", deps = [ "redis_client", ], ) cc_library( name = "gcs_in_memory_store_client", srcs = [ "src/ray/gcs/store_client/in_memory_store_client.cc", ], hdrs = [ "src/ray/gcs/callback.h", "src/ray/gcs/store_client/in_memory_store_client.h", "src/ray/gcs/store_client/store_client.h", ], copts = COPTS, strip_include_prefix = "src", deps = [ ":ray_common", ":ray_util", ], ) cc_library( name = "store_client_test_lib", hdrs = [ "src/ray/gcs/store_client/test/store_client_test_base.h", ], copts = COPTS, strip_include_prefix = "src", deps = [ "redis_store_client", ], ) cc_test( name = "redis_store_client_test", srcs = ["src/ray/gcs/store_client/test/redis_store_client_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":redis_store_client", ":store_client_test_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "in_memory_store_client_test", srcs = ["src/ray/gcs/store_client/test/in_memory_store_client_test.cc"], copts = COPTS, deps = [ ":gcs_in_memory_store_client", ":store_client_test_lib", "@com_google_googletest//:gtest_main", ], ) cc_library( name = "gcs", srcs = glob( [ "src/ray/gcs/*.cc", ], exclude = [ "src/ray/gcs/*_test.cc", ], ), hdrs = glob([ "src/ray/gcs/*.h", ]), copts = COPTS, strip_include_prefix = "src", deps = [ ":agent_manager_rpc", ":hiredis", ":node_manager_fbs", ":node_manager_rpc", ":ray_common", ":ray_util", ":stats_lib", "//src/ray/protobuf:gcs_cc_proto", "@boost//:asio", ], ) # TODO(micafan) Support test group in future. Use test group we can run all gcs test once. cc_test( name = "redis_gcs_client_test", srcs = ["src/ray/gcs/test/redis_gcs_client_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "redis_actor_info_accessor_test", srcs = ["src/ray/gcs/test/redis_actor_info_accessor_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "redis_object_info_accessor_test", srcs = ["src/ray/gcs/test/redis_object_info_accessor_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "subscription_executor_test", srcs = ["src/ray/gcs/test/subscription_executor_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "redis_job_info_accessor_test", srcs = ["src/ray/gcs/test/redis_job_info_accessor_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "redis_node_info_accessor_test", srcs = ["src/ray/gcs/test/redis_node_info_accessor_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs", ":gcs_test_util_lib", "@com_google_googletest//:gtest_main", ], ) cc_test( name = "asio_test", srcs = ["src/ray/gcs/test/asio_test.cc"], args = [ "$(location redis-server)", "$(location redis-cli)", "$(location libray_redis_module.so)", ], copts = COPTS, data = [ "//:libray_redis_module.so", "//:redis-cli", "//:redis-server", ], deps = [ ":gcs", ":ray_util", "@com_google_googletest//:gtest_main", ], ) flatbuffer_cc_library( name = "node_manager_fbs", srcs = ["src/ray/raylet/format/node_manager.fbs"], flatc_args = FLATC_ARGS, out_prefix = "ray/raylet/format/", ) flatbuffer_cc_library( name = "object_manager_fbs", srcs = ["src/ray/object_manager/format/object_manager.fbs"], flatc_args = FLATC_ARGS, out_prefix = "src/ray/object_manager/format/", ) pyx_library( name = "_raylet", srcs = glob([ "python/ray/__init__.py", "python/ray/_raylet.pxd", "python/ray/_raylet.pyx", "python/ray/includes/*.pxd", "python/ray/includes/*.pxi", ]), # Export ray ABI symbols, which can then be used by _streaming.so. # We need to dlopen this lib with RTLD_GLOBAL to use ABI in this # shared lib, see python/ray/__init__.py. cc_kwargs = dict( srcs = PYX_SRCS, copts = COPTS + PYX_COPTS, # see https://github.com/tensorflow/tensorflow/blob/r2.1/tensorflow/lite/BUILD#L444 linkopts = select({ "@bazel_tools//src/conditions:darwin": [ "-Wl,-exported_symbols_list,$(location //:src/ray/ray_exported_symbols.lds)", ], "@bazel_tools//src/conditions:windows": [ ], "//conditions:default": [ "-Wl,--version-script,$(location //:src/ray/ray_version_script.lds)", ], }), linkstatic = 1, ), deps = [ "//:core_worker_lib", "//:global_state_accessor_lib", "//:ray_util", "//:raylet_lib", "//:src/ray/ray_exported_symbols.lds", "//:src/ray/ray_version_script.lds", "//:stats_lib", "//src/ray/protobuf:serialization_cc_proto", ], ) pyx_library( name = "_streaming", srcs = glob([ "python/ray/streaming/_streaming.pyx", "python/ray/__init__.py", "python/ray/_raylet.pxd", "python/ray/includes/*.pxd", "python/ray/includes/*.pxi", "python/ray/streaming/__init__.pxd", "python/ray/streaming/includes/*.pxd", "python/ray/streaming/includes/*.pxi", ]), cc_kwargs = dict( srcs = PYX_SRCS, copts = COPTS + PYX_COPTS, ), deps = [ "//streaming:streaming_lib", ], ) cc_binary( name = "libcore_worker_library_java.so", srcs = glob([ "src/ray/core_worker/lib/java/*.h", "src/ray/core_worker/lib/java/*.cc", ]), copts = COPTS, # Export ray ABI symbols, which can then be used by libstreaming_java.so. see `//:_raylet` linkopts = select({ "@bazel_tools//src/conditions:darwin": [ "-Wl,-exported_symbols_list,$(location //:src/ray/ray_exported_symbols.lds)", ], "@bazel_tools//src/conditions:windows": [ ], "//conditions:default": [ "-Wl,--version-script,$(location //:src/ray/ray_version_script.lds)", ], }), linkshared = 1, linkstatic = 1, visibility = ["//java:__subpackages__"], deps = [ "//:core_worker_lib", "//:global_state_accessor_lib", "//:src/ray/ray_exported_symbols.lds", "//:src/ray/ray_version_script.lds", "//:stats_lib", "@bazel_tools//tools/jdk:jni", ], ) filegroup( name = "python_sources", srcs = glob([ "python/ray/*.py", "python/ray/autoscaler/*.py", "python/ray/autoscaler/aws/example-full.yaml", "python/ray/autoscaler/azure/example-full.yaml", "python/ray/autoscaler/gcp/example-full.yaml", "python/ray/autoscaler/local/example-full.yaml", "python/ray/cloudpickle/*.py", "python/ray/core/__init__.py", "python/ray/core/generated/__init__.py", "python/ray/core/generated/ray/__init__.py", "python/ray/core/generated/ray/protocol/__init__.py", "python/ray/dashboard/*.py", "python/ray/dashboard/metrics_exporter/*.py", "python/ray/experimental/*.py", "python/ray/util/*.py", "python/ray/internal/*.py", "python/ray/projects/*.py", "python/ray/projects/schema.json", "python/ray/projects/templates/cluster_template.yaml", "python/ray/projects/templates/project_template.yaml", "python/ray/projects/templates/requirements.txt", "python/ray/workers/default_worker.py", ]), ) alias( name = "redis-server", actual = select({ "@bazel_tools//src/conditions:windows": "@com_github_tporadowski_redis_bin//:redis-server.exe", "//conditions:default": "@com_github_antirez_redis//:redis-server", }), visibility = ["//visibility:public"], ) alias( name = "redis-cli", actual = select({ "@bazel_tools//src/conditions:windows": "@com_github_tporadowski_redis_bin//:redis-cli.exe", "//conditions:default": "@com_github_antirez_redis//:redis-cli", }), visibility = ["//visibility:public"], ) cc_library( name = "ray_redis_module", hdrs = [ "src/ray/gcs/redis_module/redis_string.h", "src/ray/gcs/redis_module/redismodule.h", ], copts = COPTS, strip_include_prefix = "src", ) cc_binary( name = "libray_redis_module.so", srcs = [ "src/ray/gcs/redis_module/ray_redis_module.cc", ], copts = COPTS, linkshared = 1, linkstatic = 1, visibility = ["//java:__subpackages__"], deps = [ ":ray_common", ":ray_redis_module", "//src/ray/protobuf:gcs_cc_proto", ], ) filegroup( name = "all_py_proto", srcs = [ "//src/ray/protobuf:agent_manager_py_proto", "//src/ray/protobuf:common_py_proto", "//src/ray/protobuf:core_worker_py_proto", "//src/ray/protobuf:gcs_py_proto", "//src/ray/protobuf:gcs_service_py_proto", "//src/ray/protobuf:node_manager_py_proto", "//src/ray/protobuf:reporter_py_proto", ], ) # This is a dummy test dependency that causes the python tests to be # re-run if any of these files changes. py_library( name = "ray_lib", srcs = glob( ["python/ray/**/*.py"], exclude = ["python/ray/tests/*.py"], ), visibility = ["__subpackages__"], ) copy_to_workspace( name = "cp_raylet_so", srcs = ["python/ray/_raylet.so"], dstdir = "python/ray", ) copy_to_workspace( name = "cp_streaming", srcs = ["python/ray/streaming/_streaming.so"], dstdir = "python/ray/streaming", ) copy_to_workspace( name = "cp_all_py_proto", srcs = [":all_py_proto"], dstdir = "python/ray/core/generated", ) copy_to_workspace( name = "cp_redis", srcs = [ ":redis-cli", ":redis-server", ], dstdir = "python/ray/core/src/ray/thirdparty/redis/src", ) copy_to_workspace( name = "cp_libray_redis_module", srcs = [":libray_redis_module.so"], dstdir = "python/ray/core/src/ray/gcs/redis_module", ) copy_to_workspace( name = "cp_raylet", srcs = [":raylet"], dstdir = "python/ray/core/src/ray/raylet", ) copy_to_workspace( name = "cp_gcs_server", srcs = [":gcs_server"], dstdir = "python/ray/core/src/ray/gcs", ) copy_to_workspace( name = "cp_plasma_store_server", srcs = [":plasma_store_server"], dstdir = "python/ray/core/src/plasma", ) genrule( name = "ray_pkg", srcs = [ ":cp_raylet_so", ":cp_streaming", ":python_sources", ":cp_all_py_proto", ":cp_redis", ":cp_libray_redis_module", ":cp_raylet", ":cp_gcs_server", ":cp_plasma_store_server", "//streaming:copy_streaming_py_proto", ], outs = ["ray_pkg.out"], cmd = """ if [ "$${OSTYPE-}" = "msys" ]; then ln -P -f -- python/ray/_raylet.so python/ray/_raylet.pyd fi # NOTE(hchen): Protobuf doesn't allow specifying Python package name. So we use this `sed` # command to change the import path in the generated file. # shellcheck disable=SC2006 files=(`ls python/ray/core/generated/*_pb2*.py`) sed -i -E 's/from src.ray.protobuf/from ./' "$${files[@]}" sed -i -E 's/from opencensus.proto.metrics.v1 import/from . import/' "$${files[@]}" sed -i -E 's/from opencensus.proto.resource.v1 import/from . import/' "$${files[@]}" echo "$${PWD}" > $@ """, local = 1, )