-
Notifications
You must be signed in to change notification settings - Fork 5.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build Raylet with Bazel #3806
Build Raylet with Bazel #3806
Changes from all commits
9088f67
03f48c1
c2a3d05
30417e0
a506a3e
604502d
d2be430
ffd24d6
9ef4fb5
8e15dc0
2452f4c
dd52777
ee79e55
56abc3c
1b21c48
d276725
7498b3c
eaa9556
a53adfb
969c1fb
8b60d7a
08da4f0
4e0d630
60098e4
7d29078
959551d
9ce3d21
418b01c
16f0963
818be0f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Cause the script to exit if a single command fails | ||
set -e | ||
|
||
platform="unknown" | ||
unamestr="$(uname)" | ||
if [[ "$unamestr" == "Linux" ]]; then | ||
echo "Platform is linux." | ||
platform="linux" | ||
elif [[ "$unamestr" == "Darwin" ]]; then | ||
echo "Platform is macosx." | ||
platform="darwin" | ||
else | ||
echo "Unrecognized platform." | ||
exit 1 | ||
fi | ||
|
||
URL="https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-installer-${platform}-x86_64.sh" | ||
wget -O install.sh $URL | ||
chmod +x install.sh | ||
./install.sh --user | ||
rm -f install.sh |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,306 @@ | ||
# Bazel build | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Any reason to prefer There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes, BUILD wouldn't work because we already have a build directory and macOS is case-insensitive (I found out the hard way) |
||
# C/C++ documentation: https://docs.bazel.build/versions/master/be/c-cpp.html | ||
|
||
load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_cc_library") | ||
|
||
cc_binary( | ||
name = "raylet", | ||
srcs = ["src/ray/raylet/main.cc"], | ||
deps = [ | ||
":ray_util", | ||
":raylet_lib", | ||
], | ||
) | ||
|
||
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", | ||
], | ||
) | ||
|
||
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", | ||
"@com_google_googletest//:gtest", | ||
], | ||
) | ||
|
||
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", | ||
], | ||
) | ||
|
||
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" | ||
], | ||
) | ||
|
||
cc_test( | ||
name = "worker_pool_test", | ||
srcs = ["src/ray/raylet/worker_pool_test.cc"], | ||
deps = [ | ||
"@com_google_googletest//:gtest_main", | ||
":raylet_lib", | ||
], | ||
) | ||
|
||
cc_test( | ||
name = "logging_test", | ||
srcs = ["src/ray/util/logging_test.cc"], | ||
deps = [ | ||
"@com_google_googletest//:gtest_main", | ||
":ray_util", | ||
], | ||
) | ||
|
||
cc_test( | ||
name = "task_dependency_manager_test", | ||
srcs = ["src/ray/raylet/task_dependency_manager_test.cc"], | ||
deps = [ | ||
"@com_google_googletest//:gtest_main", | ||
":raylet_lib" | ||
], | ||
) | ||
|
||
cc_test( | ||
name = "task_test", | ||
srcs = ["src/ray/raylet/task_test.cc"], | ||
deps = [ | ||
"@com_google_googletest//:gtest_main", | ||
":raylet_lib", | ||
], | ||
) | ||
|
||
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" | ||
], | ||
) | ||
|
||
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", | ||
], | ||
) | ||
|
||
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", | ||
], | ||
) | ||
|
||
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", | ||
":sha256" | ||
] | ||
) | ||
|
||
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", | ||
], | ||
) | ||
|
||
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", | ||
], | ||
) | ||
|
||
cc_binary( | ||
name = "gcs_client_test", | ||
testonly = 1, | ||
srcs = ["src/ray/gcs/client_test.cc"], | ||
deps = [ | ||
":gcs", | ||
"@com_google_googletest//:gtest_main", | ||
], | ||
) | ||
|
||
cc_binary( | ||
name = "asio_test", | ||
testonly = 1, | ||
srcs = ["src/ray/gcs/asio_test.cc"], | ||
deps = [ | ||
":gcs", | ||
"@com_google_googletest//:gtest_main", | ||
":ray_util", | ||
], | ||
) | ||
|
||
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/", | ||
) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository", "new_git_repository") | ||
|
||
git_repository( | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you need this There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. load brings "git_repository" into the namespace (this is needed to be compatible with the latest version of bazel) |
||
name = "com_github_nelhage_rules_boost", | ||
commit = "6d6fd834281cb8f8e758dd9ad76df86304bf1869", | ||
remote = "https://github.com/nelhage/rules_boost", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is this official or just some random repo on the internet? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is no official BAZEL support for boost, so we can be glad to have this random repo. It's the best I could find so far, short of writing build files for boost ourselves. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I see |
||
) | ||
|
||
load("@com_github_nelhage_rules_boost//:boost/boost.bzl", "boost_deps") | ||
boost_deps() | ||
|
||
git_repository( | ||
name = "com_github_google_flatbuffers", | ||
remote = "https://github.com/google/flatbuffers.git", | ||
commit = "63d51afd1196336a7d1f56a988091ef05deb1c62", | ||
) | ||
|
||
git_repository( | ||
name = "com_google_googletest", | ||
remote = "https://github.com/google/googletest", | ||
commit = "3306848f697568aacf4bcca330f6bdd5ce671899", | ||
) | ||
|
||
new_git_repository( | ||
name = "plasma", | ||
build_file = "@//bazel:BUILD.plasma", | ||
remote = "https://github.com/ray-project/arrow", | ||
commit = "1e4f867eb1dc31107331ab1defdffb94467f31dc", | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's fine to put it here for now, but this is temporary, right?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, eventually everything should be switched, for now it just makes sure it doesn't get broken. This is the build matrix entry that is the least loaded (aside from linting) and has java already installed, so it's the natural candidate.