Remove ijar from the bazel binary.
Bazel now doesn't embed ijar anymore and uses ijar embeded in the Java tools remote repository.
Bazel embedded both ijar's source code (required by remote execution) and platform specific pre-built binaries. This change adds platform specific remote Java tools repository that include the corresponding pre-built ijar binary (for Windows, Darwin and Linux), alongside ijar's source code.
This change introduces a collection of macros that wrap the native rules `filegroup` and `java_import` and select a given target from the external java tools repository based on the current platform.
Progress on #6316.
Closes #7665.
PiperOrigin-RevId: 238613298
diff --git a/WORKSPACE b/WORKSPACE
index c70da29..45148c7 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -106,18 +106,24 @@
archives = [
"e0b0291b2c51fbe5a7cfa14473a1ae850f94f021.zip",
"f83cb8dd6f5658bc574ccd873e25197055265d1c.tar.gz",
- "java_tools_pkg-0.6.tar.gz",
+ "java_tools_javac10_linux-x86_64-v1.0.tar.gz",
+ "java_tools_javac10_windows-x86_64-v1.0.zip",
+ "java_tools_javac10_darwin-v1.0.tar.gz",
],
dirname = "derived/distdir",
sha256 = {
"e0b0291b2c51fbe5a7cfa14473a1ae850f94f021.zip": "fe2e04f91ce8c59d49d91b8102edc6627c6fa2906c1b0e7346f01419ec4f419d",
"f83cb8dd6f5658bc574ccd873e25197055265d1c.tar.gz": "ba5d15ca230efca96320085d8e4d58da826d1f81b444ef8afccd8b23e0799b52",
- "java_tools_pkg-0.6.tar.gz": "81ed7c5231cd67df95dc4894a5cc32af67d29f388ee7117809531b948e61fca9",
+ "java_tools_javac10_linux-x86_64-v1.0.tar.gz": "1be7503530ce263f6c90139281f45e9ae4f681a8a362b93ad1ddef4f6db74ce5",
+ "java_tools_javac10_windows-x86_64-v1.0.zip": "15840585eb4db06c2ecc0e14749f96a0e253d9cee2c17b724fc60340d35c6a07",
+ "java_tools_javac10_darwin-v1.0.tar.gz": "a7d292c13c1dbd7def969ddafdf0207a0be5a3e2280fab9164b2c44fd37a82c6",
},
urls = {
"e0b0291b2c51fbe5a7cfa14473a1ae850f94f021.zip": ["https://github.com/google/desugar_jdk_libs/archive/e0b0291b2c51fbe5a7cfa14473a1ae850f94f021.zip"],
"f83cb8dd6f5658bc574ccd873e25197055265d1c.tar.gz": ["https://github.com/bazelbuild/bazel-skylib/archive/f83cb8dd6f5658bc574ccd873e25197055265d1c.tar.gz"],
- "java_tools_pkg-0.6.tar.gz": ["https://mirror.bazel.build/bazel_java_tools/java_tools_pkg-0.6.tar.gz"],
+ "java_tools_javac10_linux-x86_64-v1.0.tar.gz": ["https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_linux-x86_64-v1.0.tar.gz"],
+ "java_tools_javac10_windows-x86_64-v1.0.zip": ["https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_windows-x86_64-v1.0.zip"],
+ "java_tools_javac10_darwin-v1.0.tar.gz": ["https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_darwin-v1.0.tar.gz"],
},
)
@@ -232,8 +238,8 @@
sha256 = "4b1468b254a572dbe134cc1fd7c6eab1618a72acd339749ea343bd8f55c3b7eb",
strip_prefix = "bazel-toolchains-d665ccfa3e9c90fa789671bf4ef5f7c19c5715c4",
urls = [
- "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/d665ccfa3e9c90fa789671bf4ef5f7c19c5715c4.tar.gz",
- "https://github.com/bazelbuild/bazel-toolchains/archive/d665ccfa3e9c90fa789671bf4ef5f7c19c5715c4.tar.gz",
+ "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/d665ccfa3e9c90fa789671bf4ef5f7c19c5715c4.tar.gz",
+ "https://github.com/bazelbuild/bazel-toolchains/archive/d665ccfa3e9c90fa789671bf4ef5f7c19c5715c4.tar.gz",
],
)
@@ -287,7 +293,9 @@
"zulu10.2+3-jdk10.0.1-macosx_x64-allmodules.tar.gz",
"zulu10.2+3-jdk10.0.1-win_x64-allmodules.zip",
"jdk10-server-release-1804.tar.xz",
- "java_tools_pkg-0.6.tar.gz",
+ "java_tools_javac10_linux-x86_64-v1.0.tar.gz",
+ "java_tools_javac10_windows-x86_64-v1.0.zip",
+ "java_tools_javac10_darwin-v1.0.tar.gz",
"zulu11.2.3-jdk11.0.1-linux_x64.tar.gz",
"zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz",
"zulu11.2.3-jdk11.0.1-win_x64.zip",
@@ -305,7 +313,9 @@
"zulu10.2+3-jdk10.0.1-macosx_x64-allmodules.tar.gz": "e669c9a897413d855b550b4e39d79614392e6fb96f494e8ef99a34297d9d85d3",
"zulu10.2+3-jdk10.0.1-win_x64-allmodules.zip": "c39e7700a8d41794d60985df5a20352435196e78ecbc6a2b30df7be8637bffd5",
"jdk10-server-release-1804.tar.xz": "b7098b7aaf6ee1ffd4a2d0371a0be26c5a5c87f6aebbe46fe9a92c90583a84be",
- "java_tools_pkg-0.6.tar.gz": "81ed7c5231cd67df95dc4894a5cc32af67d29f388ee7117809531b948e61fca9",
+ "java_tools_javac10_linux-x86_64-v1.0.tar.gz": "1be7503530ce263f6c90139281f45e9ae4f681a8a362b93ad1ddef4f6db74ce5",
+ "java_tools_javac10_windows-x86_64-v1.0.zip": "15840585eb4db06c2ecc0e14749f96a0e253d9cee2c17b724fc60340d35c6a07",
+ "java_tools_javac10_darwin-v1.0.tar.gz": "a7d292c13c1dbd7def969ddafdf0207a0be5a3e2280fab9164b2c44fd37a82c6",
"zulu11.2.3-jdk11.0.1-linux_x64.tar.gz": "232b1c3511f0d26e92582b7c3cc363be7ac633e371854ca2f2e9f2b50eb72a75",
"zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz": "1edf366ee821e5db8e348152fcb337b28dfd6bf0f97943c270dcc6747cedb6cb",
"zulu11.2.3-jdk11.0.1-win_x64.zip": "8e1e2b8347de6746f3fd1538840dd643201533ab113abc4ed93678e342d28aa3",
@@ -322,7 +332,9 @@
"zulu10.2+3-jdk10.0.1-macosx_x64-allmodules.tar.gz": ["https://mirror.bazel.build/openjdk/azul-zulu10.2+3-jdk10.0.1/zulu10.2+3-jdk10.0.1-macosx_x64-allmodules.tar.gz"],
"zulu10.2+3-jdk10.0.1-win_x64-allmodules.zip": ["https://mirror.bazel.build/openjdk/azul-zulu10.2+3-jdk10.0.1/zulu10.2+3-jdk10.0.1-win_x64-allmodules.zip"],
"jdk10-server-release-1804.tar.xz": ["https://mirror.bazel.build/openjdk.linaro.org/releases/jdk10-server-release-1804.tar.xz"],
- "java_tools_pkg-0.6.tar.gz": ["https://mirror.bazel.build/bazel_java_tools/java_tools_pkg-0.6.tar.gz"],
+ "java_tools_javac10_linux-x86_64-v1.0.tar.gz": ["https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_linux-x86_64-v1.0.tar.gz"],
+ "java_tools_javac10_windows-x86_64-v1.0.zip": ["https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_windows-x86_64-v1.0.zip"],
+ "java_tools_javac10_darwin-v1.0.tar.gz": ["https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_darwin-v1.0.tar.gz"],
"zulu11.2.3-jdk11.0.1-linux_x64.tar.gz": ["https://mirror.bazel.build/openjdk/azul-zulu11.2.3-jdk11.0.1/zulu11.2.3-jdk11.0.1-linux_x64.tar.gz"],
"zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz": ["https://mirror.bazel.build/openjdk/azul-zulu11.2.3-jdk11.0.1/zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz"],
"zulu11.2.3-jdk11.0.1-win_x64.zip": ["https://mirror.bazel.build/openjdk/azul-zulu11.2.3-jdk11.0.1/zulu11.2.3-jdk11.0.1-win_x64.zip"],
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index 3d53c3f..bc97e9e 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -264,9 +264,6 @@
link_children "${PWD}" tools/python "${BAZEL_TOOLS_REPO}"
link_children "${PWD}" tools "${BAZEL_TOOLS_REPO}"
- # The BUILD file needed for @remote_java_tools.
- link_file "${PWD}/third_party/java/java_tools/BUILD.pkg" "${BAZEL_TOOLS_REPO}/tools/jdk/BUILD.pkg"
-
# Set up @bazel_tools//platforms properly
mkdir -p ${BAZEL_TOOLS_REPO}/platforms
cp tools/platforms/platforms.BUILD ${BAZEL_TOOLS_REPO}/platforms/BUILD
diff --git a/src/BUILD b/src/BUILD
index 23612c5..42fe48a 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -123,9 +123,8 @@
"//src/java_tools/buildjar/java/com/google/devtools/build/buildjar/jarhelper:srcs",
"//src/tools/singlejar:embedded_tools",
"//src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps:embedded_tools",
- "//third_party/ijar",
+ # TODO(#6316): Move this target to the remote java tools archive.
"//third_party/ijar:zipper",
- "//third_party/ijar:embedded_tools",
"//third_party/java/jacoco:srcs",
] + select({
"//src/conditions:arm": [],
@@ -142,7 +141,6 @@
"BUILD.tools",
"//tools:embedded_tools_srcs",
"//third_party:gpl-srcs",
- "//third_party/java/java_tools:bazel_embedded_java_tools",
"//third_party/java/j2objc:embedded_tools_srcs",
"//third_party/py/concurrent:srcs",
"//third_party/py/gflags:srcs",
diff --git a/src/create_embedded_tools.py b/src/create_embedded_tools.py
index c4ec47b..d1b09ae 100644
--- a/src/create_embedded_tools.py
+++ b/src/create_embedded_tools.py
@@ -28,21 +28,18 @@
from src.create_embedded_tools_lib import is_executable
output_paths = [
- ('*tools/jdk/BUILD*', lambda x: 'tools/jdk/BUILD'),
+ ('*tools/jdk/BUILD', lambda x: 'tools/jdk/BUILD'),
('*tools/platforms/platforms.BUILD', lambda x: 'platforms/BUILD'),
('*tools/platforms/*', lambda x: 'platforms/' + os.path.basename(x)),
('*tools/cpp/runfiles/generated_*',
lambda x: 'tools/cpp/runfiles/' + os.path.basename(x)[len('generated_'):]),
('*jarjar_command_deploy.jar',
lambda x: 'tools/jdk/jarjar_command_deploy.jar'),
- ('*BUILD.pkg', lambda x: 'tools/jdk/BUILD.pkg'),
- ('*BUILD.javalangtools', lambda x: 'third_party/java/jdk/langtools/BUILD'),
+ ('*BUILD.java_langtools', lambda x: 'third_party/java/jdk/langtools/BUILD'),
('*singlejar_local.exe', lambda x: 'tools/jdk/singlejar/singlejar.exe'),
('*singlejar_local', lambda x: 'tools/jdk/singlejar/singlejar'),
('*launcher.exe', lambda x: 'tools/launcher/launcher.exe'),
('*def_parser.exe', lambda x: 'tools/def_parser/def_parser.exe'),
- ('*ijar.exe', lambda x: 'tools/jdk/ijar/ijar.exe'),
- ('*ijar', lambda x: 'tools/jdk/ijar/ijar'),
('*zipper.exe', lambda x: 'tools/zip/zipper/zipper.exe'),
('*zipper', lambda x: 'tools/zip/zipper/zipper'),
('*src/objc_tools/*',
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 274debd..fdef9e5 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
@@ -206,11 +206,29 @@
)
http_archive(
- name = "remote_java_tools",
- build_file = "@bazel_tools//tools/jdk:BUILD.pkg",
- sha256 = "81ed7c5231cd67df95dc4894a5cc32af67d29f388ee7117809531b948e61fca9",
+ name = "remote_java_tools_linux",
+ build_file = "@bazel_tools//tools/jdk:BUILD.java_tools",
+ sha256 = "1be7503530ce263f6c90139281f45e9ae4f681a8a362b93ad1ddef4f6db74ce5",
urls = [
- "https://mirror.bazel.build/bazel_java_tools/java_tools_pkg-0.6.tar.gz",
+ "https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_linux-x86_64-v1.0.tar.gz",
+ ],
+)
+
+http_archive(
+ name = "remote_java_tools_windows",
+ build_file = "@bazel_tools//tools/jdk:BUILD.java_tools",
+ sha256 = "15840585eb4db06c2ecc0e14749f96a0e253d9cee2c17b724fc60340d35c6a07",
+ urls = [
+ "https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_windows-x86_64-v1.0.zip",
+ ],
+)
+
+http_archive(
+ name = "remote_java_tools_darwin",
+ build_file = "@bazel_tools//tools/jdk:BUILD.java_tools",
+ sha256 = "a7d292c13c1dbd7def969ddafdf0207a0be5a3e2280fab9164b2c44fd37a82c6",
+ urls = [
+ "https://mirror.bazel.build/bazel_java_tools/java_tools_javac10_darwin-v1.0.tar.gz",
],
)
diff --git a/src/test/shell/bazel/bazel_java_test.sh b/src/test/shell/bazel/bazel_java_test.sh
index 04d0bd5..a29cdba 100755
--- a/src/test/shell/bazel/bazel_java_test.sh
+++ b/src/test/shell/bazel/bazel_java_test.sh
@@ -571,7 +571,7 @@
cat > java/testrunners/BUILD <<EOF
java_library(name = "test_runner",
srcs = ['TestRunner.java'],
- deps = ['@remote_java_tools//:java_tools/Runner_deploy.jar'],
+ deps = ['@bazel_tools//tools/jdk:TestRunner'],
)
java_test(name = "Tests",
diff --git a/src/test/shell/bazel/testdata/embedded_tools_srcs_deps b/src/test/shell/bazel/testdata/embedded_tools_srcs_deps
index 45aab3d..95b4a12 100644
--- a/src/test/shell/bazel/testdata/embedded_tools_srcs_deps
+++ b/src/test/shell/bazel/testdata/embedded_tools_srcs_deps
@@ -6,7 +6,6 @@
//tools/test:tw_lib
//tools/test:xml
//third_party/ijar:zipper
-//third_party/ijar:ijar
//third_party/ijar:zip
//third_party/ijar:zlib_client
//third_party/ijar:platform_utils
diff --git a/tools/android/BUILD.tools b/tools/android/BUILD.tools
index dcd57eb..acca19a 100644
--- a/tools/android/BUILD.tools
+++ b/tools/android/BUILD.tools
@@ -108,8 +108,8 @@
name = "ijar_desugared_java8_legacy_libs",
srcs = ["desugared_java8_legacy_libs"],
outs = ["desugared_java8_legacy_libs-ijar.jar"],
- cmd = "$(location //third_party/ijar) $< $@",
- tools = ["//third_party/ijar"],
+ cmd = "$(location @bazel_tools//tools/jdk:ijar) $< $@",
+ tools = ["@bazel_tools//tools/jdk:ijar"],
visibility = ["//visibility:private"],
)
diff --git a/tools/jdk/BUILD b/tools/jdk/BUILD
index b3962fa..ecd2fa78 100644
--- a/tools/jdk/BUILD
+++ b/tools/jdk/BUILD
@@ -13,6 +13,11 @@
"legacy_java_toolchain_alias",
"legacy_java_runtime_alias",
)
+load(
+ "//tools/jdk:remote_java_tools_aliases.bzl",
+ "remote_java_tools_filegroup",
+ "remote_java_tools_java_import",
+)
package(default_visibility = ["//visibility:public"])
@@ -126,12 +131,9 @@
# On Windows, executables end in ".exe", but the label we reach it through
# must be platform-independent. Thus, we create a little filegroup that
# contains the appropriate platform-dependent file.
-filegroup(
+remote_java_tools_filegroup(
name = "ijar",
- srcs = select({
- "//src/conditions:remote": ["//third_party/ijar:ijar"],
- "//conditions:default": glob(["ijar/*"]),
- }),
+ target = ":ijar",
)
# On Windows, Java implementation of singlejar is used. We create a little
@@ -148,101 +150,101 @@
}),
)
-exports_files(["BUILD.pkg"])
+exports_files(["BUILD.java_tools"])
-filegroup(
+remote_java_tools_filegroup(
name = "genclass",
- srcs = ["@remote_java_tools//:GenClass"],
+ target = ":GenClass",
)
-filegroup(
+remote_java_tools_filegroup(
name = "GenClass_deploy.jar",
- srcs = ["@remote_java_tools//:java_tools/GenClass_deploy.jar"],
+ target = ":java_tools/GenClass_deploy.jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "bazel-singlejar_deploy.jar",
- srcs = ["@remote_java_tools//:java_tools/bazel-singlejar_deploy.jar"],
+ target = ":java_tools/bazel-singlejar_deploy.jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "turbine",
- srcs = ["@remote_java_tools//:Turbine"],
+ target = ":Turbine",
)
-filegroup(
+remote_java_tools_filegroup(
name = "turbine_deploy.jar",
- srcs = ["@remote_java_tools//:java_tools/turbine_deploy.jar"],
+ target = ":java_tools/turbine_deploy.jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "turbine_direct",
- srcs = ["@remote_java_tools//:TurbineDirect"],
+ target = ":TurbineDirect",
)
-filegroup(
+remote_java_tools_filegroup(
name = "turbine_direct_binary_deploy.jar",
- srcs = ["@remote_java_tools//:java_tools/turbine_direct_binary_deploy.jar"],
+ target = ":java_tools/turbine_direct_binary_deploy.jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "javabuilder",
- srcs = ["@remote_java_tools//:JavaBuilder"],
+ target = ":JavaBuilder",
)
-filegroup(
+remote_java_tools_filegroup(
name = "JavaBuilder_deploy.jar",
- srcs = ["@remote_java_tools//:java_tools/JavaBuilder_deploy.jar"],
+ target = ":java_tools/JavaBuilder_deploy.jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "vanillajavabuilder",
- srcs = ["@remote_java_tools//:VanillaJavaBuilder"],
+ target = ":VanillaJavaBuilder",
)
-filegroup(
+remote_java_tools_filegroup(
name = "javac_jar",
- srcs = ["@remote_java_tools//:javac_jar"],
+ target = ":javac_jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "jdk_compiler_jar",
- srcs = ["@remote_java_tools//:jdk_compiler_jar"],
+ target = ":jdk_compiler_jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "java_compiler_jar",
- srcs = ["@remote_java_tools//:java_compiler_jar"],
+ target = ":java_compiler_jar",
)
-java_import(
+remote_java_tools_java_import(
name = "JacocoCoverageRunner",
- jars = ["@remote_java_tools//:java_tools/JacocoCoverage_jarjar_deploy.jar"],
+ target = ":java_tools/JacocoCoverage_jarjar_deploy.jar",
)
-java_import(
+remote_java_tools_java_import(
name = "JacocoCoverage",
- jars = ["@remote_java_tools//:java_tools/JacocoCoverage_jarjar_deploy.jar"],
+ target = ":java_tools/JacocoCoverage_jarjar_deploy.jar",
)
-java_import(
+remote_java_tools_java_import(
name = "TestRunner",
- jars = ["@remote_java_tools//:java_tools/Runner_deploy.jar"],
+ target = ":java_tools/Runner_deploy.jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "TestRunner_deploy.jar",
- srcs = ["@remote_java_tools//:java_tools/Runner_deploy.jar"],
+ target = ":java_tools/Runner_deploy.jar",
)
-java_import(
+remote_java_tools_java_import(
name = "ExperimentalTestRunner",
- jars = ["@remote_java_tools//:java_tools/ExperimentalRunner_deploy.jar"],
+ target = ":java_tools/ExperimentalRunner_deploy.jar",
)
-filegroup(
+remote_java_tools_filegroup(
name = "ExperimentalRunner_deploy.jar",
- srcs = ["@remote_java_tools//:java_tools/ExperimentalRunner_deploy.jar"],
+ target = ":java_tools/ExperimentalRunner_deploy.jar",
)
BOOTCLASS_JARS = [
@@ -359,6 +361,8 @@
filegroup(
name = "srcs",
srcs = [
+ "BUILD.java_langtools",
+ "BUILD.java_tools",
"BUILD-jdk", # Tools are build from the workspace for tests.
"DumpPlatformClassPath.java",
"default_java_toolchain.bzl",
@@ -366,6 +370,7 @@
"proguard_whitelister.py",
"proguard_whitelister_test.py",
"proguard_whitelister_test_input.cfg",
+ "remote_java_tools_aliases.bzl",
"toolchain_utils.bzl",
],
)
diff --git a/tools/jdk/BUILD.java_langtools b/tools/jdk/BUILD.java_langtools
new file mode 100644
index 0000000..0020800
--- /dev/null
+++ b/tools/jdk/BUILD.java_langtools
@@ -0,0 +1,24 @@
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache 2.0
+
+load(
+ "//tools/jdk:remote_java_tools_aliases.bzl",
+ "remote_java_tools_filegroup",
+)
+
+
+remote_java_tools_filegroup(
+ name = "javac_jar",
+ target = ":java_tools/javac-9+181-r4173-1.jar",
+)
+
+remote_java_tools_filegroup(
+ name = "jdk_compiler_jar",
+ target = ":java_tools/jdk_compiler.jar",
+)
+
+remote_java_tools_filegroup(
+ name = "java_compiler_jar",
+ target = ":java_tools/java_compiler.jar",
+)
diff --git a/tools/jdk/BUILD.java_tools b/tools/jdk/BUILD.java_tools
new file mode 100644
index 0000000..28ebe72
--- /dev/null
+++ b/tools/jdk/BUILD.java_tools
@@ -0,0 +1,292 @@
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "ExperimentalRunner",
+ srcs = ["java_tools/ExperimentalRunner_deploy.jar"],
+)
+
+filegroup(
+ name = "GenClass",
+ srcs = ["java_tools/GenClass_deploy.jar"],
+)
+
+filegroup(
+ name = "JacocoCoverage",
+ srcs = ["java_tools/JacocoCoverage_jarjar_deploy.jar"],
+)
+
+filegroup(
+ name = "JavaBuilder",
+ srcs = ["java_tools/JavaBuilder_deploy.jar"],
+)
+
+filegroup(
+ name = "Runner",
+ srcs = ["java_tools/Runner_deploy.jar"],
+)
+
+filegroup(
+ name = "VanillaJavaBuilder",
+ srcs = ["java_tools/VanillaJavaBuilder_deploy.jar"],
+)
+
+filegroup(
+ name = "SingleJar",
+ srcs = ["java_tools/bazel-singlejar_deploy.jar"],
+)
+
+filegroup(
+ name = "JarJar",
+ srcs = ["java_tools/jarjar_command_deploy.jar"],
+)
+
+filegroup(
+ name = "Turbine",
+ srcs = ["java_tools/turbine_deploy.jar"],
+)
+
+filegroup(
+ name = "TurbineDirect",
+ srcs = ["java_tools/turbine_direct_binary_deploy.jar"],
+)
+
+filegroup(
+ name = "javac_jar",
+ srcs = ["java_tools/javac-9+181-r4173-1.jar"],
+)
+
+filegroup(
+ name = "jdk_compiler_jar",
+ srcs = ["java_tools/jdk_compiler.jar"],
+)
+
+filegroup(
+ name = "java_compiler_jar",
+ srcs = ["java_tools/java_compiler.jar"],
+)
+
+config_setting(
+ name = "remote",
+ values = {"define": "EXECUTOR=remote"},
+)
+
+config_setting(
+ name = "linux_x86_64",
+ values = {"cpu": "k8"},
+)
+
+config_setting(
+ name = "darwin",
+ values = {"cpu": "darwin"},
+)
+
+config_setting(
+ name = "darwin_x86_64",
+ values = {"cpu": "darwin_x86_64"},
+)
+
+config_setting(
+ name = "windows",
+ values = {"cpu": "x64_windows"},
+)
+
+alias(
+ name = "ijar",
+ actual = select({
+ ":remote": ":ijar_cc_binary",
+ "//conditions:default": ":prebuilt_binary_or_cc_binary",
+ })
+)
+
+alias(
+ name = "prebuilt_binary_or_cc_binary",
+ actual = select({
+ ":linux_x86_64": ":ijar_prebuilt_binary",
+ ":darwin": ":ijar_prebuilt_binary",
+ ":darwin_x86_64": ":ijar_prebuilt_binary",
+ ":windows": ":ijar_prebuilt_binary",
+ "//conditions:default": ":ijar_cc_binary",
+ })
+)
+
+filegroup(
+ name = "ijar_prebuilt_binary",
+ srcs = select({
+ ":windows": ["java_tools/ijar/ijar.exe"],
+ "//conditions:default": ["java_tools/ijar/ijar"],
+ }),
+)
+
+cc_binary(
+ name = "ijar_cc_binary",
+ srcs = [
+ "java_tools/ijar/classfile.cc",
+ "java_tools/ijar/ijar.cc",
+ ],
+ deps = [":zip"],
+)
+
+cc_library(
+ name = "zip",
+ srcs = [
+ "java_tools/ijar/zip.cc",
+ ] + select({
+ ":windows": [
+ "java_tools/ijar/mapped_file_windows.cc",
+ ],
+ "//conditions:default": [
+ "java_tools/ijar/mapped_file_unix.cc",
+ ],
+ }),
+ hdrs = [
+ "java_tools/ijar/common.h",
+ "java_tools/ijar/mapped_file.h",
+ "java_tools/ijar/zip.h",
+ ],
+ deps = [
+ ":platform_utils",
+ ":zlib_client",
+ ] + select({
+ ":windows": [
+ ":errors",
+ ":filesystem",
+ ":logging",
+ ":strings",
+ ],
+ "//conditions:default": [
+ ],
+ }),
+ strip_include_prefix = "java_tools",
+ include_prefix = "third_party",
+)
+
+cc_library(
+ name = "platform_utils",
+ srcs = ["java_tools/ijar/platform_utils.cc"],
+ hdrs = [
+ "java_tools/ijar/common.h",
+ "java_tools/ijar/platform_utils.h",
+ ],
+ visibility = ["//visibility:private"],
+ deps = [
+ ":errors",
+ ":filesystem",
+ ":logging",
+ ],
+ strip_include_prefix = "java_tools",
+ include_prefix = "third_party",
+)
+
+cc_library(
+ name = "filesystem",
+ srcs = [
+ "java_tools/src/main/cpp/util/file.cc",
+ "java_tools/src/main/cpp/util/path.cc",
+ ] + select({
+ ":windows": [
+ "java_tools/src/main/cpp/util/file_windows.cc",
+ "java_tools/src/main/cpp/util/path_windows.cc",
+ ],
+ "//conditions:default": [
+ "java_tools/src/main/cpp/util/file_posix.cc",
+ "java_tools/src/main/cpp/util/path_posix.cc",
+ ],
+ }),
+ hdrs = [
+ "java_tools/src/main/cpp/util/file.h",
+ "java_tools/src/main/cpp/util/file_platform.h",
+ "java_tools/src/main/cpp/util/path.h",
+ "java_tools/src/main/cpp/util/path_platform.h",
+ ],
+ deps = [
+ ":blaze_exit_code",
+ ":errors",
+ ":logging",
+ ":strings",
+ ] + select({
+ ":windows": [":lib-file"],
+ "//conditions:default": [],
+ }),
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "lib-file",
+ srcs = ["java_tools/src/main/native/windows/file.cc"],
+ hdrs = ["java_tools/src/main/native/windows/file.h"],
+ deps = [":lib-util"],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "lib-util",
+ srcs = ["java_tools/src/main/native/windows/util.cc"],
+ hdrs = ["java_tools/src/main/native/windows/util.h"],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "errors",
+ srcs = select({
+ ":windows": ["java_tools/src/main/cpp/util/errors_windows.cc"],
+ "//conditions:default": ["java_tools/src/main/cpp/util/errors_posix.cc"],
+ }),
+ hdrs = ["java_tools/src/main/cpp/util/errors.h"],
+ deps = [
+ ":logging",
+ ":port",
+ ":strings",
+ ],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "strings",
+ srcs = ["java_tools/src/main/cpp/util/strings.cc"],
+ hdrs = ["java_tools/src/main/cpp/util/strings.h"],
+ # Automatically propagate the symbol definition to rules depending on this.
+ defines = [
+ "BLAZE_OPENSOURCE",
+ ],
+ deps = [":blaze_exit_code"],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "blaze_exit_code",
+ hdrs = ["java_tools/src/main/cpp/util/exit_code.h"],
+ strip_include_prefix = "java_tools",
+)
+
+
+cc_library(
+ name = "port",
+ srcs = ["java_tools/src/main/cpp/util/port.cc"],
+ hdrs = ["java_tools/src/main/cpp/util/port.h"],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "logging",
+ srcs = ["java_tools/src/main/cpp/util/logging.cc"],
+ hdrs = ["java_tools/src/main/cpp/util/logging.h"],
+ deps = [
+ ":blaze_exit_code",
+ ":strings",
+ ],
+ strip_include_prefix = "java_tools",
+)
+
+cc_library(
+ name = "zlib_client",
+ srcs = ["java_tools/ijar/zlib_client.cc"],
+ hdrs = [
+ "java_tools/ijar/common.h",
+ "java_tools/ijar/zlib_client.h",
+ ],
+ deps = ["//java_tools/zlib"],
+ strip_include_prefix = "java_tools",
+ include_prefix = "third_party",
+)
diff --git a/tools/jdk/remote_java_tools_aliases.bzl b/tools/jdk/remote_java_tools_aliases.bzl
new file mode 100644
index 0000000..3ea91f2
--- /dev/null
+++ b/tools/jdk/remote_java_tools_aliases.bzl
@@ -0,0 +1,41 @@
+# Copyright 2017 The Bazel Authors. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""A collection of macros that retrieve targets from the remote java tools."""
+
+def _get_args(target, attr, **kwargs):
+ workspace_target_dict = {
+ "//src/conditions:linux_x86_64": ["@remote_java_tools_linux//" + target],
+ "//src/conditions:darwin": ["@remote_java_tools_darwin//" + target],
+ "//src/conditions:darwin_x86_64": ["@remote_java_tools_darwin//" + target],
+ "//src/conditions:windows": ["@remote_java_tools_windows//" + target],
+ # On different platforms the linux repository can be used.
+ # The deploy jars inside the linux repository are platform-agnostic.
+ # The ijar target inside the repository identifies the different
+ # platform and builds ijar from source instead of returning the
+ # precompiled binary.
+ "//conditions:default": ["@remote_java_tools_linux//" + target],
+ }
+ workspace_target_select = select(workspace_target_dict)
+ args = dict({attr: workspace_target_select})
+ args.update(kwargs)
+ return args
+
+def remote_java_tools_filegroup(name, target, **kwargs):
+ args = _get_args(target, "srcs", **kwargs)
+ native.filegroup(name = name, **args)
+
+def remote_java_tools_java_import(name, target, **kwargs):
+ args = _get_args(target, "jars", **kwargs)
+ native.java_import(name = name, **args)