diff --git a/WORKSPACE b/WORKSPACE index 2d610b9e2071c7..13ae05e4370d2f 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -119,6 +119,8 @@ distdir_tar( "android_tools_pkg-0.7.tar.gz", # bazelbuild/platforms "441afe1bfdadd6236988e9cac159df6b5a9f5a98.zip", + # bazelbuild/rules_java + "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip", ], dirname = "derived/distdir", sha256 = { @@ -134,6 +136,8 @@ distdir_tar( "android_tools_pkg-0.7.tar.gz": "a8e48f2fdee2c34b31f45bd47ce050a75ac774f19e0a1f6694fa49fc11d88718", # built at 6bb5ae2a8353d75867ac9136d374df7916450449 # bazelbuild/platforms "441afe1bfdadd6236988e9cac159df6b5a9f5a98.zip": "a07fe5e75964361885db725039c2ba673f0ee0313d971ae4f50c9b18cd28b0b5", + # bazelbuild/rules_java + "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": "bc81f1ba47ef5cc68ad32225c3d0e70b8c6f6077663835438da8d5733f917598", }, urls = { "e0b0291b2c51fbe5a7cfa14473a1ae850f94f021.zip": [ @@ -176,6 +180,10 @@ distdir_tar( "https://mirror.bazel.build/github.com/bazelbuild/platforms/archive/441afe1bfdadd6236988e9cac159df6b5a9f5a98.zip", "https://github.com/bazelbuild/platforms/archive/441afe1bfdadd6236988e9cac159df6b5a9f5a98.zip", ], + # bazelbuild/rules_java + "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": [ + "https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip", + ] }, ) @@ -418,6 +426,8 @@ distdir_tar( "android_tools_pkg-0.7.tar.gz", # bazelbuild/platforms "441afe1bfdadd6236988e9cac159df6b5a9f5a98.zip", + # bazelbuild/rules_java + "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip", ], dirname = "test_WORKSPACE/distdir", sha256 = { @@ -443,6 +453,8 @@ distdir_tar( "android_tools_pkg-0.7.tar.gz": "a8e48f2fdee2c34b31f45bd47ce050a75ac774f19e0a1f6694fa49fc11d88718", # built at 6bb5ae2a8353d75867ac9136d374df7916450449 # bazelbuild/platforms "441afe1bfdadd6236988e9cac159df6b5a9f5a98.zip": "a07fe5e75964361885db725039c2ba673f0ee0313d971ae4f50c9b18cd28b0b5", + # bazelbuild/rules_java + "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": "bc81f1ba47ef5cc68ad32225c3d0e70b8c6f6077663835438da8d5733f917598", }, urls = { "zulu9.0.7.1-jdk9.0.7-linux_x64-allmodules.tar.gz": ["https://mirror.bazel.build/openjdk/azul-zulu-9.0.7.1-jdk9.0.7/zulu9.0.7.1-jdk9.0.7-linux_x64-allmodules.tar.gz"], @@ -472,6 +484,10 @@ distdir_tar( "https://mirror.bazel.build/github.com/bazelbuild/platforms/archive/441afe1bfdadd6236988e9cac159df6b5a9f5a98.zip", "https://github.com/bazelbuild/platforms/archive/441afe1bfdadd6236988e9cac159df6b5a9f5a98.zip", ], + # bazelbuild/rules_java + "7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip": [ + "https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip" + ] }, ) diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE index ae149342ed92de..195bd4fb553eec 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/jdk.WORKSPACE @@ -1,5 +1,6 @@ # External dependencies for the java_* rules. load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file") +load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe") new_local_repository( name = "local_jdk", @@ -238,4 +239,12 @@ http_archive( ], ) +maybe( + http_archive, + "rules_java", + sha256 = "bc81f1ba47ef5cc68ad32225c3d0e70b8c6f6077663835438da8d5733f917598", + urls = ["https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip"], + strip_prefix = "rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178" +) + register_toolchains("@bazel_tools//tools/jdk:all") diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD index e085eeec4daaeb..559c742e3b86f3 100644 --- a/src/test/shell/bazel/BUILD +++ b/src/test/shell/bazel/BUILD @@ -364,6 +364,15 @@ sh_test( shard_count = 3, ) +sh_test( + name = "bazel_rules_java_test", + srcs = ["bazel_rules_java_test.sh"], + data = [ + ":test-deps", + "@bazel_tools//tools/bash/runfiles", + ], +) + sh_test( name = "bazel_test_test", timeout = "long", diff --git a/src/test/shell/bazel/bazel_java_tools_test.sh b/src/test/shell/bazel/bazel_java_tools_test.sh index 77facba21a08fb..75584d4fc90b61 100755 --- a/src/test/shell/bazel/bazel_java_tools_test.sh +++ b/src/test/shell/bazel/bazel_java_tools_test.sh @@ -173,4 +173,20 @@ function test_java_tools_has_proguard() { expect_path_in_java_tools "java_tools/third_party/java/proguard/GPL.html" } +function test_java_tools_toolchain_builds() { + local java_tools_rlocation=$(rlocation io_bazel/src/java_tools_${JAVA_TOOLS_JAVA_VERSION}.zip) + local java_tools_zip_file_url="file://${java_tools_rlocation}" + if "$is_windows"; then + java_tools_zip_file_url="file:///${java_tools_rlocation}" + fi + cat >WORKSPACE <&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash" + exit 1 +fi +# --- end runfiles.bash initialization --- + +source "$(rlocation "io_bazel/src/test/shell/integration_test_setup.sh")" \ + || { echo "integration_test_setup.sh not found!" >&2; exit 1; } + +case "$(uname -s | tr [:upper:] [:lower:])" in +msys*|mingw*|cygwin*) + declare -r is_windows=true + ;; +*) + declare -r is_windows=false + ;; +esac + +if "$is_windows"; then + export MSYS_NO_PATHCONV=1 + export MSYS2_ARG_CONV_EXCL="*" +fi + +function test_rules_java_can_be_overridden() { + # We test that a custom repository can override @platforms in their + # WORKSPACE file. + mkdir -p rules_java_can_be_overridden || fail "couldn't create directory" + touch rules_java_can_be_overridden/BUILD || \ fail "couldn't touch BUILD file" + cat > rules_java_can_be_overridden/WORKSPACE < override/BUILD < $TEST_log || \ + fail "Bazel failed to build @rules_java" +} + +function test_rules_java_repository_builds_itself() { + # We test that a built-in @rules_java repository is buildable. + bazel build @rules_java//... &> $TEST_log \ + || fail "Build failed unexpectedly" +} + +run_suite "rules_java tests" diff --git a/tools/jdk/BUILD.java_tools b/tools/jdk/BUILD.java_tools index 298f8607196306..b73a288b7920e5 100644 --- a/tools/jdk/BUILD.java_tools +++ b/tools/jdk/BUILD.java_tools @@ -2,6 +2,8 @@ package(default_visibility = ["//visibility:public"]) licenses(["notice"]) # Apache 2.0 +load("@rules_java//java:defs.bzl", "java_toolchain", "java_import", "java_binary") + java_toolchain( name = "toolchain", bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath"],