# Bazel build # C/C++ documentation: https://docs.bazel.build/versions/master/be/c-cpp.html load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library") load("@//bazel:ray.bzl", "flatbuffer_py_library") load("@//bazel:cython_library.bzl", "pyx_library") COPTS = ["-DRAY_USE_GLOG"] cc_binary( name = "raylet", srcs = ["src/ray/raylet/main.cc"], deps = [ ":ray_util", ":raylet_lib", ], copts = COPTS, ) cc_binary( name = "raylet_monitor", srcs = [ "src/ray/raylet/monitor.cc", "src/ray/raylet/monitor.h", "src/ray/raylet/monitor_main.cc", ], deps = [ ":gcs", ":ray_util", ], copts = COPTS, ) cc_library( name = "raylet_lib", srcs = glob([ "src/ray/raylet/*.cc" ], exclude = [ "src/ray/raylet/mock_gcs_client.cc", "src/ray/raylet/monitor_main.cc", "src/ray/raylet/*_test.cc", ]), hdrs = glob([ "src/ray/raylet/*.h", ]), deps = [ ":gcs", ":gcs_fbs", ":node_manager_fbs", ":object_manager", ":ray_common", ":ray_util", "@boost//:asio", "@plasma//:plasma_client", "@com_google_googletest//:gtest", ], copts = COPTS, ) cc_test( name = "lineage_cache_test", srcs = ["src/ray/raylet/lineage_cache_test.cc"], deps = [ "@com_google_googletest//:gtest_main", ":node_manager_fbs", ":raylet_lib", ], copts = COPTS, ) cc_test( name = "reconstruction_policy_test", srcs = ["src/ray/raylet/reconstruction_policy_test.cc"], deps = [ "@com_google_googletest//:gtest_main", ":node_manager_fbs", ":object_manager", ":raylet_lib" ], copts = COPTS, ) cc_test( name = "worker_pool_test", srcs = ["src/ray/raylet/worker_pool_test.cc"], deps = [ "@com_google_googletest//:gtest_main", ":raylet_lib", ], copts = COPTS, ) cc_test( name = "logging_test", srcs = ["src/ray/util/logging_test.cc"], deps = [ "@com_google_googletest//:gtest_main", ":ray_util", ], copts = COPTS, ) cc_test( name = "task_dependency_manager_test", srcs = ["src/ray/raylet/task_dependency_manager_test.cc"], deps = [ "@com_google_googletest//:gtest_main", ":raylet_lib" ], copts = COPTS, ) cc_test( name = "task_test", srcs = ["src/ray/raylet/task_test.cc"], deps = [ "@com_google_googletest//:gtest_main", ":raylet_lib", ], copts = COPTS, ) cc_library( name = "object_manager", srcs = glob([ "src/ray/object_manager/*.cc", ]), hdrs = glob([ "src/ray/object_manager/*.h", ]), includes = [ "src", ], deps = [ ":gcs", ":object_manager_fbs", ":ray_common", ":ray_util", "@boost//:asio", "@plasma//:plasma_client" ], copts = COPTS, ) cc_binary( name = "object_manager_test", testonly = 1, srcs = ["src/ray/object_manager/test/object_manager_test.cc"], deps = [ "@com_google_googletest//:gtest_main", ":object_manager", ], copts = COPTS, ) cc_binary( name = "object_manager_stress_test", testonly = 1, srcs = ["src/ray/object_manager/test/object_manager_stress_test.cc"], deps = [ "@com_google_googletest//:gtest_main", ":object_manager", ], copts = COPTS, ) cc_library( name = "ray_util", srcs = glob([ "src/ray/*.cc", "src/ray/util/*.cc", ], exclude = [ "src/ray/util/logging_test.cc", "src/ray/util/signal_test.cc" ]), hdrs = glob([ "src/ray/*.h", "src/ray/util/*.h", ]), includes = [ "src", ], deps = [ "@plasma//:plasma_client", "@com_github_google_glog//:glog", ":sha256" ], copts = COPTS, ) cc_library( name = "ray_common", srcs = [ "src/ray/common/client_connection.cc", "src/ray/common/common_protocol.cc" ], hdrs = [ "src/ray/common/client_connection.h", "src/ray/common/common_protocol.h" ], includes = [ "src/ray/gcs/format", ], deps = [ ":gcs_fbs", ":node_manager_fbs", ":ray_util", "@boost//:asio", ], copts = COPTS, ) cc_library( name = "sha256", srcs = [ "src/ray/thirdparty/sha256.c", ], hdrs = [ "src/ray/thirdparty/sha256.h", ], includes = ["src/ray/thirdparty"], ) cc_library( name = "hiredis", srcs = glob([ "src/ray/thirdparty/ae/ae.c", "src/ray/thirdparty/hiredis/*.c", ], exclude = [ "src/ray/thirdparty/hiredis/test.c" ]), hdrs = glob([ "src/ray/thirdparty/ae/*.h", "src/ray/thirdparty/hiredis/*.h", "src/ray/thirdparty/hiredis/adapters/*.h", "src/ray/thirdparty/hiredis/dict.c", "src/ray/thirdparty/ae/ae_kqueue.c", "src/ray/thirdparty/ae/ae_epoll.c", ]), includes = [ "src/ray/thirdparty/hiredis", "src/ray/thirdparty/ae", ], ) cc_library( name = "gcs", srcs = glob([ "src/ray/gcs/*.cc" ], exclude = [ "src/ray/gcs/*_test.cc" ]), hdrs = glob([ "src/ray/gcs/*.h", "src/ray/gcs/format/*.h", ]), includes = [ "src/ray/gcs/format", ], deps = [ ":gcs_fbs", ":node_manager_fbs", ":ray_util", ":ray_common", ":hiredis", "@boost//:asio", ], copts = COPTS, ) cc_binary( name = "gcs_client_test", testonly = 1, srcs = ["src/ray/gcs/client_test.cc"], deps = [ ":gcs", "@com_google_googletest//:gtest_main", ], copts = COPTS, ) cc_binary( name = "asio_test", testonly = 1, srcs = ["src/ray/gcs/asio_test.cc"], deps = [ ":gcs", "@com_google_googletest//:gtest_main", ":ray_util", ], copts = COPTS, ) FLATC_ARGS = [ "--gen-object-api", "--gen-mutable", "--scoped-enums", ] flatbuffer_cc_library( name = "gcs_fbs", srcs = ["src/ray/gcs/format/gcs.fbs"], flatc_args = FLATC_ARGS, out_prefix = "src/ray/gcs/format/", ) flatbuffer_cc_library( name = "common_fbs", srcs = ["@plasma//:cpp/src/plasma/format/common.fbs"], flatc_args = FLATC_ARGS, out_prefix = "src/ray/common/" ) flatbuffer_cc_library( name = "node_manager_fbs", srcs = ["src/ray/raylet/format/node_manager.fbs"], flatc_args = FLATC_ARGS, include_paths = ["src/ray/gcs/format"], includes = [":gcs_fbs_includes"], out_prefix = "src/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.pyx", "python/ray/includes/*.pxd", "python/ray/includes/*.pxi" ]), deps = ["//:raylet_lib"] ) flatbuffer_py_library( name = "python_gcs_fbs", srcs = [ "src/ray/gcs/format/gcs.fbs" ], outs = [ "ActorState.py", "ActorTableData.py", "Arg.py", "ClassTableData.py", "ClientTableData.py", "ConfigTableData.py", "CustomSerializerData.py", "DriverTableData.py", "ErrorTableData.py", "FunctionTableData.py", "GcsTableEntry.py", "HeartbeatBatchTableData.py", "HeartbeatTableData.py", "Language.py", "ObjectTableData.py", "ProfileEvent.py", "ProfileTableData.py", "RayResource.py", "ResourcePair.py", "SchedulingState.py", "TablePrefix.py", "TablePubsub.py", "TaskInfo.py", "TaskLeaseData.py", "TaskReconstructionData.py", "TaskTableData.py", "TaskTableTestAndUpdate.py", ], out_prefix = "python/ray/core/generated/", ) flatbuffer_py_library( name = "python_node_manager_fbs", srcs = [ "src/ray/raylet/format/node_manager.fbs" ], outs = [ "ray/protocol/DisconnectClient.py", "ray/protocol/FetchOrReconstruct.py", "ray/protocol/ForwardTaskRequest.py", "ray/protocol/FreeObjectsRequest.py", "ray/protocol/GetTaskReply.py", "ray/protocol/MessageType.py", "ray/protocol/NotifyUnblocked.py", "ray/protocol/PushErrorRequest.py", "ray/protocol/RegisterClientReply.py", "ray/protocol/RegisterClientRequest.py", "ray/protocol/RegisterNodeManagerRequest.py", "ray/protocol/ResourceIdSetInfo.py", "ray/protocol/SubmitTaskRequest.py", "ray/protocol/Task.py", "ray/protocol/TaskExecutionSpecification.py", "ray/protocol/WaitReply.py", "ray/protocol/WaitRequest.py" ], out_prefix = "python/ray/core/generated/", include_paths = [ "src/ray/gcs/format/" ], includes = ["src/ray/gcs/format/gcs.fbs"] ) filegroup( name = "python_sources", srcs = glob([ "python/ray/*.py", "python/ray/autoscaler/*.py", "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/experimental/*.py", "python/ray/internal/*.py", "python/ray/WebUI.ipynb", "python/ray/workers/default_worker.py" ]) ) genrule( name = "redis", cmd = """ set -x && curl -sL \"https://github.com/antirez/redis/archive/5.0.3.tar.gz\" | tar xz --strip-components=1 -C . && make && mv ./src/redis-server $(location redis-server) """, outs = ["redis-server"] ) cc_library( name = "ray_redis_module", hdrs = [ "src/ray/gcs/redis_module/redismodule.h", "src/ray/gcs/redis_module/redis_string.h" ], srcs = [ "src/ray/gcs/redis_module/ray_redis_module.cc", "src/ray/util/logging.cc" ], deps = [ ":ray_common" ] ) genrule( name = "ray_pkg", srcs = [ "python/ray/_raylet.so", "//:python_sources", "//:python_gcs_fbs", "//:python_node_manager_fbs", "//:redis-server", "//:ray_redis_module", "//:raylet", "//:raylet_monitor", "@plasma//:plasma_store_server" ], outs = ["ray_pkg"], cmd = """ set -x && mkdir -p python/ray && cp $(location python/ray/_raylet.so) python/ray && mkdir -p python/ray/core/src/ray/thirdparty/redis/src/ && cp $(location //:redis-server) python/ray/core/src/ray/thirdparty/redis/src/ && mkdir -p python/ray/core/src/ray/gcs/redis_module/ && for f in $(locations //:ray_redis_module); do cp $$f python/ray/core/src/ray/gcs/redis_module/; done && mkdir -p python/ray/core/src/ray/raylet/ && cp $(location //:raylet_monitor) python/ray/core/src/ray/raylet/ && mkdir -p python/ray/core/src/plasma && cp $(location @plasma//:plasma_store_server) python/ray/core/src/plasma/ && cp $(location //:raylet) python/ray/core/src/ray/raylet/ && mv python $(location ray_pkg) """, )