load("//bazel:ray.bzl", "define_java_module") load("@build_stack_rules_proto//java:java_proto_compile.bzl", "java_proto_compile") exports_files([ "testng.xml", "checkstyle.xml", "checkstyle-suppressions.xml", "streaming/testng.xml", ]) all_modules = [ "api", "runtime", "test", "tutorial", "streaming", ] java_import( name = "all_modules", jars = [ "liborg_ray_ray_" + module + ".jar" for module in all_modules ] + [ "liborg_ray_ray_" + module + "-src.jar" for module in all_modules ] + [ "all_tests_deploy.jar", "all_tests_deploy-src.jar", "streaming_tests_deploy.jar", "streaming_tests_deploy-src.jar", ], deps = [ ":org_ray_ray_" + module for module in all_modules ] + [ ":all_tests", ":streaming_tests", ], ) define_java_module( name = "api", deps = [ "@maven//:org_slf4j_slf4j_log4j12", "@maven//:log4j_log4j", "@maven//:javax_xml_bind_jaxb_api", "@maven//:com_sun_xml_bind_jaxb_core", "@maven//:com_sun_xml_bind_jaxb_impl", ], ) define_java_module( name = "runtime", additional_srcs = [ ":all_java_proto", ], exclude_srcs = [ "runtime/src/main/java/org/ray/runtime/generated/*.java", ], additional_resources = [ ":java_native_deps", ], define_test_lib = True, test_deps = [ ":org_ray_ray_api", ":org_ray_ray_runtime", "@maven//:org_apache_commons_commons_lang3", "@maven//:com_beust_jcommander", "@maven//:org_testng_testng", "@maven//:commons_io_commons_io", ], deps = [ ":org_ray_ray_api", "@plasma//:org_apache_arrow_arrow_plasma", "@maven//:com_google_guava_guava", "@maven//:com_google_protobuf_protobuf_java", "@maven//:com_typesafe_config", "@maven//:commons_io_commons_io", "@maven//:de_ruedigermoeller_fst", "@maven//:org_apache_commons_commons_lang3", "@maven//:org_ow2_asm_asm", "@maven//:org_slf4j_slf4j_api", "@maven//:org_slf4j_slf4j_log4j12", "@maven//:redis_clients_jedis", ], ) define_java_module( name = "tutorial", deps = [ ":org_ray_ray_api", ":org_ray_ray_runtime", "@maven//:com_google_guava_guava", ], ) define_java_module( name = "test", deps = [ ":org_ray_ray_api", ":org_ray_ray_runtime", "@plasma//:org_apache_arrow_arrow_plasma", "@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", "@maven//:org_apache_commons_commons_lang3", "@maven//:org_slf4j_slf4j_api", "@maven//:org_testng_testng", ], ) define_java_module( name = "streaming", deps = [ ":org_ray_ray_api", ":org_ray_ray_runtime", "@maven//:com_google_guava_guava", "@maven//:org_slf4j_slf4j_api", "@maven//:org_slf4j_slf4j_log4j12", ], define_test_lib = True, test_deps = [ ":org_ray_ray_api", ":org_ray_ray_runtime", ":org_ray_ray_streaming", "@maven//:com_beust_jcommander", "@maven//:com_google_guava_guava", "@maven//:org_slf4j_slf4j_api", "@maven//:org_slf4j_slf4j_log4j12", "@maven//:org_testng_testng", ], ) java_binary( name = "all_tests", main_class = "org.testng.TestNG", data = ["testng.xml"], args = ["java/testng.xml"], runtime_deps = [ ":org_ray_ray_test", ":org_ray_ray_runtime_test", ], ) java_binary( name = "streaming_tests", main_class = "org.testng.TestNG", data = ["streaming/testng.xml"], args = ["java/streaming/testng.xml"], runtime_deps = [ ":org_ray_ray_streaming_test", ], ) java_proto_compile( name = "common_java_proto", deps = ["@//:common_proto"], ) java_proto_compile( name = "gcs_java_proto", deps = ["@//:gcs_proto"], ) filegroup( name = "all_java_proto", srcs = [ ":common_java_proto", ":gcs_java_proto", ], ) filegroup( name = "java_native_deps", srcs = [ "//:redis-server", "//:libray_redis_module.so", "//:raylet", "//:raylet_library_java", "@plasma//:plasma_store_server", "@plasma//:plasma_client_java", ], ) # Generates the depedencies needed by maven. genrule( name = "gen_maven_deps", srcs = [ ":all_java_proto", ":java_native_deps", ":copy_pom_file", "@plasma//:org_apache_arrow_arrow_plasma", ], outs = ["gen_maven_deps.out"], cmd = """ set -x WORK_DIR=$$(pwd) # Copy protobuf-generated files. rm -rf $$WORK_DIR/java/runtime/src/main/java/org/ray/runtime/generated for f in $(locations //java:all_java_proto); do unzip $$f -x META-INF/MANIFEST.MF -d $$WORK_DIR/java/runtime/src/main/java done # Copy native dependecies. NATIVE_DEPS_DIR=$$WORK_DIR/java/runtime/native_dependencies/ rm -rf $$NATIVE_DEPS_DIR mkdir -p $$NATIVE_DEPS_DIR for f in $(locations //java:java_native_deps); do chmod +w $$f cp $$f $$NATIVE_DEPS_DIR done # Install plasma jar to local maven repo. mvn install:install-file -Dfile=$(locations @plasma//:org_apache_arrow_arrow_plasma) -Dpackaging=jar \ -DgroupId=org.apache.arrow -DartifactId=arrow-plasma -Dversion=0.13.0-SNAPSHOT echo $$(date) > $@ """, local = 1, tags = ["no-cache"], ) genrule( name = "copy_pom_file", srcs = [ "//java:org_ray_ray_" + module + "_pom" for module in all_modules ], outs = ["copy_pom_file.out"], cmd = """ set -x WORK_DIR=$$(pwd) cp -f $(location //java:org_ray_ray_api_pom) $$WORK_DIR/java/api/pom.xml cp -f $(location //java:org_ray_ray_runtime_pom) $$WORK_DIR/java/runtime/pom.xml cp -f $(location //java:org_ray_ray_tutorial_pom) $$WORK_DIR/java/tutorial/pom.xml cp -f $(location //java:org_ray_ray_test_pom) $$WORK_DIR/java/test/pom.xml cp -f $(location //java:org_ray_ray_streaming_pom) $$WORK_DIR/java/streaming/pom.xml echo $$(date) > $@ """, local = 1, tags = ["no-cache"], )