BUILD.bazel 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. load("//bazel:ray.bzl", "define_java_module")
  2. load("//bazel:ray.bzl", "native_java_binary")
  3. load("//bazel:ray.bzl", "native_java_library")
  4. load("@rules_proto_grpc//java:defs.bzl", "java_proto_compile")
  5. exports_files([
  6. "testng.xml",
  7. ])
  8. all_modules = [
  9. "streaming-state",
  10. "streaming-api",
  11. "streaming-runtime",
  12. ]
  13. java_import(
  14. name = "all_modules",
  15. jars = [
  16. "libio_ray_ray_" + module + ".jar"
  17. for module in all_modules
  18. ] + [
  19. "libio_ray_ray_" + module + "-src.jar"
  20. for module in all_modules
  21. ] + [
  22. "all_streaming_tests_deploy.jar",
  23. "all_streaming_tests_deploy-src.jar",
  24. ],
  25. deps = [
  26. ":io_ray_ray_" + module
  27. for module in all_modules
  28. ] + [
  29. ":all_streaming_tests",
  30. ],
  31. )
  32. define_java_module(
  33. name = "streaming-api",
  34. define_test_lib = True,
  35. test_deps = [
  36. "//java:io_ray_ray_api",
  37. ":io_ray_ray_streaming-state",
  38. ":io_ray_ray_streaming-api",
  39. "@maven//:com_google_guava_guava",
  40. "@maven//:org_apache_logging_log4j_log4j_api",
  41. "@maven//:org_apache_logging_log4j_log4j_core",
  42. "@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
  43. "@maven//:org_slf4j_slf4j_api",
  44. "@maven//:org_testng_testng",
  45. "@maven//:org_yaml_snakeyaml",
  46. "@ray_streaming_maven//:org_apache_commons_commons_lang3",
  47. ],
  48. visibility = ["//visibility:public"],
  49. deps = [
  50. ":io_ray_ray_streaming-state",
  51. "//java:io_ray_ray_api",
  52. "//java:io_ray_ray_runtime",
  53. "@maven//:com_google_guava_guava",
  54. "@maven//:org_apache_logging_log4j_log4j_api",
  55. "@maven//:org_apache_logging_log4j_log4j_core",
  56. "@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
  57. "@maven//:org_slf4j_slf4j_api",
  58. "@ray_streaming_maven//:com_google_code_findbugs_jsr305",
  59. "@ray_streaming_maven//:com_google_code_gson_gson",
  60. "@ray_streaming_maven//:org_apache_commons_commons_lang3",
  61. ],
  62. )
  63. define_java_module(
  64. name = "streaming-state",
  65. define_test_lib = True,
  66. test_deps = [
  67. ":io_ray_ray_streaming-state",
  68. "@maven//:com_google_guava_guava",
  69. "@maven//:org_apache_logging_log4j_log4j_api",
  70. "@maven//:org_apache_logging_log4j_log4j_core",
  71. "@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
  72. "@maven//:org_slf4j_slf4j_api",
  73. "@maven//:org_testng_testng",
  74. "@maven//:de_ruedigermoeller_fst",
  75. "@maven//:org_yaml_snakeyaml",
  76. "@ray_streaming_maven//:org_apache_commons_commons_lang3",
  77. "@ray_streaming_maven//:org_mockito_mockito_all",
  78. ],
  79. visibility = ["//visibility:public"],
  80. deps = [
  81. "@maven//:com_google_guava_guava",
  82. "@maven//:de_ruedigermoeller_fst",
  83. "@maven//:org_apache_logging_log4j_log4j_api",
  84. "@maven//:org_apache_logging_log4j_log4j_core",
  85. "@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
  86. "@maven//:org_slf4j_slf4j_api",
  87. "@ray_streaming_maven//:org_apache_commons_commons_lang3",
  88. ],
  89. )
  90. native_java_library("streaming-runtime", "streaming_java", "//streaming:libstreaming_java.so")
  91. filegroup(
  92. name = "java_native_deps",
  93. srcs = [":streaming_java"],
  94. )
  95. define_java_module(
  96. name = "streaming-runtime",
  97. additional_resources = [
  98. ":java_native_deps",
  99. ],
  100. additional_srcs = [
  101. ":all_java_proto",
  102. ],
  103. define_test_lib = True,
  104. exclude_srcs = [
  105. "streaming-runtime/src/main/java/io/ray/streaming/runtime/generated/*.java",
  106. ],
  107. test_deps = [
  108. "//java:io_ray_ray_api",
  109. "//java:io_ray_ray_runtime",
  110. ":io_ray_ray_streaming-state",
  111. ":io_ray_ray_streaming-api",
  112. ":io_ray_ray_streaming-runtime",
  113. "@maven//:com_google_guava_guava",
  114. "@maven//:de_ruedigermoeller_fst",
  115. "@maven//:org_apache_logging_log4j_log4j_api",
  116. "@maven//:org_apache_logging_log4j_log4j_core",
  117. "@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
  118. "@maven//:org_slf4j_slf4j_api",
  119. "@maven//:org_testng_testng",
  120. "@maven//:org_yaml_snakeyaml",
  121. "@ray_streaming_maven//:com_google_code_findbugs_jsr305",
  122. "@ray_streaming_maven//:org_aeonbits_owner_owner",
  123. "@ray_streaming_maven//:org_apache_commons_commons_lang3",
  124. "@ray_streaming_maven//:org_mockito_mockito_all",
  125. "@ray_streaming_maven//:org_powermock_powermock_api_mockito",
  126. "@ray_streaming_maven//:org_powermock_powermock_module_testng",
  127. ],
  128. visibility = ["//visibility:public"],
  129. deps = [
  130. ":io_ray_ray_streaming-api",
  131. ":io_ray_ray_streaming-state",
  132. "//java:io_ray_ray_api",
  133. "//java:io_ray_ray_runtime",
  134. "@maven//:com_google_guava_guava",
  135. "@maven//:com_google_protobuf_protobuf_java",
  136. "@maven//:commons_io_commons_io",
  137. "@maven//:de_ruedigermoeller_fst",
  138. "@maven//:org_apache_commons_commons_lang3",
  139. "@maven//:org_apache_logging_log4j_log4j_api",
  140. "@maven//:org_apache_logging_log4j_log4j_core",
  141. "@maven//:org_apache_logging_log4j_log4j_slf4j_impl",
  142. "@maven//:org_msgpack_msgpack_core",
  143. "@maven//:org_slf4j_slf4j_api",
  144. "@ray_streaming_maven//:com_github_davidmoten_flatbuffers_java",
  145. "@ray_streaming_maven//:com_google_code_findbugs_jsr305",
  146. "@ray_streaming_maven//:commons_collections_commons_collections",
  147. "@ray_streaming_maven//:org_aeonbits_owner_owner",
  148. ],
  149. )
  150. java_binary(
  151. name = "all_streaming_tests",
  152. args = ["streaming/java/testng.xml"],
  153. data = ["testng.xml"],
  154. main_class = "org.testng.TestNG",
  155. runtime_deps = [
  156. ":io_ray_ray_streaming-api_test",
  157. ":io_ray_ray_streaming-runtime",
  158. ":io_ray_ray_streaming-runtime_test",
  159. ":io_ray_ray_streaming-state",
  160. "//java:io_ray_ray_runtime",
  161. "@maven//:org_testng_testng",
  162. "@maven//:org_yaml_snakeyaml",
  163. "@ray_streaming_maven//:org_mockito_mockito_all",
  164. "@ray_streaming_maven//:org_powermock_powermock_api_mockito",
  165. "@ray_streaming_maven//:org_powermock_powermock_module_testng",
  166. ],
  167. )
  168. # proto buffer
  169. java_proto_compile(
  170. name = "streaming_java_proto",
  171. deps = ["//streaming:streaming_proto"],
  172. )
  173. java_proto_compile(
  174. name = "remote_call_java_proto",
  175. deps = ["//streaming:remote_call_proto"],
  176. )
  177. filegroup(
  178. name = "all_java_proto",
  179. srcs = [
  180. ":remote_call_java_proto",
  181. ":streaming_java_proto",
  182. ],
  183. )
  184. genrule(
  185. name = "copy_pom_file",
  186. srcs = [
  187. "//streaming/java:io_ray_ray_" + module + "_pom"
  188. for module in all_modules
  189. ],
  190. outs = ["copy_pom_file.out"],
  191. cmd = """
  192. WORK_DIR="$$(pwd)"
  193. cp -f $(location //streaming/java:io_ray_ray_streaming-api_pom) "$$WORK_DIR/streaming/java/streaming-api/pom.xml"
  194. cp -f $(location //streaming/java:io_ray_ray_streaming-runtime_pom) "$$WORK_DIR/streaming/java/streaming-runtime/pom.xml"
  195. cp -f $(location //streaming/java:io_ray_ray_streaming-state_pom) "$$WORK_DIR/streaming/java/streaming-state/pom.xml"
  196. date > $@
  197. """,
  198. local = 1,
  199. tags = ["no-cache"],
  200. )
  201. genrule(
  202. name = "cp_java_generated",
  203. srcs = [
  204. ":all_java_proto",
  205. ":copy_pom_file",
  206. ],
  207. outs = ["cp_java_generated.out"],
  208. cmd = """
  209. WORK_DIR="$$(pwd)"
  210. GENERATED_DIR="$$WORK_DIR/streaming/java/streaming-runtime/src/main/java/io/ray/streaming/runtime/generated"
  211. rm -rf "$$GENERATED_DIR"
  212. mkdir -p "$$GENERATED_DIR"
  213. # Copy protobuf-generated files.
  214. for f in $(locations //streaming/java:all_java_proto); do
  215. unzip -q -o "$$f" -x META-INF/MANIFEST.MF -d "$$WORK_DIR/streaming/java/streaming-runtime/src/main/java"
  216. done
  217. # remove third party protobuf
  218. rm -rf $$WORK_DIR/streaming/java/streaming-runtime/src/main/java/com/google/protobuf/
  219. date > $@
  220. """,
  221. local = 1,
  222. tags = ["no-cache"],
  223. )
  224. # Generates the dependencies needed by maven.
  225. genrule(
  226. name = "gen_maven_deps",
  227. srcs = [
  228. ":java_native_deps",
  229. ":cp_java_generated",
  230. ],
  231. outs = ["gen_maven_deps.out"],
  232. cmd = """
  233. WORK_DIR="$${PWD}"
  234. # Copy native dependencies.
  235. OS_NAME=""
  236. case "$${OSTYPE}" in
  237. linux*) OS_NAME="linux";;
  238. darwin*) OS_NAME="darwin";;
  239. *) echo "$${OSTYPE} is not supported currently"; exit 1;;
  240. esac
  241. NATIVE_DEPS_DIR="$$WORK_DIR/streaming/java/streaming-runtime/native_dependencies/native/$$OS_NAME"
  242. rm -rf "$$NATIVE_DEPS_DIR"
  243. mkdir -p "$$NATIVE_DEPS_DIR"
  244. for f in $(locations //streaming/java:java_native_deps); do
  245. chmod +w "$$f"
  246. cp "$$f" "$$NATIVE_DEPS_DIR"
  247. done
  248. date > $@
  249. """,
  250. local = 1,
  251. tags = ["no-cache"],
  252. visibility = ["//visibility:public"],
  253. )