mirror of
https://github.com/vale981/ray
synced 2025-03-06 02:21:39 -05:00
This reverts commit 881032593d
.
This commit is contained in:
parent
881032593d
commit
7740136b93
11 changed files with 95 additions and 347 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -10,7 +10,6 @@
|
||||||
/python/python-driver-*
|
/python/python-driver-*
|
||||||
/thirdparty/pkg/
|
/thirdparty/pkg/
|
||||||
/build/java
|
/build/java
|
||||||
.jar
|
|
||||||
|
|
||||||
# Files generated by flatc should be ignored
|
# Files generated by flatc should be ignored
|
||||||
/src/ray/gcs/format/*_generated.h
|
/src/ray/gcs/format/*_generated.h
|
||||||
|
|
49
.travis.yml
49
.travis.yml
|
@ -99,37 +99,33 @@ matrix:
|
||||||
script:
|
script:
|
||||||
- true # we still need this block to exist, otherwise it will fall back to the global one
|
- true # we still need this block to exist, otherwise it will fall back to the global one
|
||||||
|
|
||||||
# Build Linux wheels and multi-platform jars.
|
# Build Linux wheels.
|
||||||
- os: linux
|
- os: linux
|
||||||
env:
|
env:
|
||||||
- LINUX_WHEELS=1 LINUX_JARS=1
|
- LINUX_WHEELS=1
|
||||||
- PYTHONWARNINGS=ignore
|
- PYTHONWARNINGS=ignore
|
||||||
- RAY_INSTALL_JAVA=1
|
- RAY_INSTALL_JAVA=1
|
||||||
install:
|
install:
|
||||||
- . ./ci/travis/ci.sh init RAY_CI_LINUX_WHEELS_AFFECTED,RAY_CI_JAVA_AFFECTED,RAY_CI_STREAMING_JAVA_AFFECTED
|
- . ./ci/travis/ci.sh init RAY_CI_LINUX_WHEELS_AFFECTED
|
||||||
before_script:
|
before_script:
|
||||||
- . ./ci/travis/ci.sh build
|
- . ./ci/travis/ci.sh build
|
||||||
script:
|
script:
|
||||||
- . ./ci/travis/ci.sh test_wheels
|
- . ./ci/travis/ci.sh test_wheels
|
||||||
- bash ./java/build-jar-multiplatform.sh linux
|
|
||||||
cache: false
|
cache: false
|
||||||
|
|
||||||
# Build MacOS wheels and MacOS jars
|
# Build MacOS wheels.
|
||||||
- os: osx
|
- os: osx
|
||||||
osx_image: xcode7
|
osx_image: xcode7
|
||||||
env:
|
env:
|
||||||
- MAC_WHEELS=1 MULTIPLATFORM_JARS=1
|
- MAC_WHEELS=1
|
||||||
- PYTHONWARNINGS=ignore
|
- PYTHONWARNINGS=ignore
|
||||||
- RAY_INSTALL_JAVA=1
|
- RAY_INSTALL_JAVA=1
|
||||||
install:
|
install:
|
||||||
- . ./ci/travis/ci.sh init RAY_CI_MACOS_WHEELS_AFFECTED,RAY_CI_JAVA_AFFECTED,RAY_CI_STREAMING_JAVA_AFFECTED
|
- . ./ci/travis/ci.sh init RAY_CI_MACOS_WHEELS_AFFECTED
|
||||||
before_script:
|
before_script:
|
||||||
- . ./ci/travis/ci.sh build
|
- . ./ci/travis/ci.sh build
|
||||||
script:
|
script:
|
||||||
- . ./ci/travis/ci.sh test_wheels
|
- . ./ci/travis/ci.sh test_wheels
|
||||||
- bash ./java/build-jar-multiplatform.sh darwin
|
|
||||||
- bash ./java/build-jar-multiplatform.sh multiplatform
|
|
||||||
#- bash ./java/build-jar-multiplatform.sh deploy
|
|
||||||
|
|
||||||
# RLlib: Learning tests (from rllib/tuned_examples/*.yaml).
|
# RLlib: Learning tests (from rllib/tuned_examples/*.yaml).
|
||||||
- os: linux
|
- os: linux
|
||||||
|
@ -396,39 +392,6 @@ deploy:
|
||||||
repo: ray-project/ray
|
repo: ray-project/ray
|
||||||
condition: $LINUX_WHEELS = 1 || $MAC_WHEELS = 1
|
condition: $LINUX_WHEELS = 1 || $MAC_WHEELS = 1
|
||||||
|
|
||||||
# Upload jars so that we can debug locally for every commit
|
|
||||||
- provider: s3
|
|
||||||
edge: true # This supposedly opts in to deploy v2.
|
|
||||||
access_key_id: AKIAU6DMUCJUFL3EX3SM
|
|
||||||
secret_access_key:
|
|
||||||
secure: J1sX71fKFPQhgWzColllxfzcF877ScBZ1cIl71krZ6SO0LKnwsCScpQck5eZOyQo/Iverwye0iKtE87qNsiRi3+V2D9iulSr18T09j7+FjPKfxAmXmjfrNafoMXTDQroSJblCri5vl+DysISPqImJkWTNaYhGJ9QakoSd5djnAopLNWj6PCR3S50baS49+nB5nSIY3jMhtUzlaBdniFPFC81Cxyuafr4pv6McGRfR/dK+ZnPhdGtMnVeIJXB+ooZKQ26mDJKBPka4jm3u1Oa72b/Atu2RO3MwxTg79LTrMxXKh2OcCqhtD2Z3lz1OltvNSunCuwY8AejCJsfSLbM9mGDoz+xhNUWmYNy48YFf+61OY8PXi8S/9Q817yb3GpLbb2l/P+KMgq9eSEiELIOwuYsDxPX5TuAg6dx0wCNgDEBJoThSQjYl6MgJrLrs7p+JBxp3giedHiy0TLa5hCVKTj3euONAXDArYnnT+DvUIOkaeTk5DClRZbZ0sUXhLy//HuT5WJvjFBJJZ0u0f4RLVb5D7DI4uMZr7+yJPDR2AXCyW9YMaBEbmEYbPaKi283jlEyn7R33+AZlnXv0THHwZ4xvjKKG3/fBSXsOUmv5wmUveEqVGDj1mKPGj9NF8iA5qMm2AaZuJpEEBVBZtSlTZt6ZG7rzAJZGNL52t7xuMo=
|
|
||||||
bucket: ray-wheels
|
|
||||||
acl: public_read
|
|
||||||
region: us-west-2
|
|
||||||
local_dir: .jar
|
|
||||||
upload-dir: "jars/$TRAVIS_BRANCH/$TRAVIS_COMMIT"
|
|
||||||
skip_cleanup: true
|
|
||||||
on:
|
|
||||||
repo: ray-project/ray
|
|
||||||
all_branches: true
|
|
||||||
condition: $MULTIPLATFORM_JARS = 1 || $LINUX_JARS=1
|
|
||||||
|
|
||||||
- provider: s3
|
|
||||||
edge: true # This supposedly opts in to deploy v2.
|
|
||||||
access_key_id: AKIAU6DMUCJUFL3EX3SM
|
|
||||||
secret_access_key:
|
|
||||||
secure: J1sX71fKFPQhgWzColllxfzcF877ScBZ1cIl71krZ6SO0LKnwsCScpQck5eZOyQo/Iverwye0iKtE87qNsiRi3+V2D9iulSr18T09j7+FjPKfxAmXmjfrNafoMXTDQroSJblCri5vl+DysISPqImJkWTNaYhGJ9QakoSd5djnAopLNWj6PCR3S50baS49+nB5nSIY3jMhtUzlaBdniFPFC81Cxyuafr4pv6McGRfR/dK+ZnPhdGtMnVeIJXB+ooZKQ26mDJKBPka4jm3u1Oa72b/Atu2RO3MwxTg79LTrMxXKh2OcCqhtD2Z3lz1OltvNSunCuwY8AejCJsfSLbM9mGDoz+xhNUWmYNy48YFf+61OY8PXi8S/9Q817yb3GpLbb2l/P+KMgq9eSEiELIOwuYsDxPX5TuAg6dx0wCNgDEBJoThSQjYl6MgJrLrs7p+JBxp3giedHiy0TLa5hCVKTj3euONAXDArYnnT+DvUIOkaeTk5DClRZbZ0sUXhLy//HuT5WJvjFBJJZ0u0f4RLVb5D7DI4uMZr7+yJPDR2AXCyW9YMaBEbmEYbPaKi283jlEyn7R33+AZlnXv0THHwZ4xvjKKG3/fBSXsOUmv5wmUveEqVGDj1mKPGj9NF8iA5qMm2AaZuJpEEBVBZtSlTZt6ZG7rzAJZGNL52t7xuMo=
|
|
||||||
bucket: ray-wheels
|
|
||||||
acl: public_read
|
|
||||||
region: us-west-2
|
|
||||||
local_dir: .jar
|
|
||||||
upload-dir: "jars/latest"
|
|
||||||
skip_cleanup: true
|
|
||||||
on:
|
|
||||||
repo: ray-project/ray
|
|
||||||
branch: master
|
|
||||||
condition: $MULTIPLATFORM_JARS = 1 || $LINUX_JARS=1
|
|
||||||
|
|
||||||
- provider: script
|
- provider: script
|
||||||
edge: true # This supposedly opts in to deploy v2.
|
edge: true # This supposedly opts in to deploy v2.
|
||||||
script: bash $TRAVIS_BUILD_DIR/ci/travis/build-autoscaler-images.sh || true
|
script: bash $TRAVIS_BUILD_DIR/ci/travis/build-autoscaler-images.sh || true
|
||||||
|
|
18
BUILD.bazel
18
BUILD.bazel
|
@ -1815,7 +1815,6 @@ cc_binary(
|
||||||
}),
|
}),
|
||||||
linkshared = 1,
|
linkshared = 1,
|
||||||
linkstatic = 1,
|
linkstatic = 1,
|
||||||
visibility = ["//java:__subpackages__"],
|
|
||||||
deps = [
|
deps = [
|
||||||
"//:core_worker_lib",
|
"//:core_worker_lib",
|
||||||
"//:global_state_accessor_lib",
|
"//:global_state_accessor_lib",
|
||||||
|
@ -1826,6 +1825,23 @@ cc_binary(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
genrule(
|
||||||
|
name = "core_worker-jni-darwin-compat",
|
||||||
|
srcs = [":libcore_worker_library_java.so"],
|
||||||
|
outs = ["libcore_worker_library_java.dylib"],
|
||||||
|
cmd = "cp $< $@",
|
||||||
|
output_to_bindir = 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "core_worker_library_java",
|
||||||
|
srcs = select({
|
||||||
|
"@bazel_tools//src/conditions:darwin": [":libcore_worker_library_java.dylib"],
|
||||||
|
"//conditions:default": [":libcore_worker_library_java.so"],
|
||||||
|
}),
|
||||||
|
visibility = ["//java:__subpackages__"],
|
||||||
|
)
|
||||||
|
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "python_sources",
|
name = "python_sources",
|
||||||
srcs = glob([
|
srcs = glob([
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_library_public")
|
load("@com_github_google_flatbuffers//:build_defs.bzl", "flatbuffer_library_public")
|
||||||
load("@com_github_checkstyle_java//checkstyle:checkstyle.bzl", "checkstyle_test")
|
load("@com_github_checkstyle_java//checkstyle:checkstyle.bzl", "checkstyle_test")
|
||||||
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
|
|
||||||
load("@bazel_common//tools/maven:pom_file.bzl", "pom_file")
|
load("@bazel_common//tools/maven:pom_file.bzl", "pom_file")
|
||||||
|
|
||||||
COPTS = ["-DRAY_USE_GLOG"] + select({
|
COPTS = ["-DRAY_USE_GLOG"] + select({
|
||||||
|
@ -126,7 +125,7 @@ def copy_to_workspace(name, srcs, dstdir = ""):
|
||||||
dstdir = "." + ("/" + dstdir.replace("\\", "/")).rstrip("/") + "/",
|
dstdir = "." + ("/" + dstdir.replace("\\", "/")).rstrip("/") + "/",
|
||||||
),
|
),
|
||||||
# Keep this batch script equivalent to the Bash script above (or take out the batch script)
|
# Keep this batch script equivalent to the Bash script above (or take out the batch script)
|
||||||
cmd_bat = """
|
cmd_bat = r"""
|
||||||
(
|
(
|
||||||
if not exist {dstdir} mkdir {dstdir}
|
if not exist {dstdir} mkdir {dstdir}
|
||||||
) && (
|
) && (
|
||||||
|
@ -141,57 +140,3 @@ def copy_to_workspace(name, srcs, dstdir = ""):
|
||||||
),
|
),
|
||||||
local = 1,
|
local = 1,
|
||||||
)
|
)
|
||||||
|
|
||||||
def native_java_binary(module_name, name, native_binary_name):
|
|
||||||
"""Copy native binary file to different path based on operating systems"""
|
|
||||||
copy_file(
|
|
||||||
name = name + "_darwin",
|
|
||||||
src = native_binary_name,
|
|
||||||
out = module_name + "/src/main/resources/native/darwin/" + name,
|
|
||||||
)
|
|
||||||
|
|
||||||
copy_file(
|
|
||||||
name = name + "_linux",
|
|
||||||
src = native_binary_name,
|
|
||||||
out = module_name + "/src/main/resources/native/linux/" + name,
|
|
||||||
)
|
|
||||||
|
|
||||||
copy_file(
|
|
||||||
name = name + "_windows",
|
|
||||||
src = native_binary_name,
|
|
||||||
out = module_name + "/src/main/resources/native/windows/" + name,
|
|
||||||
)
|
|
||||||
|
|
||||||
native.filegroup(
|
|
||||||
name = name,
|
|
||||||
srcs = select({
|
|
||||||
"@bazel_tools//src/conditions:darwin": [name + "_darwin"],
|
|
||||||
"@bazel_tools//src/conditions:windows": [name + "_windows"],
|
|
||||||
"//conditions:default": [name + "_linux"],
|
|
||||||
}),
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
)
|
|
||||||
|
|
||||||
def native_java_library(module_name, name, native_library_name):
|
|
||||||
"""Copy native library file to different path based on operating systems"""
|
|
||||||
copy_file(
|
|
||||||
name = name + "_darwin",
|
|
||||||
src = native_library_name,
|
|
||||||
out = module_name + "/src/main/resources/native/darwin/lib{}.dylib".format(name),
|
|
||||||
)
|
|
||||||
|
|
||||||
copy_file(
|
|
||||||
name = name + "_linux",
|
|
||||||
src = native_library_name,
|
|
||||||
out = module_name + "/src/main/resources/native/linux/lib{}.so".format(name),
|
|
||||||
)
|
|
||||||
|
|
||||||
native.filegroup(
|
|
||||||
name = name,
|
|
||||||
srcs = select({
|
|
||||||
"@bazel_tools//src/conditions:darwin": [name + "_darwin"],
|
|
||||||
"@bazel_tools//src/conditions:windows": [],
|
|
||||||
"//conditions:default": [name + "_linux"],
|
|
||||||
}),
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
)
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
load("//bazel:ray.bzl", "define_java_module")
|
load("//bazel:ray.bzl", "define_java_module")
|
||||||
load("//bazel:ray.bzl", "native_java_binary")
|
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
|
||||||
load("//bazel:ray.bzl", "native_java_library")
|
|
||||||
load("@rules_proto_grpc//java:defs.bzl", "java_proto_compile")
|
load("@rules_proto_grpc//java:defs.bzl", "java_proto_compile")
|
||||||
|
|
||||||
exports_files([
|
exports_files([
|
||||||
|
@ -144,38 +143,43 @@ filegroup(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
native_java_binary("runtime", "raylet", "//:raylet")
|
# 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",
|
||||||
|
)
|
||||||
|
|
||||||
native_java_binary("runtime", "plasma_store_server", "//:plasma_store_server")
|
# `//:redis-server`'s full path is `external/com_github_antirez_redis/redis-server`,
|
||||||
|
# This rule removes the prefix, and only keeps `redis-server`.
|
||||||
native_java_binary("runtime", "redis-server", "//:redis-server")
|
copy_file(
|
||||||
|
name = "redis-server-without-prefix",
|
||||||
native_java_binary("runtime", "gcs_server", "//:gcs_server")
|
src = "//:redis-server",
|
||||||
|
out = "redis-server",
|
||||||
native_java_binary("runtime", "libray_redis_module.so", "//:libray_redis_module.so")
|
)
|
||||||
|
|
||||||
native_java_library("runtime", "core_worker_library_java", "//:libcore_worker_library_java.so")
|
|
||||||
|
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "java_native_deps",
|
name = "java_native_deps",
|
||||||
srcs = [
|
srcs = [
|
||||||
":core_worker_library_java",
|
":cp_plasma_store_server",
|
||||||
":gcs_server",
|
":redis-server-without-prefix",
|
||||||
":libray_redis_module.so",
|
"//:core_worker_library_java",
|
||||||
":plasma_store_server",
|
"//:gcs_server",
|
||||||
":raylet",
|
"//:libray_redis_module.so",
|
||||||
":redis-server",
|
"//:raylet",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
# Generates the dependencies needed by maven.
|
# Generates the dependencies needed by maven.
|
||||||
genrule(
|
genrule(
|
||||||
name = "cp_java_generated",
|
name = "gen_maven_deps",
|
||||||
srcs = [
|
srcs = [
|
||||||
":all_java_proto",
|
":all_java_proto",
|
||||||
|
":java_native_deps",
|
||||||
":copy_pom_file",
|
":copy_pom_file",
|
||||||
],
|
],
|
||||||
outs = ["cp_java_generated.out"],
|
outs = ["gen_maven_deps.out"],
|
||||||
cmd = """
|
cmd = """
|
||||||
WORK_DIR="$$(pwd)"
|
WORK_DIR="$$(pwd)"
|
||||||
# Copy protobuf-generated files.
|
# Copy protobuf-generated files.
|
||||||
|
@ -183,30 +187,8 @@ genrule(
|
||||||
for f in $(locations //java:all_java_proto); do
|
for f in $(locations //java:all_java_proto); do
|
||||||
unzip "$$f" -x META-INF/MANIFEST.MF -d "$$WORK_DIR/java/runtime/src/main/java"
|
unzip "$$f" -x META-INF/MANIFEST.MF -d "$$WORK_DIR/java/runtime/src/main/java"
|
||||||
done
|
done
|
||||||
date > $@
|
# Copy native dependecies.
|
||||||
""",
|
NATIVE_DEPS_DIR="$$WORK_DIR/java/runtime/native_dependencies/"
|
||||||
local = 1,
|
|
||||||
tags = ["no-cache"],
|
|
||||||
)
|
|
||||||
|
|
||||||
# Generates the dependencies needed by maven.
|
|
||||||
genrule(
|
|
||||||
name = "gen_maven_deps",
|
|
||||||
srcs = [
|
|
||||||
":cp_java_generated",
|
|
||||||
":java_native_deps",
|
|
||||||
],
|
|
||||||
outs = ["gen_maven_deps.out"],
|
|
||||||
cmd = """
|
|
||||||
WORK_DIR="$${PWD}"
|
|
||||||
# Copy native dependencies.
|
|
||||||
OS_NAME=""
|
|
||||||
case "$${OSTYPE}" in
|
|
||||||
linux*) OS_NAME="linux";;
|
|
||||||
darwin*) OS_NAME="darwin";;
|
|
||||||
*) echo "$${OSTYPE} is not supported currently"; exit 1;;
|
|
||||||
esac
|
|
||||||
NATIVE_DEPS_DIR="$$WORK_DIR/java/runtime/native_dependencies/native/$$OS_NAME"
|
|
||||||
rm -rf "$$NATIVE_DEPS_DIR"
|
rm -rf "$$NATIVE_DEPS_DIR"
|
||||||
mkdir -p "$$NATIVE_DEPS_DIR"
|
mkdir -p "$$NATIVE_DEPS_DIR"
|
||||||
for f in $(locations //java:java_native_deps); do
|
for f in $(locations //java:java_native_deps); do
|
||||||
|
|
|
@ -1,166 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -x
|
|
||||||
|
|
||||||
# Cause the script to exit if a single command fails.
|
|
||||||
set -e
|
|
||||||
|
|
||||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE:-$0}")"; pwd)"
|
|
||||||
WORKSPACE_DIR="${ROOT_DIR}/.."
|
|
||||||
JAVA_DIRS_PATH=('java' 'streaming/java')
|
|
||||||
RAY_JAVA_MODULES=('api' 'runtime')
|
|
||||||
RAY_STREAMING_JAVA_MODULES=('streaming-api' 'streaming-runtime' 'streaming-state')
|
|
||||||
JAR_BASE_DIR="$WORKSPACE_DIR"/.jar
|
|
||||||
cd "$WORKSPACE_DIR/java"
|
|
||||||
# ray jar version, ex: 0.1-SNAPSHORT
|
|
||||||
version=$(python -c "import xml.etree.ElementTree as ET; r = ET.parse('pom.xml').getroot(); print(r.find(r.tag.replace('project', 'version')).text);" | tail -n 1)
|
|
||||||
cd -
|
|
||||||
|
|
||||||
build_jars() {
|
|
||||||
local platform="$1"
|
|
||||||
local bazel_build="${2:-true}"
|
|
||||||
echo "bazel_build $bazel_build"
|
|
||||||
echo "Start building jar for $platform"
|
|
||||||
local JAR_DIR="$JAR_BASE_DIR/$platform"
|
|
||||||
mkdir -p "$JAR_DIR"
|
|
||||||
for p in "${JAVA_DIRS_PATH[@]}"; do
|
|
||||||
cd "$WORKSPACE_DIR/$p"
|
|
||||||
if [[ $bazel_build == "true" ]]; then
|
|
||||||
echo "Starting building java native dependencies for $p"
|
|
||||||
bazel build gen_maven_deps
|
|
||||||
echo "Finished building java native dependencies for $p"
|
|
||||||
fi
|
|
||||||
echo "Start building jars for $p"
|
|
||||||
mvn -T16 clean package install -Dmaven.test.skip=true -Dcheckstyle.skip
|
|
||||||
mvn -T16 source:jar -Dmaven.test.skip=true -Dcheckstyle.skip
|
|
||||||
echo "Finished building jars for $p"
|
|
||||||
done
|
|
||||||
copy_jars "$JAR_DIR"
|
|
||||||
# ray runtime jar and streaming runtime jar are in a dir specifed by maven-jar-plugin
|
|
||||||
cp -f "$WORKSPACE_DIR"/build/java/ray*.jar "$JAR_DIR"
|
|
||||||
cp -f "$WORKSPACE_DIR"/streaming/build/java/streaming*.jar "$JAR_DIR"
|
|
||||||
echo "Finished building jar for $platform"
|
|
||||||
}
|
|
||||||
|
|
||||||
copy_jars() {
|
|
||||||
local JAR_DIR="$1"
|
|
||||||
echo "Copy to dir $JAR_DIR"
|
|
||||||
for module in "${RAY_JAVA_MODULES[@]}"; do
|
|
||||||
cp -f "$WORKSPACE_DIR"/java/"$module"/target/*jar "$JAR_DIR"
|
|
||||||
done
|
|
||||||
for module in "${RAY_STREAMING_JAVA_MODULES[@]}"; do
|
|
||||||
cp -f "$WORKSPACE_DIR"/streaming/java/"$module"/target/*jar "$JAR_DIR"
|
|
||||||
done
|
|
||||||
# ray runtime jar and streaming runtime jar are in a dir specifed by maven-jar-plugin
|
|
||||||
cp -f "$WORKSPACE_DIR"/build/java/ray*.jar "$JAR_DIR"
|
|
||||||
cp -f "$WORKSPACE_DIR"/streaming/build/java/streaming*.jar "$JAR_DIR"
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function assuem all dependencies are installed already.
|
|
||||||
build_jars_linux() {
|
|
||||||
build_jars linux
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function assuem all dependencies are installed already.
|
|
||||||
build_jars_darwin() {
|
|
||||||
build_jars darwin
|
|
||||||
}
|
|
||||||
|
|
||||||
build_jars_multiplatform() {
|
|
||||||
if [[ "${TRAVIS_REPO_SLUG-}" != "ray-project/ray" || "${TRAVIS_PULL_REQUEST-}" != "false" ]]; then
|
|
||||||
echo "Skip build multiplatform jars when this build is from a pull request or
|
|
||||||
not a build for commit in ray-project/ray."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
download_jars "ray-runtime-$version.jar" "streaming-runtime-$version.jar"
|
|
||||||
prepare_native
|
|
||||||
build_jars multiplatform false
|
|
||||||
}
|
|
||||||
|
|
||||||
# Download linux/windows ray-related jar from s3
|
|
||||||
# This function assumes darwin jars exist already.
|
|
||||||
download_jars() {
|
|
||||||
local wait_time=0
|
|
||||||
local sleep_time_units=60
|
|
||||||
|
|
||||||
for f in "$@"; do
|
|
||||||
for os in 'linux' 'windows'; do
|
|
||||||
if [[ "$os" == "windows" ]]; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
local url="https://ray-wheels.s3-us-west-2.amazonaws.com/jars/$TRAVIS_BRANCH/$TRAVIS_COMMIT/$os/$f"
|
|
||||||
local dest_file="$JAR_BASE_DIR/$os/$f"
|
|
||||||
echo "Jar url: $url"
|
|
||||||
echo "Jar dest_file: $dest_file"
|
|
||||||
while true; do
|
|
||||||
if ! wget -q "$url" -O "$dest_file">/dev/null; then
|
|
||||||
echo "Waiting $url to be ready for $wait_time seconds..."
|
|
||||||
sleep $sleep_time_units
|
|
||||||
wait_time=$((wait_time + sleep_time_units))
|
|
||||||
if [[ wait_time == $((60 * 120)) ]]; then
|
|
||||||
echo "Download $url timeout"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Download $url to $dest_file succeed"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# prepare native binaries and libraries.
|
|
||||||
prepare_native() {
|
|
||||||
for os in 'darwin' 'linux'; do
|
|
||||||
cd "$JAR_BASE_DIR/$os"
|
|
||||||
jar xf "ray-runtime-$version.jar" "native/$os"
|
|
||||||
local native_dir="$WORKSPACE_DIR/java/runtime/native_dependencies/native/$os"
|
|
||||||
mkdir -p "$native_dir"
|
|
||||||
rm -rf "$native_dir"
|
|
||||||
mv "native/$os" "$native_dir"
|
|
||||||
jar xf "streaming-runtime-$version.jar" "native/$os"
|
|
||||||
local native_dir="$WORKSPACE_DIR/streaming/java/streaming-runtime/native_dependencies/native/$os"
|
|
||||||
mkdir -p "$native_dir"
|
|
||||||
rm -rf "$native_dir"
|
|
||||||
mv "native/$os" "$native_dir"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# This function assume all multiplatform binaries are prepared already.
|
|
||||||
deploy_jars() {
|
|
||||||
if [ "${TRAVIS-}" = true ]; then
|
|
||||||
if [[ "$TRAVIS_REPO_SLUG" != "ray-project/ray" ||
|
|
||||||
"$TRAVIS_PULL_REQUEST" != "false" || "$TRAVIS_BRANCH" != "master" ]]; then
|
|
||||||
echo "Skip deploying jars when this build is from a pull request or
|
|
||||||
not a build for commit of master branch in ray-project/ray"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
echo "Start deploying jars"
|
|
||||||
cd "$WORKSPACE_DIR"/java
|
|
||||||
mvn -T16 deploy -Dmaven.test.skip=true -Dcheckstyle.skip
|
|
||||||
cd "$WORKSPACE_DIR"/streaming/java
|
|
||||||
mvn -T16 deploy -Dmaven.test.skip=true -Dcheckstyle.skip
|
|
||||||
echo "Finished deploying jars"
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
linux) # build jars that only contains Linux binaries.
|
|
||||||
build_jars_linux
|
|
||||||
;;
|
|
||||||
darwin) # build jars that only contains macos binaries.
|
|
||||||
build_jars_darwin
|
|
||||||
;;
|
|
||||||
multiplatform) # downloading jars of multiple platforms and packaging them into one jar.
|
|
||||||
build_jars_multiplatform
|
|
||||||
;;
|
|
||||||
deploy) # Deploy jars to maven repository.
|
|
||||||
deploy_jars
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Execute command $*"
|
|
||||||
"$@"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ import io.ray.runtime.runner.RunManager;
|
||||||
import io.ray.runtime.task.NativeTaskExecutor;
|
import io.ray.runtime.task.NativeTaskExecutor;
|
||||||
import io.ray.runtime.task.NativeTaskSubmitter;
|
import io.ray.runtime.task.NativeTaskSubmitter;
|
||||||
import io.ray.runtime.task.TaskExecutor;
|
import io.ray.runtime.task.TaskExecutor;
|
||||||
import io.ray.runtime.util.BinaryFileUtil;
|
|
||||||
import io.ray.runtime.util.JniUtils;
|
import io.ray.runtime.util.JniUtils;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -50,7 +49,7 @@ public final class RayNativeRuntime extends AbstractRayRuntime {
|
||||||
rayConfig.setSessionDir(sessionDir);
|
rayConfig.setSessionDir(sessionDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
JniUtils.loadLibrary(BinaryFileUtil.CORE_WORKER_JAVA_LIBRARY, true);
|
JniUtils.loadLibrary("core_worker_library_java", true);
|
||||||
LOGGER.debug("Native libraries loaded.");
|
LOGGER.debug("Native libraries loaded.");
|
||||||
// Reset library path at runtime.
|
// Reset library path at runtime.
|
||||||
resetLibraryPath(rayConfig);
|
resetLibraryPath(rayConfig);
|
||||||
|
|
|
@ -237,7 +237,7 @@ public class RunManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
// See `src/ray/gcs/gcs_server/gcs_server_main.cc` for the meaning of each parameter.
|
// See `src/ray/gcs/gcs_server/gcs_server_main.cc` for the meaning of each parameter.
|
||||||
final File gcsServerFile = BinaryFileUtil.getNativeFile(
|
final File gcsServerFile = BinaryFileUtil.getFile(
|
||||||
rayConfig.sessionDir, BinaryFileUtil.GCS_SERVER_BINARY_NAME);
|
rayConfig.sessionDir, BinaryFileUtil.GCS_SERVER_BINARY_NAME);
|
||||||
Preconditions.checkState(gcsServerFile.setExecutable(true));
|
Preconditions.checkState(gcsServerFile.setExecutable(true));
|
||||||
List<String> command = ImmutableList.of(
|
List<String> command = ImmutableList.of(
|
||||||
|
@ -254,7 +254,7 @@ public class RunManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String startRedisInstance(String ip, int port, String password, Integer shard) {
|
private String startRedisInstance(String ip, int port, String password, Integer shard) {
|
||||||
final File redisServerFile = BinaryFileUtil.getNativeFile(
|
final File redisServerFile = BinaryFileUtil.getFile(
|
||||||
rayConfig.sessionDir, BinaryFileUtil.REDIS_SERVER_BINARY_NAME);
|
rayConfig.sessionDir, BinaryFileUtil.REDIS_SERVER_BINARY_NAME);
|
||||||
Preconditions.checkState(redisServerFile.setExecutable(true));
|
Preconditions.checkState(redisServerFile.setExecutable(true));
|
||||||
List<String> command = Lists.newArrayList(
|
List<String> command = Lists.newArrayList(
|
||||||
|
@ -268,7 +268,7 @@ public class RunManager {
|
||||||
"warning",
|
"warning",
|
||||||
"--loadmodule",
|
"--loadmodule",
|
||||||
// The redis module file.
|
// The redis module file.
|
||||||
BinaryFileUtil.getNativeFile(
|
BinaryFileUtil.getFile(
|
||||||
rayConfig.sessionDir, BinaryFileUtil.REDIS_MODULE_LIBRARY_NAME).getAbsolutePath()
|
rayConfig.sessionDir, BinaryFileUtil.REDIS_MODULE_LIBRARY_NAME).getAbsolutePath()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -305,7 +305,7 @@ public class RunManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
// See `src/ray/raylet/main.cc` for the meaning of each parameter.
|
// See `src/ray/raylet/main.cc` for the meaning of each parameter.
|
||||||
final File rayletFile = BinaryFileUtil.getNativeFile(
|
final File rayletFile = BinaryFileUtil.getFile(
|
||||||
rayConfig.sessionDir, BinaryFileUtil.RAYLET_BINARY_NAME);
|
rayConfig.sessionDir, BinaryFileUtil.RAYLET_BINARY_NAME);
|
||||||
Preconditions.checkState(rayletFile.setExecutable(true));
|
Preconditions.checkState(rayletFile.setExecutable(true));
|
||||||
List<String> command = ImmutableList.of(
|
List<String> command = ImmutableList.of(
|
||||||
|
@ -373,7 +373,7 @@ public class RunManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startObjectStore() {
|
private void startObjectStore() {
|
||||||
final File objectStoreFile = BinaryFileUtil.getNativeFile(
|
final File objectStoreFile = BinaryFileUtil.getFile(
|
||||||
rayConfig.sessionDir, BinaryFileUtil.PLASMA_STORE_SERVER_BINARY_NAME);
|
rayConfig.sessionDir, BinaryFileUtil.PLASMA_STORE_SERVER_BINARY_NAME);
|
||||||
Preconditions.checkState(objectStoreFile.setExecutable(true));
|
Preconditions.checkState(objectStoreFile.setExecutable(true));
|
||||||
List<String> command = ImmutableList.of(
|
List<String> command = ImmutableList.of(
|
||||||
|
|
|
@ -9,7 +9,6 @@ import java.nio.channels.FileLock;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.lang3.SystemUtils;
|
|
||||||
|
|
||||||
public class BinaryFileUtil {
|
public class BinaryFileUtil {
|
||||||
public static final String REDIS_SERVER_BINARY_NAME = "redis-server";
|
public static final String REDIS_SERVER_BINARY_NAME = "redis-server";
|
||||||
|
@ -22,10 +21,11 @@ public class BinaryFileUtil {
|
||||||
|
|
||||||
public static final String REDIS_MODULE_LIBRARY_NAME = "libray_redis_module.so";
|
public static final String REDIS_MODULE_LIBRARY_NAME = "libray_redis_module.so";
|
||||||
|
|
||||||
public static final String CORE_WORKER_JAVA_LIBRARY = "core_worker_library_java";
|
public static final String CORE_WORKER_JAVA_LIBRARY =
|
||||||
|
System.mapLibraryName("core_worker_library_java");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extract a platform-native resource file to <code>destDir</code>.
|
* Extract a resource file to <code>destDir</code>.
|
||||||
* Note that this a process-safe operation. If multi processes extract the file to same
|
* Note that this a process-safe operation. If multi processes extract the file to same
|
||||||
* directory concurrently, this operation will be protected by a file lock.
|
* directory concurrently, this operation will be protected by a file lock.
|
||||||
*
|
*
|
||||||
|
@ -33,7 +33,7 @@ public class BinaryFileUtil {
|
||||||
* @param fileName resource file name
|
* @param fileName resource file name
|
||||||
* @return extracted resource file
|
* @return extracted resource file
|
||||||
*/
|
*/
|
||||||
public static File getNativeFile(String destDir, String fileName) {
|
public static File getFile(String destDir, String fileName) {
|
||||||
final File dir = new File(destDir);
|
final File dir = new File(destDir);
|
||||||
if (!dir.exists()) {
|
if (!dir.exists()) {
|
||||||
try {
|
try {
|
||||||
|
@ -45,26 +45,17 @@ public class BinaryFileUtil {
|
||||||
String lockFilePath = destDir + File.separator + "file_lock";
|
String lockFilePath = destDir + File.separator + "file_lock";
|
||||||
try (FileLock ignored = new RandomAccessFile(lockFilePath, "rw")
|
try (FileLock ignored = new RandomAccessFile(lockFilePath, "rw")
|
||||||
.getChannel().lock()) {
|
.getChannel().lock()) {
|
||||||
String resourceDir;
|
|
||||||
if (SystemUtils.IS_OS_MAC) {
|
|
||||||
resourceDir = "native/darwin/";
|
|
||||||
} else if (SystemUtils.IS_OS_LINUX) {
|
|
||||||
resourceDir = "native/linux/";
|
|
||||||
} else {
|
|
||||||
throw new UnsupportedOperationException("Unsupported os " + SystemUtils.OS_NAME);
|
|
||||||
}
|
|
||||||
String resourcePath = resourceDir + fileName;
|
|
||||||
File file = new File(String.format("%s/%s", destDir, fileName));
|
File file = new File(String.format("%s/%s", destDir, fileName));
|
||||||
if (file.exists()) {
|
if (file.exists()) {
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
// File does not exist.
|
// File does not exist.
|
||||||
try (InputStream is = BinaryFileUtil.class.getResourceAsStream("/" + resourcePath)) {
|
try (InputStream is = BinaryFileUtil.class.getResourceAsStream("/" + fileName)) {
|
||||||
Preconditions.checkNotNull(is, "{} doesn't exist.", resourcePath);
|
Preconditions.checkNotNull(is, "{} doesn't exist.", fileName);
|
||||||
Files.copy(is, Paths.get(file.getCanonicalPath()));
|
Files.copy(is, Paths.get(file.getCanonicalPath()));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException("Couldn't get temp file from resource " + resourcePath, e);
|
throw new RuntimeException("Couldn't get temp file from resource " + fileName, e);
|
||||||
}
|
}
|
||||||
return file;
|
return file;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
|
@ -39,7 +39,7 @@ public class JniUtils {
|
||||||
// Load native library.
|
// Load native library.
|
||||||
String fileName = System.mapLibraryName(libraryName);
|
String fileName = System.mapLibraryName(libraryName);
|
||||||
final String sessionDir = RayConfig.getInstance().sessionDir;
|
final String sessionDir = RayConfig.getInstance().sessionDir;
|
||||||
final File file = BinaryFileUtil.getNativeFile(sessionDir, fileName);
|
final File file = BinaryFileUtil.getFile(sessionDir, fileName);
|
||||||
|
|
||||||
if (exportSymbols) {
|
if (exportSymbols) {
|
||||||
// Expose library symbols using RTLD_GLOBAL which may be depended by other shared
|
// Expose library symbols using RTLD_GLOBAL which may be depended by other shared
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
load("//bazel:ray.bzl", "define_java_module")
|
load("//bazel:ray.bzl", "define_java_module")
|
||||||
load("//bazel:ray.bzl", "native_java_binary")
|
|
||||||
load("//bazel:ray.bzl", "native_java_library")
|
|
||||||
load("@rules_proto_grpc//java:defs.bzl", "java_proto_compile")
|
load("@rules_proto_grpc//java:defs.bzl", "java_proto_compile")
|
||||||
|
|
||||||
exports_files([
|
exports_files([
|
||||||
|
@ -84,13 +82,40 @@ define_java_module(
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
native_java_library("streaming-runtime", "streaming_java", "//streaming:libstreaming_java.so")
|
# `//streaming:streaming_java` will be located in jar `streaming` directory,
|
||||||
|
# but we need it located in jar root path.
|
||||||
|
# resource_strip_prefix = "streaming" will make other resources file located in wrong path.
|
||||||
|
# So we copy libs explicitly to remove `streaming` path.
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "java_native_deps",
|
name = "java_native_deps",
|
||||||
srcs = [":streaming_java"],
|
srcs = [":streaming_java"],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
filegroup(
|
||||||
|
name = "streaming_java",
|
||||||
|
srcs = select({
|
||||||
|
"@bazel_tools//src/conditions:darwin": [":streaming_java_darwin"],
|
||||||
|
"//conditions:default": [":streaming_java_linux"],
|
||||||
|
}),
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
)
|
||||||
|
|
||||||
|
genrule(
|
||||||
|
name = "streaming_java_darwin",
|
||||||
|
srcs = ["//streaming:libstreaming_java.so"],
|
||||||
|
outs = ["libstreaming_java.dylib"],
|
||||||
|
cmd = "cp $< $@",
|
||||||
|
output_to_bindir = 1,
|
||||||
|
)
|
||||||
|
|
||||||
|
genrule(
|
||||||
|
name = "streaming_java_linux",
|
||||||
|
srcs = ["//streaming:libstreaming_java.so"],
|
||||||
|
outs = ["libstreaming_java.so"],
|
||||||
|
cmd = "cp $< $@",
|
||||||
|
output_to_bindir = 1,
|
||||||
|
)
|
||||||
|
|
||||||
define_java_module(
|
define_java_module(
|
||||||
name = "streaming-runtime",
|
name = "streaming-runtime",
|
||||||
additional_resources = [
|
additional_resources = [
|
||||||
|
@ -226,15 +251,9 @@ genrule(
|
||||||
],
|
],
|
||||||
outs = ["gen_maven_deps.out"],
|
outs = ["gen_maven_deps.out"],
|
||||||
cmd = """
|
cmd = """
|
||||||
WORK_DIR="$${PWD}"
|
WORK_DIR="$$(pwd)"
|
||||||
# Copy native dependencies.
|
# Copy native dependencies.
|
||||||
OS_NAME=""
|
NATIVE_DEPS_DIR="$$WORK_DIR/streaming/java/streaming-runtime/native_dependencies/"
|
||||||
case "$${OSTYPE}" in
|
|
||||||
linux*) OS_NAME="linux";;
|
|
||||||
darwin*) OS_NAME="darwin";;
|
|
||||||
*) echo "$${OSTYPE} is not supported currently"; exit 1;;
|
|
||||||
esac
|
|
||||||
NATIVE_DEPS_DIR="$$WORK_DIR/streaming/java/streaming-runtime/native_dependencies/native/$$OS_NAME"
|
|
||||||
rm -rf "$$NATIVE_DEPS_DIR"
|
rm -rf "$$NATIVE_DEPS_DIR"
|
||||||
mkdir -p "$$NATIVE_DEPS_DIR"
|
mkdir -p "$$NATIVE_DEPS_DIR"
|
||||||
for f in $(locations //streaming/java:java_native_deps); do
|
for f in $(locations //streaming/java:java_native_deps); do
|
||||||
|
|
Loading…
Add table
Reference in a new issue