2019-07-08 22:41:37 +08:00
|
|
|
load("//bazel:ray.bzl", "define_java_module")
|
2020-07-28 15:34:29 -07:00
|
|
|
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
|
2019-11-08 15:58:28 -08:00
|
|
|
load("@rules_proto_grpc//java:defs.bzl", "java_proto_compile")
|
2019-03-22 14:30:05 +08:00
|
|
|
|
|
|
|
exports_files([
|
|
|
|
"testng.xml",
|
|
|
|
"checkstyle.xml",
|
|
|
|
"checkstyle-suppressions.xml",
|
|
|
|
])
|
|
|
|
|
2019-05-16 11:19:31 +08:00
|
|
|
all_modules = [
|
|
|
|
"api",
|
|
|
|
"runtime",
|
|
|
|
"test",
|
|
|
|
"tutorial",
|
|
|
|
]
|
|
|
|
|
2019-03-22 14:30:05 +08:00
|
|
|
java_import(
|
|
|
|
name = "all_modules",
|
|
|
|
jars = [
|
2020-04-12 17:59:34 +08:00
|
|
|
"libio_ray_ray_" + module + ".jar"
|
2020-01-11 14:26:28 +08:00
|
|
|
for module in all_modules
|
2019-05-16 11:19:31 +08:00
|
|
|
] + [
|
2020-04-12 17:59:34 +08:00
|
|
|
"libio_ray_ray_" + module + "-src.jar"
|
2020-01-11 14:26:28 +08:00
|
|
|
for module in all_modules
|
2019-05-16 11:19:31 +08:00
|
|
|
] + [
|
2019-03-22 14:30:05 +08:00
|
|
|
"all_tests_deploy.jar",
|
|
|
|
"all_tests_deploy-src.jar",
|
|
|
|
],
|
|
|
|
deps = [
|
2020-04-12 17:59:34 +08:00
|
|
|
":io_ray_ray_" + module
|
2020-01-11 14:26:28 +08:00
|
|
|
for module in all_modules
|
2019-05-16 11:19:31 +08:00
|
|
|
] + [
|
2019-03-22 14:30:05 +08:00
|
|
|
":all_tests",
|
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
define_java_module(
|
|
|
|
name = "api",
|
2020-01-11 14:26:28 +08:00
|
|
|
visibility = ["//visibility:public"],
|
2019-03-22 14:30:05 +08:00
|
|
|
deps = [
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:com_sun_xml_bind_jaxb_core",
|
|
|
|
"@maven//:com_sun_xml_bind_jaxb_impl",
|
2020-01-11 14:26:28 +08:00
|
|
|
"@maven//:javax_xml_bind_jaxb_api",
|
|
|
|
"@maven//:log4j_log4j",
|
|
|
|
"@maven//:org_slf4j_slf4j_log4j12",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
define_java_module(
|
|
|
|
name = "runtime",
|
2020-01-11 14:26:28 +08:00
|
|
|
additional_resources = [
|
|
|
|
":java_native_deps",
|
|
|
|
],
|
2019-03-22 14:30:05 +08:00
|
|
|
additional_srcs = [
|
2019-07-08 22:41:37 +08:00
|
|
|
":all_java_proto",
|
|
|
|
],
|
2020-01-11 14:26:28 +08:00
|
|
|
define_test_lib = True,
|
2019-07-08 22:41:37 +08:00
|
|
|
exclude_srcs = [
|
2020-04-12 17:59:34 +08:00
|
|
|
"runtime/src/main/java/io/ray/runtime/generated/*.java",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
|
|
|
test_deps = [
|
2020-04-12 17:59:34 +08:00
|
|
|
":io_ray_ray_api",
|
|
|
|
":io_ray_ray_runtime",
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:org_apache_commons_commons_lang3",
|
|
|
|
"@maven//:com_beust_jcommander",
|
|
|
|
"@maven//:org_testng_testng",
|
|
|
|
"@maven//:commons_io_commons_io",
|
2020-06-11 14:59:45 +08:00
|
|
|
"@maven//:javax_xml_bind_jaxb_api",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
2020-01-11 14:26:28 +08:00
|
|
|
visibility = ["//visibility:public"],
|
2019-03-22 14:30:05 +08:00
|
|
|
deps = [
|
2020-04-12 17:59:34 +08:00
|
|
|
":io_ray_ray_api",
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:com_google_guava_guava",
|
2019-06-26 05:31:19 +08:00
|
|
|
"@maven//:com_google_protobuf_protobuf_java",
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:com_typesafe_config",
|
|
|
|
"@maven//:commons_io_commons_io",
|
|
|
|
"@maven//:de_ruedigermoeller_fst",
|
2020-06-02 16:15:20 +08:00
|
|
|
"@maven//:log4j_log4j",
|
2020-01-11 14:26:28 +08:00
|
|
|
"@maven//:net_java_dev_jna_jna",
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:org_apache_commons_commons_lang3",
|
2020-04-08 21:10:57 +08:00
|
|
|
"@maven//:org_msgpack_msgpack_core",
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:org_ow2_asm_asm",
|
|
|
|
"@maven//:org_slf4j_slf4j_api",
|
|
|
|
"@maven//:org_slf4j_slf4j_log4j12",
|
2020-04-12 17:59:34 +08:00
|
|
|
"@maven//:org_testng_testng",
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:redis_clients_jedis",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
define_java_module(
|
|
|
|
name = "tutorial",
|
|
|
|
deps = [
|
2020-04-12 17:59:34 +08:00
|
|
|
":io_ray_ray_api",
|
|
|
|
":io_ray_ray_runtime",
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:com_google_guava_guava",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
define_java_module(
|
|
|
|
name = "test",
|
|
|
|
deps = [
|
2020-04-12 17:59:34 +08:00
|
|
|
":io_ray_ray_api",
|
|
|
|
":io_ray_ray_runtime",
|
2020-03-12 10:44:23 +08:00
|
|
|
"@maven//:com_google_code_gson_gson",
|
2019-06-17 19:00:50 +08:00
|
|
|
"@maven//:com_google_guava_guava",
|
|
|
|
"@maven//:com_sun_xml_bind_jaxb_core",
|
|
|
|
"@maven//:com_sun_xml_bind_jaxb_impl",
|
|
|
|
"@maven//:commons_io_commons_io",
|
|
|
|
"@maven//:javax_xml_bind_jaxb_api",
|
2019-04-18 16:53:25 +08:00
|
|
|
"@maven//:org_apache_commons_commons_lang3",
|
|
|
|
"@maven//:org_slf4j_slf4j_api",
|
|
|
|
"@maven//:org_testng_testng",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
|
|
|
)
|
|
|
|
|
|
|
|
java_binary(
|
|
|
|
name = "all_tests",
|
|
|
|
args = ["java/testng.xml"],
|
2020-01-11 14:26:28 +08:00
|
|
|
data = ["testng.xml"],
|
|
|
|
main_class = "org.testng.TestNG",
|
2019-03-22 14:30:05 +08:00
|
|
|
runtime_deps = [
|
2020-04-12 17:59:34 +08:00
|
|
|
":io_ray_ray_runtime_test",
|
|
|
|
":io_ray_ray_test",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
|
|
|
)
|
|
|
|
|
2019-06-26 05:31:19 +08:00
|
|
|
java_proto_compile(
|
2019-07-08 22:41:37 +08:00
|
|
|
name = "common_java_proto",
|
|
|
|
deps = ["@//:common_proto"],
|
2019-06-26 05:31:19 +08:00
|
|
|
)
|
|
|
|
|
2019-07-08 22:41:37 +08:00
|
|
|
java_proto_compile(
|
|
|
|
name = "gcs_java_proto",
|
|
|
|
deps = ["@//:gcs_proto"],
|
2019-03-22 14:30:05 +08:00
|
|
|
)
|
|
|
|
|
2019-07-08 22:41:37 +08:00
|
|
|
filegroup(
|
|
|
|
name = "all_java_proto",
|
|
|
|
srcs = [
|
|
|
|
":common_java_proto",
|
|
|
|
":gcs_java_proto",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
|
|
|
)
|
|
|
|
|
2020-07-28 15:34:29 -07:00
|
|
|
# plasma_store_server binary should be located in jar root path
|
|
|
|
# and keep in sync with mvn resource
|
|
|
|
copy_file(
|
|
|
|
name = "cp_plasma_store_server",
|
|
|
|
src = "//:plasma_store_server",
|
|
|
|
out = "plasma_store_server",
|
|
|
|
)
|
2020-07-28 11:53:25 +08:00
|
|
|
|
2020-07-28 15:34:29 -07:00
|
|
|
# `//:redis-server`'s full path is `external/com_github_antirez_redis/redis-server`,
|
|
|
|
# This rule removes the prefix, and only keeps `redis-server`.
|
|
|
|
copy_file(
|
|
|
|
name = "redis-server-without-prefix",
|
|
|
|
src = "//:redis-server",
|
|
|
|
out = "redis-server",
|
|
|
|
)
|
2020-07-15 10:47:16 +08:00
|
|
|
|
2019-03-22 14:30:05 +08:00
|
|
|
filegroup(
|
|
|
|
name = "java_native_deps",
|
|
|
|
srcs = [
|
2020-07-28 15:34:29 -07:00
|
|
|
":cp_plasma_store_server",
|
|
|
|
":redis-server-without-prefix",
|
|
|
|
"//:core_worker_library_java",
|
|
|
|
"//:gcs_server",
|
|
|
|
"//:libray_redis_module.so",
|
|
|
|
"//:raylet",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
|
|
|
)
|
|
|
|
|
2020-04-12 17:59:34 +08:00
|
|
|
# Generates the dependencies needed by maven.
|
2019-03-22 14:30:05 +08:00
|
|
|
genrule(
|
2020-07-28 15:34:29 -07:00
|
|
|
name = "gen_maven_deps",
|
2019-03-22 14:30:05 +08:00
|
|
|
srcs = [
|
2019-07-08 22:41:37 +08:00
|
|
|
":all_java_proto",
|
2020-07-28 15:34:29 -07:00
|
|
|
":java_native_deps",
|
2019-06-26 05:31:19 +08:00
|
|
|
":copy_pom_file",
|
2019-03-22 14:30:05 +08:00
|
|
|
],
|
2020-07-28 15:34:29 -07:00
|
|
|
outs = ["gen_maven_deps.out"],
|
2019-03-22 14:30:05 +08:00
|
|
|
cmd = """
|
2020-02-11 16:49:33 -08:00
|
|
|
WORK_DIR="$$(pwd)"
|
2019-07-08 22:41:37 +08:00
|
|
|
# Copy protobuf-generated files.
|
2020-04-12 17:59:34 +08:00
|
|
|
rm -rf "$$WORK_DIR/java/runtime/src/main/java/io/ray/runtime/generated"
|
2019-07-08 22:41:37 +08:00
|
|
|
for f in $(locations //java:all_java_proto); do
|
2020-02-11 16:49:33 -08:00
|
|
|
unzip "$$f" -x META-INF/MANIFEST.MF -d "$$WORK_DIR/java/runtime/src/main/java"
|
2019-07-08 22:41:37 +08:00
|
|
|
done
|
2020-07-28 15:34:29 -07:00
|
|
|
# Copy native dependecies.
|
|
|
|
NATIVE_DEPS_DIR="$$WORK_DIR/java/runtime/native_dependencies/"
|
2020-02-11 16:49:33 -08:00
|
|
|
rm -rf "$$NATIVE_DEPS_DIR"
|
|
|
|
mkdir -p "$$NATIVE_DEPS_DIR"
|
2019-03-22 14:30:05 +08:00
|
|
|
for f in $(locations //java:java_native_deps); do
|
2020-02-11 16:49:33 -08:00
|
|
|
chmod +w "$$f"
|
|
|
|
cp "$$f" "$$NATIVE_DEPS_DIR"
|
2019-03-22 14:30:05 +08:00
|
|
|
done
|
2020-02-11 16:49:33 -08:00
|
|
|
date > $@
|
2019-03-22 14:30:05 +08:00
|
|
|
""",
|
|
|
|
local = 1,
|
2019-06-26 05:31:19 +08:00
|
|
|
tags = ["no-cache"],
|
2019-03-22 14:30:05 +08:00
|
|
|
)
|
2019-04-29 13:02:49 +08:00
|
|
|
|
|
|
|
genrule(
|
|
|
|
name = "copy_pom_file",
|
|
|
|
srcs = [
|
2020-04-12 17:59:34 +08:00
|
|
|
"//java:io_ray_ray_" + module + "_pom"
|
2020-01-11 14:26:28 +08:00
|
|
|
for module in all_modules
|
2019-04-29 13:02:49 +08:00
|
|
|
],
|
|
|
|
outs = ["copy_pom_file.out"],
|
|
|
|
cmd = """
|
2020-02-11 16:49:33 -08:00
|
|
|
WORK_DIR="$$(pwd)"
|
2020-04-12 17:59:34 +08:00
|
|
|
cp -f $(location //java:io_ray_ray_api_pom) "$$WORK_DIR/java/api/pom.xml"
|
|
|
|
cp -f $(location //java:io_ray_ray_runtime_pom) "$$WORK_DIR/java/runtime/pom.xml"
|
|
|
|
cp -f $(location //java:io_ray_ray_tutorial_pom) "$$WORK_DIR/java/tutorial/pom.xml"
|
|
|
|
cp -f $(location //java:io_ray_ray_test_pom) "$$WORK_DIR/java/test/pom.xml"
|
2020-02-11 16:49:33 -08:00
|
|
|
date > $@
|
2019-04-29 13:02:49 +08:00
|
|
|
""",
|
|
|
|
local = 1,
|
|
|
|
tags = ["no-cache"],
|
|
|
|
)
|
2020-01-10 11:41:00 +08:00
|
|
|
|
|
|
|
java_binary(
|
|
|
|
name = "ray_dist",
|
|
|
|
# This rule is used to package all Ray Java code and the third-party dependencies into a
|
|
|
|
# fat jar file. It's not really an executable jar. So we set its `main_class` to empty.
|
|
|
|
main_class = "",
|
|
|
|
runtime_deps = [
|
2020-04-12 17:59:34 +08:00
|
|
|
"//java:io_ray_ray_api",
|
|
|
|
"//java:io_ray_ray_runtime",
|
|
|
|
"//streaming/java:io_ray_ray_streaming-api",
|
|
|
|
"//streaming/java:io_ray_ray_streaming-runtime",
|
2020-01-11 14:26:28 +08:00
|
|
|
],
|
2020-01-10 11:41:00 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
genrule(
|
|
|
|
name = "ray_java_pkg",
|
2020-01-11 14:26:28 +08:00
|
|
|
srcs = [
|
|
|
|
"//java:ray_dist_deploy.jar",
|
|
|
|
"//java:gen_maven_deps",
|
2020-02-25 10:33:33 +08:00
|
|
|
"//streaming/java:gen_maven_deps",
|
2020-01-11 14:26:28 +08:00
|
|
|
],
|
2020-01-10 11:41:00 +08:00
|
|
|
outs = ["ray_java_pkg.out"],
|
|
|
|
cmd = """
|
2020-02-11 16:49:33 -08:00
|
|
|
WORK_DIR="$$(pwd)"
|
|
|
|
rm -rf "$$WORK_DIR/python/ray/jars" && mkdir -p "$$WORK_DIR/python/ray/jars"
|
|
|
|
cp -f $(location //java:ray_dist_deploy.jar) "$$WORK_DIR/python/ray/jars/ray_dist.jar"
|
|
|
|
date > $@
|
2020-01-10 11:41:00 +08:00
|
|
|
""",
|
|
|
|
local = 1,
|
|
|
|
tags = ["no-cache"],
|
|
|
|
)
|