Skip to content

Commit

Permalink
Remove ijar from the bazel binary.
Browse files Browse the repository at this point in the history
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
  • Loading branch information
iirina authored and copybara-github committed Mar 15, 2019
1 parent 5adde8e commit d4651e8
Show file tree
Hide file tree
Showing 12 changed files with 454 additions and 71 deletions.
28 changes: 20 additions & 8 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -106,18 +106,24 @@ distdir_tar(
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"],
},
)

Expand Down Expand Up @@ -232,8 +238,8 @@ http_archive(
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",
],
)

Expand Down Expand Up @@ -287,7 +293,9 @@ distdir_tar(
"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",
Expand All @@ -305,7 +313,9 @@ distdir_tar(
"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",
Expand All @@ -322,7 +332,9 @@ distdir_tar(
"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"],
Expand Down
3 changes: 0 additions & 3 deletions scripts/bootstrap/compile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -264,9 +264,6 @@ EOF
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
Expand Down
4 changes: 1 addition & 3 deletions src/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,8 @@ JAVA_TOOLS = [
"//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": [],
Expand All @@ -142,7 +141,6 @@ JAVA_TOOLS = [
"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",
Expand Down
7 changes: 2 additions & 5 deletions src/create_embedded_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -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/*',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,11 +206,29 @@ http_archive(
)

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",
],
)

Expand Down
2 changes: 1 addition & 1 deletion src/test/shell/bazel/bazel_java_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -571,7 +571,7 @@ EOF
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",
Expand Down
1 change: 0 additions & 1 deletion src/test/shell/bazel/testdata/embedded_tools_srcs_deps
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions tools/android/BUILD.tools
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ genrule(
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"],
)

Expand Down
93 changes: 49 additions & 44 deletions tools/jdk/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ load(
"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"])

Expand Down Expand Up @@ -126,12 +131,9 @@ alias(
# 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
Expand All @@ -148,101 +150,101 @@ filegroup(
}),
)

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 = [
Expand Down Expand Up @@ -359,13 +361,16 @@ RELEASES = (8, 9)
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",
"java_toolchain_alias.bzl",
"proguard_whitelister.py",
"proguard_whitelister_test.py",
"proguard_whitelister_test_input.cfg",
"remote_java_tools_aliases.bzl",
"toolchain_utils.bzl",
],
)
Expand Down
24 changes: 24 additions & 0 deletions tools/jdk/BUILD.java_langtools
Original file line number Diff line number Diff line change
@@ -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",
)
Loading

1 comment on commit d4651e8

@meteorcloudy
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this change broke some downstream projects:
https://buildkite.com/bazel/bazel-at-head-plus-downstream/builds/862
@iirina

Please sign in to comment.