chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,521 @@
|
||||
load(
|
||||
"@com_github_johnynek_bazel_jar_jar//:jar_jar.bzl",
|
||||
"jar_jar",
|
||||
)
|
||||
load("@rules_java//java:java_binary.bzl", "java_binary")
|
||||
load("@rules_java//java:java_import.bzl", "java_import")
|
||||
load("@rules_java//java:java_library.bzl", "java_library")
|
||||
load("@rules_java//java:java_test.bzl", "java_test")
|
||||
load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_files")
|
||||
load("@rules_pkg//pkg:zip.bzl", "pkg_zip")
|
||||
load("@rules_proto_grpc//java:defs.bzl", "java_proto_compile")
|
||||
load("@rules_python//python:defs.bzl", "py_binary")
|
||||
load("//bazel:ray.bzl", "define_java_module", "native_java_library")
|
||||
|
||||
exports_files([
|
||||
"testng.xml",
|
||||
"checkstyle.xml",
|
||||
"checkstyle-suppressions.xml",
|
||||
])
|
||||
|
||||
all_modules = [
|
||||
"api",
|
||||
"runtime",
|
||||
"serve",
|
||||
]
|
||||
|
||||
all_modules_with_test = all_modules + [
|
||||
"test",
|
||||
"performance_test",
|
||||
]
|
||||
|
||||
java_import(
|
||||
name = "all_modules",
|
||||
jars = [
|
||||
"libio_ray_ray_" + module + ".jar"
|
||||
for module in all_modules
|
||||
] + [
|
||||
"libio_ray_ray_" + module + "-src.jar"
|
||||
for module in all_modules
|
||||
],
|
||||
deps = [
|
||||
":io_ray_ray_" + module
|
||||
for module in all_modules
|
||||
],
|
||||
)
|
||||
|
||||
java_import(
|
||||
name = "all_modules_with_test",
|
||||
testonly = 1,
|
||||
jars = [
|
||||
"libio_ray_ray_" + module + ".jar"
|
||||
for module in all_modules_with_test
|
||||
] + [
|
||||
"libio_ray_ray_" + module + "-src.jar"
|
||||
for module in all_modules_with_test
|
||||
] + [
|
||||
"all_tests_bin_deploy.jar",
|
||||
"all_tests_bin_deploy-src.jar",
|
||||
],
|
||||
deps = [
|
||||
":io_ray_ray_" + module
|
||||
for module in all_modules_with_test
|
||||
] + [
|
||||
":all_tests",
|
||||
],
|
||||
)
|
||||
|
||||
define_java_module(
|
||||
name = "api",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"@maven//:com_lmax_disruptor",
|
||||
"@maven//:com_sun_xml_bind_jaxb_core",
|
||||
"@maven//:com_sun_xml_bind_jaxb_impl",
|
||||
"@maven//:javax_activation_activation",
|
||||
"@maven//:javax_xml_bind_jaxb_api",
|
||||
"@maven//:org_apache_logging_log4j_log4j_api",
|
||||
"@maven//:org_apache_logging_log4j_log4j_core",
|
||||
"@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
|
||||
"@maven//:org_slf4j_slf4j_api",
|
||||
],
|
||||
)
|
||||
|
||||
define_java_module(
|
||||
name = "runtime",
|
||||
additional_resources = [
|
||||
":java_native_deps",
|
||||
],
|
||||
additional_srcs = [
|
||||
":all_java_proto",
|
||||
],
|
||||
define_test_lib = True,
|
||||
exclude_srcs = [
|
||||
"runtime/src/main/java/io/ray/runtime/generated/*.java",
|
||||
],
|
||||
test_deps = [
|
||||
":io_ray_ray_api",
|
||||
":io_ray_ray_runtime",
|
||||
"@maven//:commons_io_commons_io",
|
||||
"@maven//:javax_xml_bind_jaxb_api",
|
||||
"@maven//:org_apache_commons_commons_lang3",
|
||||
"@maven//:org_testng_testng",
|
||||
],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
":io_ray_ray_api",
|
||||
"@maven//:com_fasterxml_jackson_core_jackson_databind",
|
||||
"@maven//:com_github_java_json_tools_json_schema_validator",
|
||||
"@maven//:com_google_code_gson_gson",
|
||||
"@maven//:com_google_guava_guava",
|
||||
"@maven//:com_google_protobuf_protobuf_java",
|
||||
"@maven//:com_google_protobuf_protobuf_java_util",
|
||||
"@maven//:com_lmax_disruptor",
|
||||
"@maven//:com_typesafe_config",
|
||||
"@maven//:commons_io_commons_io",
|
||||
"@maven//:de_ruedigermoeller_fst",
|
||||
"@maven//:net_java_dev_jna_jna",
|
||||
"@maven//:org_apache_commons_commons_lang3",
|
||||
"@maven//:org_apache_logging_log4j_log4j_api",
|
||||
"@maven//:org_apache_logging_log4j_log4j_core",
|
||||
"@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
|
||||
"@maven//:org_msgpack_msgpack_core",
|
||||
"@maven//:org_ow2_asm_asm",
|
||||
"@maven//:org_slf4j_slf4j_api",
|
||||
"@maven//:org_testng_testng",
|
||||
],
|
||||
)
|
||||
|
||||
define_java_module(
|
||||
name = "test",
|
||||
# (WangTaoTheTonic)For cpp x-lang tests. See //cpp:cluster_mode_xlang_test.
|
||||
visibility = ["//cpp:__subpackages__"],
|
||||
deps = [
|
||||
":io_ray_ray_api",
|
||||
":io_ray_ray_runtime",
|
||||
"@maven//:com_google_code_gson_gson",
|
||||
"@maven//:com_google_guava_guava",
|
||||
"@maven//:com_google_protobuf_protobuf_java",
|
||||
"@maven//:com_lmax_disruptor",
|
||||
"@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",
|
||||
"@maven//:org_apache_commons_commons_lang3",
|
||||
"@maven//:org_apache_logging_log4j_log4j_api",
|
||||
"@maven//:org_apache_logging_log4j_log4j_core",
|
||||
"@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
|
||||
"@maven//:org_slf4j_slf4j_api",
|
||||
"@maven//:org_testng_testng",
|
||||
],
|
||||
)
|
||||
|
||||
define_java_module(
|
||||
name = "performance_test",
|
||||
deps = [
|
||||
":io_ray_ray_api",
|
||||
":io_ray_ray_runtime",
|
||||
"@maven//:com_google_code_gson_gson",
|
||||
"@maven//:com_google_guava_guava",
|
||||
"@maven//:com_lmax_disruptor",
|
||||
"@maven//:commons_io_commons_io",
|
||||
"@maven//:org_apache_commons_commons_lang3",
|
||||
"@maven//:org_apache_logging_log4j_log4j_api",
|
||||
"@maven//:org_apache_logging_log4j_log4j_core",
|
||||
"@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
|
||||
"@maven//:org_slf4j_slf4j_api",
|
||||
],
|
||||
)
|
||||
|
||||
define_java_module(
|
||||
name = "serve",
|
||||
additional_srcs = [
|
||||
":serve_java_proto",
|
||||
],
|
||||
define_test_lib = True,
|
||||
exclude_srcs = [
|
||||
"serve/src/main/java/io/ray/serve/generated/*.java",
|
||||
],
|
||||
test_deps = [
|
||||
":io_ray_ray_api",
|
||||
":io_ray_ray_runtime",
|
||||
":io_ray_ray_serve",
|
||||
"@maven//:com_google_code_gson_gson",
|
||||
"@maven//:com_google_guava_guava",
|
||||
"@maven//:com_google_protobuf_protobuf_java",
|
||||
"@maven//:commons_io_commons_io",
|
||||
"@maven//:org_apache_commons_commons_lang3",
|
||||
"@maven//:org_apache_httpcomponents_client5_httpclient5",
|
||||
"@maven//:org_apache_httpcomponents_client5_httpclient5_fluent",
|
||||
"@maven//:org_apache_httpcomponents_core5_httpcore5",
|
||||
"@maven//:org_slf4j_slf4j_api",
|
||||
"@maven//:org_testng_testng",
|
||||
],
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
":io_ray_ray_api",
|
||||
":io_ray_ray_runtime",
|
||||
"@maven//:com_google_code_gson_gson",
|
||||
"@maven//:com_google_guava_guava",
|
||||
"@maven//:com_google_protobuf_protobuf_java",
|
||||
"@maven//:org_apache_commons_commons_lang3",
|
||||
"@maven//:org_apache_httpcomponents_core5_httpcore5",
|
||||
"@maven//:org_slf4j_slf4j_api",
|
||||
],
|
||||
)
|
||||
|
||||
java_library(
|
||||
name = "all_tests_lib",
|
||||
runtime_deps = [
|
||||
":io_ray_ray_performance_test",
|
||||
":io_ray_ray_runtime_test",
|
||||
":io_ray_ray_serve_test",
|
||||
":io_ray_ray_test",
|
||||
],
|
||||
)
|
||||
|
||||
# This is a local java test rule. It needs generated files to be copied into
|
||||
# the source tree before running. To build and generate ray core (gcs and
|
||||
# raylet), run `bazelisk run //:gen_ray_pkg` first.
|
||||
#
|
||||
# This rule used to depend on local genrules, which are deprecated. Reason
|
||||
# being that local genrules are build rules and do not capture changes in
|
||||
# source tree, and hence cannot be cached by bazel remote cache. Using local
|
||||
# genrule forces bazel to effectively disable caching globally to have a
|
||||
# correct build.
|
||||
#
|
||||
# TODO(ray-ci): covert java tests to non-local, hermetic tests.
|
||||
java_test(
|
||||
name = "all_tests",
|
||||
testonly = True,
|
||||
args = ["java/testng.xml"],
|
||||
data = [
|
||||
"testng.xml",
|
||||
"//:ray_pkg_zip",
|
||||
],
|
||||
main_class = "org.testng.TestNG",
|
||||
resources = [
|
||||
"//cpp:counter.so",
|
||||
"//cpp:plus.so",
|
||||
],
|
||||
tags = ["local"],
|
||||
runtime_deps = [
|
||||
":all_tests_lib",
|
||||
],
|
||||
)
|
||||
|
||||
# java_test does not produce a _deploy.jar in Bazel 7+. Use a java_binary
|
||||
# companion so that all_tests_bin_deploy.jar is available in both Bazel 6 and 7.
|
||||
java_binary(
|
||||
name = "all_tests_bin",
|
||||
testonly = True,
|
||||
main_class = "org.testng.TestNG",
|
||||
resources = [
|
||||
"//cpp:counter.so",
|
||||
"//cpp:plus.so",
|
||||
],
|
||||
runtime_deps = [":all_tests_lib"],
|
||||
)
|
||||
|
||||
# 0. `cp testng_custom_template.xml testng_custom.xml`
|
||||
# 1. `bazel run //:gen_ray_pkg`
|
||||
# 2. Specify test class/method in `testng_custom.xml`
|
||||
# 3. `bazel test //java:custom_test --test_output=streamed`
|
||||
java_test(
|
||||
name = "custom_test",
|
||||
args = ["java/testng_custom.xml"],
|
||||
data = [
|
||||
"testng_custom.xml",
|
||||
"//:ray_pkg_zip",
|
||||
],
|
||||
main_class = "org.testng.TestNG",
|
||||
tags = ["local"],
|
||||
runtime_deps = [
|
||||
":all_tests_lib",
|
||||
],
|
||||
)
|
||||
|
||||
# We'd better make resource files can be accessed from 3rd party library.
|
||||
# More detail please see https://github.com/ray-project/ray/pull/21641.
|
||||
java_proto_compile(
|
||||
name = "common_java_proto",
|
||||
deps = ["@io_ray//src/ray/protobuf:common_proto"],
|
||||
)
|
||||
|
||||
java_proto_compile(
|
||||
name = "runtime_env_common_java_proto",
|
||||
deps = [
|
||||
"@io_ray//src/ray/protobuf:runtime_env_common_proto",
|
||||
"@io_ray//src/ray/protobuf/public:runtime_environment_proto",
|
||||
],
|
||||
)
|
||||
|
||||
java_proto_compile(
|
||||
name = "gcs_java_proto",
|
||||
deps = ["@io_ray//src/ray/protobuf:gcs_proto"],
|
||||
)
|
||||
|
||||
java_proto_compile(
|
||||
name = "serve_java_proto",
|
||||
deps = ["@io_ray//src/ray/protobuf:serve_proto"],
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "all_java_proto",
|
||||
srcs = [
|
||||
":common_java_proto",
|
||||
":gcs_java_proto",
|
||||
":runtime_env_common_java_proto",
|
||||
],
|
||||
)
|
||||
|
||||
native_java_library(
|
||||
name = "core_worker_library_java",
|
||||
module_name = "runtime",
|
||||
native_library_name = "//src/ray/core_worker/lib/java:libcore_worker_library_java.so",
|
||||
)
|
||||
|
||||
filegroup(
|
||||
name = "java_native_deps",
|
||||
srcs = [
|
||||
":core_worker_library_java",
|
||||
],
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
name = "api_pom_files",
|
||||
srcs = ["io_ray_ray_api_pom"],
|
||||
prefix = "api/",
|
||||
renames = {
|
||||
"io_ray_ray_api_pom.xml": "pom.xml",
|
||||
},
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
name = "runtime_pom_files",
|
||||
srcs = ["io_ray_ray_runtime_pom"],
|
||||
prefix = "runtime/",
|
||||
renames = {
|
||||
"io_ray_ray_runtime_pom.xml": "pom.xml",
|
||||
},
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
name = "test_pom_files",
|
||||
srcs = ["io_ray_ray_test_pom"],
|
||||
prefix = "test/",
|
||||
renames = {
|
||||
"io_ray_ray_test_pom.xml": "pom.xml",
|
||||
},
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
name = "performance_test_pom_files",
|
||||
srcs = ["io_ray_ray_performance_test_pom"],
|
||||
prefix = "performance_test/",
|
||||
renames = {
|
||||
"io_ray_ray_performance_test_pom.xml": "pom.xml",
|
||||
},
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
name = "serve_pom_files",
|
||||
srcs = ["io_ray_ray_serve_pom"],
|
||||
prefix = "serve/",
|
||||
renames = {
|
||||
"io_ray_ray_serve_pom.xml": "pom.xml",
|
||||
},
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
pkg_zip(
|
||||
name = "pom_files",
|
||||
srcs = [
|
||||
":api_pom_files",
|
||||
":performance_test_pom_files",
|
||||
":runtime_pom_files",
|
||||
":serve_pom_files",
|
||||
":test_pom_files",
|
||||
],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
py_binary(
|
||||
name = "gen_pom_files",
|
||||
srcs = ["gen_pom_files.py"],
|
||||
data = [":pom_files.zip"],
|
||||
visibility = ["//visibility:private"],
|
||||
deps = ["//bazel:gen_extract"],
|
||||
)
|
||||
|
||||
# Generates the dependencies needed by maven.
|
||||
genrule(
|
||||
name = "proto_files",
|
||||
srcs = [
|
||||
":all_java_proto",
|
||||
":serve_java_proto",
|
||||
],
|
||||
outs = ["proto_files.zip"],
|
||||
cmd = """
|
||||
set -euo pipefail
|
||||
|
||||
tmpdir=$$(mktemp -d)
|
||||
|
||||
mkdir -p "$$tmpdir/java/runtime/src/main/java/io/ray/runtime/generated"
|
||||
for f in $(locations :all_java_proto); do
|
||||
unzip -q "$$f" -x META-INF/MANIFEST.MF -d "$$tmpdir/java/runtime/src/main/java"
|
||||
done
|
||||
|
||||
mkdir -p "$$tmpdir/java/serve/src/main/java/io/ray/serve/generated"
|
||||
for f in $(locations :serve_java_proto); do
|
||||
unzip -q "$$f" -x META-INF/MANIFEST.MF -d "$$tmpdir/java/serve/src/main/java"
|
||||
done
|
||||
|
||||
(cd "$$tmpdir/java"; zip -0 -q -r out.zip runtime serve)
|
||||
mv "$$tmpdir/java/out.zip" $@
|
||||
|
||||
rm -rf "$$tmpdir"
|
||||
""",
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
py_binary(
|
||||
name = "gen_proto_files",
|
||||
srcs = ["gen_proto_files.py"],
|
||||
data = [":proto_files.zip"],
|
||||
visibility = ["//visibility:private"],
|
||||
deps = ["//bazel:gen_extract"],
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
name = "maven_deps_files",
|
||||
srcs = [
|
||||
":java_native_deps",
|
||||
],
|
||||
attributes = pkg_attributes(mode = "755"),
|
||||
prefix = select(
|
||||
{
|
||||
"@platforms//os:linux": "runtime/native_dependencies/native/linux",
|
||||
"@platforms//os:macos": "runtime/native_dependencies/native/darwin",
|
||||
},
|
||||
no_match_error = "Unsupported platform",
|
||||
),
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
pkg_zip(
|
||||
name = "maven_deps",
|
||||
srcs = [
|
||||
":maven_deps_files",
|
||||
],
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
py_binary(
|
||||
name = "gen_maven_deps",
|
||||
srcs = ["gen_maven_deps.py"],
|
||||
data = [":maven_deps.zip"],
|
||||
visibility = ["//visibility:private"],
|
||||
deps = ["//bazel:gen_extract"],
|
||||
)
|
||||
|
||||
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 = [
|
||||
"//java:io_ray_ray_api",
|
||||
"//java:io_ray_ray_runtime",
|
||||
"//java:io_ray_ray_serve",
|
||||
],
|
||||
)
|
||||
|
||||
jar_jar(
|
||||
name = "ray_dist_shaded",
|
||||
input_jar = "//java:ray_dist_deploy.jar",
|
||||
rules = "//java:shade_rule",
|
||||
)
|
||||
|
||||
# Shade dependencies in tests fat jar.
|
||||
jar_jar(
|
||||
name = "all_tests_shaded",
|
||||
input_jar = "//java:all_tests_bin_deploy.jar",
|
||||
rules = "//java:shade_rule",
|
||||
)
|
||||
|
||||
pkg_files(
|
||||
name = "ray_java_pkg_files",
|
||||
srcs = [
|
||||
":ray_dist_shaded.jar",
|
||||
],
|
||||
prefix = "ray/jars/",
|
||||
renames = {
|
||||
"ray_dist_shaded.jar": "ray_dist.jar",
|
||||
},
|
||||
)
|
||||
|
||||
pkg_zip(
|
||||
name = "ray_java_pkg_zip",
|
||||
srcs = [
|
||||
":ray_java_pkg_files",
|
||||
],
|
||||
out = "ray_java_pkg.zip",
|
||||
visibility = ["//visibility:private"],
|
||||
)
|
||||
|
||||
py_binary(
|
||||
name = "gen_ray_java_pkg",
|
||||
srcs = ["gen_ray_java_pkg.py"],
|
||||
data = [
|
||||
":ray_java_pkg.zip",
|
||||
],
|
||||
visibility = ["//visibility:private"],
|
||||
deps = [
|
||||
"//bazel:gen_extract",
|
||||
],
|
||||
)
|
||||
Reference in New Issue
Block a user