load("//bazel:ray.bzl", "flatbuffer_java_library", "define_java_module", "gen_java_pom_file") exports_files([ "testng.xml", "checkstyle.xml", "checkstyle-suppressions.xml", "streaming/testng.xml", ]) java_import( name = "all_modules", jars = [ "liborg_ray_ray_api.jar", "liborg_ray_ray_api-src.jar", "liborg_ray_ray_runtime.jar", "liborg_ray_ray_runtime-src.jar", "liborg_ray_ray_tutorial.jar", "liborg_ray_ray_tutorial-src.jar", "liborg_ray_ray_streaming.jar", "liborg_ray_ray_streaming-src.jar", "all_tests_deploy.jar", "all_tests_deploy-src.jar", "streaming_tests_deploy.jar", "streaming_tests_deploy-src.jar", ], deps = [ ":org_ray_ray_api", ":org_ray_ray_runtime", ":org_ray_ray_tutorial", ":org_ray_ray_streaming", ":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 = [ ":generate_java_gcs_fbs", ], 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_github_davidmoten_flatbuffers_java", "@maven//:com_google_guava_guava", "@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//:org_apache_commons_commons_lang3", "@maven//:org_slf4j_slf4j_api", "@maven//:org_testng_testng", "@maven//:com_google_guava_guava", "@maven//:commons_io_commons_io", ], ) 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", ], ) flatbuffers_generated_files = [ "ActorCheckpointData.java", "ActorCheckpointIdData.java", "ActorState.java", "ActorTableData.java", "Arg.java", "ClassTableData.java", "ClientTableData.java", "ConfigTableData.java", "CustomSerializerData.java", "DriverTableData.java", "EntryType.java", "ErrorTableData.java", "ErrorType.java", "FunctionTableData.java", "GcsTableEntry.java", "HeartbeatBatchTableData.java", "HeartbeatTableData.java", "Language.java", "ObjectTableData.java", "ProfileEvent.java", "ProfileTableData.java", "RayResource.java", "ResourcePair.java", "SchedulingState.java", "TablePrefix.java", "TablePubsub.java", "TaskInfo.java", "TaskLeaseData.java", "TaskReconstructionData.java", "TaskTableData.java", "TaskTableTestAndUpdate.java", ] flatbuffer_java_library( name = "java_gcs_fbs", srcs = ["//:gcs_fbs_file"], outs = flatbuffers_generated_files, out_prefix = "", ) genrule( name = "generate_java_gcs_fbs", srcs = [":java_gcs_fbs"], outs = [ "runtime/src/main/java/org/ray/runtime/generated/" + file for file in flatbuffers_generated_files ], cmd = """ for f in $(locations //java:java_gcs_fbs); do chmod +w $$f cp -f $$f $(@D)/runtime/src/main/java/org/ray/runtime/generated done python $$(pwd)/java/modify_generated_java_flatbuffers_files.py $(@D)/.. """, local = 1, ) 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 = [ ":java_native_deps", ":generate_java_gcs_fbs", "@plasma//:org_apache_arrow_arrow_plasma", ], outs = ["gen_maven_deps.out"], cmd = """ set -x WORK_DIR=$$(pwd) # 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 # Copy flatbuffers-generated files GENERATED_DIR=$$WORK_DIR/java/runtime/src/main/java/org/ray/runtime/generated rm -rf $$GENERATED_DIR mkdir -p $$GENERATED_DIR for f in $(locations //java:generate_java_gcs_fbs); do cp $$f $$GENERATED_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, ) # generate pom.xml file for maven compile gen_java_pom_file( name = "api", ) gen_java_pom_file( name = "runtime", ) gen_java_pom_file( name = "tutorial", ) gen_java_pom_file( name = "test", ) genrule( name = "copy_pom_file", srcs = [ "//java:org_ray_ray_api_pom", "//java:org_ray_ray_runtime_pom", "//java:org_ray_ray_tutorial_pom", "//java:org_ray_ray_test_pom", ], 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 echo $$(date) > $@ """, local = 1, tags = ["no-cache"], )