Separate java_tools into platform independent and prebuilt part.
java_tools is repository package containing tools needed during Java compilation: JavaBuilder, patches for Java compiler, ijar, singlejar, ...
Most of the files are jars with Java classes. java_tools are released for three platforms: linux, windows and darwin, however the only difference is in two binaries: ijar and singlejar.
This is part one of splitting java_tools and releasing split version (following PR makes use of released split version in Bazel)
Java_tools used to be released for multiple Java versions, but all the releases were the same except a some string substitutions in BUILD file. I changed to build only a single version, since it already supports Java from 8 to 14.
Changes:
- BUILD.java_tools is split into BUILD.java_tools_prebuilt (where the second contains prebuilt binaries)
- toolchain definitions are removed from BUILD.java_tools and will be added to tools/jdk/BUILD in the second part
- java_toolchain_default.bzl.java_tools is removed (default_java_toolchain.bzl will be updated with its features in the second part).
- src/BUILD: JAVA_VERSION is removed, targets used to build java_tools.zip are duplicated to build java_tools_prebuilt.zip (done some cleanup as well)
- upload_all_java_tools.sh and upload_java_tools.sh: used by Build kite, I removed java_version over the release, but kept it over tests (for different JDKs)
- create_java_tools_release.sh: used by the user in the release process - added platform independent part
- tests are updated to use platform independent and platform files, some tests had to be disabled and will be reenabled after the release
Closes #12546.
PiperOrigin-RevId: 344319092
diff --git a/src/BUILD b/src/BUILD
index f00e228..b39dc0d 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -552,6 +552,39 @@
visibility = ["//visibility:public"],
)
+# The java_tools release process produces following zip files:
+# - java_tools_dist.zip: all sources (Java and C++)
+# - java_tools.zip: platform independent part - Java classes (deploy jars) and C++ sources
+# - java_tools_prebuilt.zip: C++ binaries (for platforms: Linux, Darwin and Windows)
+#
+# The files are then used in Bazel as @remote_java_tools and @remote_java_tools_{platform}
+# repositories.
+# The zip files are not embedded or used in Bazel.
+
+# Following target build java_tools_dist.zip - the sources
+genrule(
+ name = "java_tools_dist",
+ srcs = [
+ "//src/java_tools/buildjar:srcs",
+ "//src/java_tools/junitrunner:srcs",
+ "//src/java_tools/singlejar:srcs",
+ "//src/tools/singlejar:embedded_java_tools",
+ "//third_party/checker_framework_dataflow:srcs",
+ "//third_party/checker_framework_javacutil:srcs",
+ "//third_party/ijar:transitive_sources",
+ "//third_party/java/jacoco:transitive_sources",
+ "//third_party/java/proguard:srcs",
+ "@java_tools_langtools_javac11//:srcs",
+ ],
+ outs = ["java_tools_dist.zip"],
+ cmd = "zip -qXr $@ $$(echo $(SRCS) | sort)",
+ output_to_bindir = 1,
+ visibility = ["//src/test/shell/bazel:__pkg__"],
+)
+
+# Following targets build java_tools.zip - platform independent part of java_tools
+# It is painstainkingly built by renaming single files, zipping them and merging zips together
+# TODO(bazel-team): Replace this with a single target, for example "release_archive" in rules_kotlin
JAVA_TOOLS_DEPLOY_JARS = [
"//src/java_tools/buildjar:JavaBuilder_deploy.jar",
"//src/java_tools/buildjar:VanillaJavaBuilder_deploy.jar",
@@ -559,174 +592,139 @@
"//src/java_tools/buildjar/java/com/google/devtools/build/java/turbine:turbine_direct_binary_deploy.jar",
"//src/java_tools/junitrunner/java/com/google/testing/coverage:JacocoCoverage_jarjar_deploy.jar",
"//src/java_tools/junitrunner/java/com/google/testing/junit/runner:Runner_deploy.jar",
-] + select({
- "//src/conditions:arm": ["//src/java_tools/singlejar/java/com/google/devtools/build/singlejar:bazel-singlejar_deploy.jar"],
- "//conditions:default": [],
-})
-
-JAVA_VERSIONS = ("11",)
-
-[
- genrule(
- name = "jars_java_tools_java" + java_version + "_zip",
- srcs = JAVA_TOOLS_DEPLOY_JARS + [
- "@java_tools_langtools_javac11//:jdk_compiler_jar",
- "@java_tools_langtools_javac11//:java_compiler_jar",
- "@java_tools_langtools_javac11//:javac_jar",
- ],
- outs = ["jars_java_tools_java" + java_version + ".zip"],
- cmd = "zip -qjX $@ $$(echo $(SRCS) | sort)",
- visibility = ["//visibility:private"],
- )
- for java_version in JAVA_VERSIONS
+ "//src/java_tools/singlejar/java/com/google/devtools/build/singlejar:bazel-singlejar_deploy.jar",
]
-[
- genrule(
- name = "java_tools_dist_java" + java_version,
- srcs = [
- "//src/java_tools/buildjar:srcs",
- "//src/java_tools/junitrunner:srcs",
- "//src/java_tools/singlejar:srcs",
- "//src/tools/singlejar:embedded_java_tools",
- "//third_party/checker_framework_dataflow:srcs",
- "//third_party/checker_framework_javacutil:srcs",
- "//third_party/ijar:transitive_sources",
- "//third_party/java/jacoco:transitive_sources",
- "//third_party/java/proguard:srcs",
- "@java_tools_langtools_javac11//:srcs",
- ],
- outs = ["java_tools_dist_javac" + java_version + ".zip"],
- cmd = "zip -qXr $@ $$(echo $(SRCS) | sort)",
- output_to_bindir = 1,
- visibility = ["//src/test/shell/bazel:__pkg__"],
- )
- for java_version in JAVA_VERSIONS
-]
+genrule(
+ name = "jars_java_tools_zip",
+ srcs = JAVA_TOOLS_DEPLOY_JARS + [
+ "@java_tools_langtools_javac11//:jdk_compiler_jar",
+ "@java_tools_langtools_javac11//:java_compiler_jar",
+ "@java_tools_langtools_javac11//:javac_jar",
+ ],
+ outs = ["jars_java_tools.zip"],
+ cmd = "zip -qjX $@ $$(echo $(SRCS) | sort)",
+ visibility = ["//visibility:private"],
+)
-[
- # Targets used by the java_tools_binaries Buildkite pipeline to build the
- # java_tools_dist_java* zips and upload them to a tmp directory in GCS.
- sh_binary(
- name = "upload_java_tools_dist_java" + java_version,
- srcs = ["upload_java_tools.sh"],
- args = [
- "--java_tools_zip",
- "src/java_tools_dist_javac" + java_version + ".zip",
- "--gcs_java_tools_dir",
- "tmp/sources",
- "--java_version",
- java_version,
- "--platform",
- ] + select({
- "//src/conditions:darwin": ["darwin"],
- "//src/conditions:windows": ["windows"],
- "//src/conditions:linux": ["linux"],
- "//conditions:default": ["unknown"],
- }),
- data = [":java_tools_dist_java" + java_version],
- deps = ["@bazel_tools//tools/bash/runfiles"],
- )
- for java_version in JAVA_VERSIONS
-]
+genrule(
+ name = "java_tools_build_zip",
+ srcs = ["//tools/jdk:BUILD.java_tools"],
+ outs = ["java_tools_build.zip"],
+ cmd = "cat $(SRCS) > BUILD; zip -qjX $@ BUILD",
+)
-[
- # The java_tools releases can have BUILD files that vary depending on the
- # javac version they embed. Currently the only difference is in the
- # java_toolchain source version which has to be 14 for javac 14 to be able
- # to build new Java 14 features. This is not used atm, as the toolchain for
- # javac 14 was duplicated, but it might be used in future Bazel releases to
- # support new javac release, so that we preserve this step for now.
- [
- genrule(
- name = "create_java_tools_build_java" + java_version,
- srcs = ["//tools/jdk:BUILD.java_tools"],
- outs = ["remote_java_tools_java" + java_version + "/BUILD"],
- cmd = "sed 's/JAVA_LANGUAGE_LEVEL/" + java_version + "/g' $< > $@",
- ),
- genrule(
- name = "create_java_tools_default_java" + java_version,
- srcs = ["//tools/jdk:java_toolchain_default.bzl.java_tools"],
- outs = ["remote_java_tools_java" + java_version + "/java_toolchain_default.bzl"],
- cmd = "cp $< $@",
- ),
- ]
- for java_version in JAVA_VERSIONS
-]
+genrule(
+ name = "java_tools_no_build_zip",
+ srcs = [
+ ":jars_java_tools.zip",
+ "//src/tools/singlejar:singlejar_transitive_zip",
+ "//third_party/ijar:ijar_transitive_srcs_zip",
+ "//third_party/java/jacoco:jacoco_jars_zip",
+ "//third_party/java/proguard:proguard_zip",
+ ],
+ outs = ["java_tools_no_build.zip"],
+ cmd = "$(location //src:merge_zip_files) java_tools $@ $(SRCS)",
+ output_to_bindir = 1,
+ tools = ["//src:merge_zip_files"],
+ visibility = ["//src/test/shell/bazel:__pkg__"],
+)
-[
- genrule(
- name = "java_tools_java" + java_version + "_build_zip",
- srcs = [
- "remote_java_tools_java" + java_version + "/BUILD",
- "remote_java_tools_java" + java_version + "/java_toolchain_default.bzl",
- ],
- outs = ["java_tools_java_" + java_version + "_build.zip"],
- cmd = "zip -qjX $@ $(SRCS)",
- )
- for java_version in JAVA_VERSIONS
-]
+genrule(
+ name = "java_tools_zip",
+ srcs = [
+ "java_tools_no_build.zip",
+ "java_tools_build.zip",
+ ],
+ outs = ["java_tools.zip"],
+ cmd = "$(location //src:merge_zip_files) - $@ $(SRCS)",
+ output_to_bindir = 1,
+ tools = ["//src:merge_zip_files"],
+ visibility = ["//src/test/shell/bazel:__pkg__"],
+)
-# Builds the remote Java tools archive. Not embedded or used in Bazel, but used
-# by the Java tools release process.
-[
- genrule(
- name = "java_tools_java" + java_version + "_no_build_zip",
- srcs = [
- ":jars_java_tools_java" + java_version + ".zip",
- "//src/tools/singlejar:singlejar_transitive_zip",
- "//third_party/ijar:ijar_transitive_zip",
- "//third_party/java/jacoco:jacoco_jars_zip",
- "//third_party/java/proguard:proguard_zip",
- ],
- outs = ["java_tools_java" + java_version + "_no_build.zip"],
- cmd = "$(location //src:merge_zip_files) java_tools $@ $(SRCS)",
- output_to_bindir = 1,
- tools = ["//src:merge_zip_files"],
- visibility = ["//src/test/shell/bazel:__pkg__"],
- )
- for java_version in JAVA_VERSIONS
-]
+# Following targets build java_tools_prebuilt.zip part of java_tools
+# It is painstainkingly built by renaming single files, zipping them and merging zips together
+# TODO(bazel-team): Replace this with a single target, for example "release_archive" in rules_kotlin
+genrule(
+ name = "java_tools_prebuilt_build_zip",
+ srcs = ["//tools/jdk:BUILD.java_tools_prebuilt"],
+ outs = ["java_tools_prebuilt_build.zip"],
+ cmd = "cat $(SRCS) > BUILD; zip -qjX $@ BUILD",
+)
-[
- genrule(
- name = "java_tools_java" + java_version + "_zip",
- srcs = [
- "java_tools_java" + java_version + "_no_build.zip",
- "java_tools_java_" + java_version + "_build.zip",
- ],
- outs = ["java_tools_java" + java_version + ".zip"],
- cmd = "$(location //src:merge_zip_files) - $@ $(SRCS)",
- output_to_bindir = 1,
- tools = ["//src:merge_zip_files"],
- visibility = ["//src/test/shell/bazel:__pkg__"],
- )
- for java_version in JAVA_VERSIONS
-]
+genrule(
+ name = "java_tools_prebuilt_no_build_zip",
+ srcs = [
+ "//src/tools/singlejar:singlejar_deploy_zip",
+ "//third_party/ijar:ijar_deploy_zip",
+ ],
+ outs = ["java_tools_prebuilt_no_build.zip"],
+ cmd = "$(location //src:merge_zip_files) java_tools $@ $(SRCS)",
+ output_to_bindir = True,
+ tools = ["//src:merge_zip_files"],
+ visibility = ["//src/test/shell/bazel:__pkg__"],
+)
-[
- # Targets used by the java_tools_binaries Buildkite pipeline to build the
- # java_tools_java* zips and upload them to a tmp directory in GCS.
- sh_binary(
- name = "upload_java_tools_java" + java_version,
- srcs = ["upload_java_tools.sh"],
- args = [
- "--gcs_java_tools_dir",
- "tmp/build",
- "--java_version",
- java_version,
- "--platform",
- ] + select({
- "//src/conditions:darwin": ["darwin"],
- "//src/conditions:windows": ["windows"],
- "//src/conditions:linux": ["linux"],
- "//conditions:default": ["unknown"],
- }),
- data = [":java_tools_java" + java_version + "_zip"],
- deps = ["@bazel_tools//tools/bash/runfiles"],
- )
- for java_version in JAVA_VERSIONS
-]
+genrule(
+ name = "java_tools_prebuilt_zip",
+ srcs = [
+ "java_tools_prebuilt_no_build.zip",
+ "java_tools_prebuilt_build.zip",
+ ],
+ outs = ["java_tools_prebuilt.zip"],
+ cmd = "$(location //src:merge_zip_files) - $@ $(SRCS)",
+ output_to_bindir = 1,
+ tools = ["//src:merge_zip_files"],
+ visibility = ["//src/test/shell/bazel:__pkg__"],
+)
+
+# Following targets used by the java_tools_binaries Buildkite pipeline to upload
+# the java_tools_*.zip to either tmp/sources or tmp/build directories in GCS.
+sh_binary(
+ name = "upload_java_tools_dist",
+ srcs = ["upload_java_tools.sh"],
+ args = [
+ "--java_tools_zip",
+ "src/java_tools_dist.zip",
+ "--gcs_java_tools_dir",
+ "tmp/sources",
+ ],
+ data = [":java_tools_dist"],
+ deps = ["@bazel_tools//tools/bash/runfiles"],
+)
+
+sh_binary(
+ name = "upload_java_tools",
+ srcs = ["upload_java_tools.sh"],
+ args = [
+ "--java_tools_zip",
+ "src/java_tools.zip",
+ "--gcs_java_tools_dir",
+ "tmp/build",
+ ],
+ data = [":java_tools_zip"],
+ deps = ["@bazel_tools//tools/bash/runfiles"],
+)
+
+sh_binary(
+ name = "upload_java_tools_prebuilt",
+ srcs = ["upload_java_tools.sh"],
+ args = [
+ "--java_tools_zip",
+ "src/java_tools_prebuilt.zip",
+ "--gcs_java_tools_dir",
+ "tmp/build",
+ "--platform",
+ ] + select({
+ "//src/conditions:darwin": ["darwin"],
+ "//src/conditions:windows": ["windows"],
+ "//src/conditions:linux": ["linux"],
+ "//conditions:default": ["unknown"],
+ }),
+ data = [":java_tools_prebuilt_zip"],
+ deps = ["@bazel_tools//tools/bash/runfiles"],
+)
# Part of the Java tools remote archive. Not embedded or used in Bazel.
genrule(
diff --git a/src/create_java_tools_release.sh b/src/create_java_tools_release.sh
index eb16086..4f3bbb6 100755
--- a/src/create_java_tools_release.sh
+++ b/src/create_java_tools_release.sh
@@ -22,8 +22,6 @@
# The script is using gsutil to copy artifacts.
#
# Mandatory flags:
-# --java_version The JDK version included in the java_tools to be
-# released.
# --java_tools_version The version number of the java_tools to be released.
# --rc The release candidate number of current release.
# If --release true then --rc is the number of the rc to
@@ -42,12 +40,12 @@
# JDK11, that was built at commit_hash 123456:
#
# src/create_java_tools_release.sh --commit_hash 123456 \
-# --java_tools_version 2.1 --java_version 11 --rc 1 --release false
+# --java_tools_version 2.1 --rc 1 --release false
#
# To release the release candidate created above:
#
# src/create_java_tools_release.sh \
-# --java_tools_version 2.1 --java_version 11 --rc 1 --release true
+# --java_tools_version 2.1 --rc 1 --release true
set -euo pipefail
@@ -56,7 +54,6 @@
arg="$1"; shift
val="$1"; shift
case "$arg" in
- "--java_version") java_version="$val" ;;
"--java_tools_version") java_tools_version="$val" ;;
"--commit_hash") commit_hash="$val" ;;
"--rc") rc="$val" ;;
@@ -72,33 +69,21 @@
gcs_bucket="gs://bazel-mirror/bazel_java_tools"
-for platform in linux windows darwin; do
- rc_url="release_candidates/javac${java_version}/v${java_tools_version}/java_tools_javac${java_version}_${platform}-v${java_tools_version}-rc${rc}.zip"
- rc_sources_url="release_candidates/javac${java_version}/v${java_tools_version}/sources/java_tools_javac${java_version}_${platform}-v${java_tools_version}-rc${rc}.zip"
+for platform in "linux" "windows" "darwin"; do
+ rc_url="release_candidates/java/v${java_tools_version}/java_tools_${platform}-v${java_tools_version}-rc${rc}.zip"
if [[ $release == "true" ]]; then
- release_artifact="releases/javac${java_version}/v${java_tools_version}/java_tools_javac${java_version}_${platform}-v${java_tools_version}.zip"
- release_sources_artifact="releases/javac${java_version}/v${java_tools_version}/sources/java_tools_javac${java_version}_${platform}-v${java_tools_version}.zip"
+ release_artifact="releases/java/v${java_tools_version}/java_tools_${platform}-v${java_tools_version}.zip"
# Make release candidate the release artifact for the current platform.
# Don't overwrite existing file.
gsutil -q cp -n "${gcs_bucket}/${rc_url}" "${gcs_bucket}/${release_artifact}"
-
- # Copy the associated zip file that contains the sources of the release zip.
- # Don't overwrite existing file.
- gsutil -q cp -n "${gcs_bucket}/${rc_sources_url}" "${gcs_bucket}/${release_sources_artifact}"
else
- tmp_url=$(gsutil ls -lh ${gcs_bucket}/tmp/build/${commit_hash}/java${java_version}/java_tools_javac${java_version}_${platform}* | sort -k 2 | grep gs -m 1 | awk '{print $4}')
-
+ tmp_url=$(gsutil ls -lh ${gcs_bucket}/tmp/build/${commit_hash}/java/java_tools_${platform}* | sort -k 2 | grep gs -m 1 | awk '{print $4}')
# Make the generated artifact a release candidate for the current platform.
# Don't overwrite existing file.
gsutil -q cp -n ${tmp_url} "${gcs_bucket}/${rc_url}"
release_artifact="${rc_url}"
-
- # Copy the associated zip file that contains the sources of the release zip.
- # Don't overwrite existing file.
- tmp_sources_url=$(gsutil ls -lh ${gcs_bucket}/tmp/sources/${commit_hash}/java${java_version}/java_tools_javac${java_version}_${platform}* | sort -k 2 | grep gs -m 1 | awk '{print $4}')
- gsutil -q cp -n ${tmp_sources_url} ${gcs_bucket}/${rc_sources_url}
fi
# Download the file locally to compute its sha256sum (needed to update the
@@ -109,3 +94,37 @@
file_hash=$(sha256sum ${local_zip} | cut -d' ' -f1)
echo "${release_artifact} ${file_hash}"
done
+
+rc_url="release_candidates/java/v${java_tools_version}/java_tools-v${java_tools_version}-rc${rc}.zip"
+rc_sources_url="release_candidates/java/v${java_tools_version}/sources/java_tools-v${java_tools_version}-rc${rc}.zip"
+
+if [[ $release == "true" ]]; then
+ release_artifact="releases/java/v${java_tools_version}/java_tools-v${java_tools_version}.zip"
+ release_sources_artifact="releases/java/v${java_tools_version}/sources/java_tools-v${java_tools_version}.zip"
+ # Make release candidate the release artifact for the current platform.
+ # Don't overwrite existing file.
+ gsutil -q cp -n "${gcs_bucket}/${rc_url}" "${gcs_bucket}/${release_artifact}"
+
+ # Copy the associated zip file that contains the sources of the release zip.
+ # Don't overwrite existing file.
+ gsutil -q cp -n "${gcs_bucket}/${rc_sources_url}" "${gcs_bucket}/${release_sources_artifact}"
+else
+ tmp_url=$(gsutil ls -lh ${gcs_bucket}/tmp/build/${commit_hash}/java/java_tools-* | sort -k 2 | grep gs -m 1 | awk '{print $4}')
+
+ gsutil -q cp -n ${tmp_url} "${gcs_bucket}/${rc_url}"
+ release_artifact="${rc_url}"
+
+ # Copy the associated zip file that contains the sources of the release zip.
+ # Don't overwrite existing file.
+ tmp_sources_url=$(gsutil ls -lh ${gcs_bucket}/tmp/sources/${commit_hash}/java/java_tools-* | sort -k 2 | grep gs -m 1 | awk '{print $4}')
+ gsutil -q cp -n ${tmp_sources_url} ${gcs_bucket}/${rc_sources_url}
+fi
+
+# Download the file locally to compute its sha256sum (needed to update the
+# java_tools in Bazel).
+# Don't overwrite existing file.
+local_zip="$tmp_dir/java_tools.zip"
+gsutil -q cp -n ${gcs_bucket}/${rc_url} ${local_zip}
+file_hash=$(sha256sum ${local_zip} | cut -d' ' -f1)
+echo "${release_artifact} ${file_hash}"
+
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD
index 27f69e9..4cfd2e7 100644
--- a/src/test/shell/bazel/BUILD
+++ b/src/test/shell/bazel/BUILD
@@ -183,9 +183,10 @@
srcs = ["bazel_java14_test.sh"],
args = [
# --java_toolchain and --host_java_toolchain values
- "@local_java_tools//:toolchain_jdk_14",
+ "@bazel_tools//tools/jdk:toolchain_jdk_14",
# java_tools zip to test
- "src/java_tools_java11.zip",
+ "src/java_tools.zip",
+ "src/java_tools_prebuilt.zip",
] + select({
# --javabase and --host_javabase values
"//src/conditions:darwin": ["@openjdk14_darwin_archive//:runtime"],
@@ -194,11 +195,16 @@
}),
data = [
":test-deps",
- "//src:java_tools_java11_zip",
+ "//src:java_tools_prebuilt_zip",
+ "//src:java_tools_zip",
"//src/test/shell/bazel/testdata:jdk_http_archives_filegroup",
"@bazel_tools//tools/bash/runfiles",
],
- tags = ["local"],
+ # TODO(ilist): reenable after java_tools release
+ tags = [
+ "local",
+ "manual",
+ ],
)
sh_test(
@@ -206,9 +212,10 @@
srcs = ["bazel_java15_test.sh"],
args = [
# --java_toolchain and --host_java_toolchain values
- "@local_java_tools//:toolchain_jdk_15",
+ "@bazel_tools//tools/jdk:toolchain_jdk_15",
# java_tools zip to test
- "src/java_tools_java11.zip",
+ "src/java_tools.zip",
+ "src/java_tools_prebuilt.zip",
] + select({
# --javabase and --host_javabase values
"//src/conditions:darwin": ["@openjdk15_darwin_archive//:runtime"],
@@ -217,11 +224,16 @@
}),
data = [
":test-deps",
- "//src:java_tools_java11_zip",
+ "//src:java_tools_prebuilt_zip",
+ "//src:java_tools_zip",
"//src/test/shell/bazel/testdata:jdk_http_archives_filegroup",
"@bazel_tools//tools/bash/runfiles",
],
- tags = ["local"],
+ # TODO(ilist): reenable after java_tools release
+ tags = [
+ "local",
+ "manual",
+ ],
)
sh_test(
@@ -233,6 +245,7 @@
args = [
"@bazel_tools//tools/jdk:toolchain",
"released",
+ "released",
],
data = [
":test-deps",
@@ -252,9 +265,10 @@
srcs = ["bazel_java_test.sh"],
args = [
# --java_toolchain
- "@local_java_tools//:toolchain",
- # java_tools zip to test
- "src/java_tools_java11.zip",
+ "@bazel_tools//tools/jdk:toolchain",
+ # java_tools zips to test
+ "src/java_tools.zip",
+ "src/java_tools_prebuilt.zip",
# --javabase value
] + select({
"//src/conditions:darwin": ["@openjdk" + java_version + "_darwin_archive//:runtime"],
@@ -263,11 +277,14 @@
}),
data = [
":test-deps",
- "//src:java_tools_java11_zip",
+ "//src:java_tools_prebuilt_zip",
+ "//src:java_tools_zip",
"//src/test/shell/bazel/testdata:jdk_http_archives_filegroup",
"@bazel_tools//tools/bash/runfiles",
],
exec_compatible_with = ["//:highcpu_machine"],
+ # TODO(ilist): reenable after java_tools release
+ tags = ["manual"],
)
for java_version in JAVA_VERSIONS
]
@@ -280,9 +297,10 @@
srcs = ["bazel_java_test.sh"],
args = [
# --java_toolchain
- "@local_java_tools//:prebuilt_toolchain",
- # java_tools zip to test
- "src/java_tools_java11.zip",
+ "@bazel_tools//tools/jdk:prebuilt_toolchain",
+ # java_tools zips to test
+ "src/java_tools.zip",
+ "src/java_tools_prebuilt.zip",
# --javabase value
] + select({
"//src/conditions:darwin": ["@openjdk" + java_version + "_darwin_archive//:runtime"],
@@ -291,11 +309,14 @@
}),
data = [
":test-deps",
- "//src:java_tools_java11_zip",
+ "//src:java_tools_prebuilt_zip",
+ "//src:java_tools_zip",
"//src/test/shell/bazel/testdata:jdk_http_archives_filegroup",
"@bazel_tools//tools/bash/runfiles",
],
exec_compatible_with = ["//:highcpu_machine"],
+ # TODO(ilist): reenable after java_tools release
+ tags = ["manual"],
)
for java_version in JAVA_VERSIONS
]
@@ -308,9 +329,10 @@
srcs = ["bazel_java_test.sh"],
args = [
# --java_toolchain
- "@local_java_tools//:toolchain",
- # java_tools zip to test
+ "@bazel_tools//tools/jdk:toolchain",
+ # java_tools zips to test
"$(LOCAL_JAVA_TOOLS_ZIP_URL)",
+ "$(LOCAL_JAVA_TOOLS_PREBUILT_ZIP_URL)",
# --javabase value
] + select({
"//src/conditions:darwin": ["@openjdk" + java_version + "_darwin_archive//:runtime"],
@@ -341,25 +363,25 @@
)
sh_test(
- name = "bazel_java_tools_javac11_test",
+ name = "bazel_java_tools_test",
size = "medium",
srcs = ["bazel_java_tools_test.sh"],
- args = ["java11"],
data = [
":test-deps",
- "//src:java_tools_java11.zip",
+ "//src:java_tools.zip",
+ "//src:java_tools_prebuilt.zip",
"@bazel_tools//tools/bash/runfiles",
],
)
sh_test(
- name = "bazel_java_tools_dist_javac11_test",
+ name = "bazel_java_tools_dist_test",
size = "small",
srcs = ["bazel_java_tools_dist_test.sh"],
args = ["javac11"],
data = [
":test-deps",
- "//src:java_tools_dist_javac11.zip",
+ "//src:java_tools_dist.zip",
"@bazel_tools//tools/bash/runfiles",
],
)
@@ -499,6 +521,7 @@
"@bazel_tools//tools/jdk:toolchain",
"released",
"released",
+ "released",
],
data = [
":test-deps",
@@ -514,13 +537,11 @@
sh_test(
name = "bazel_coverage_java_jdk" + java_version + "_toolchain_released_test",
srcs = ["bazel_coverage_java_test.sh"],
- args = select({
- "//src/conditions:darwin": ["@remote_java_tools_javac11_test_darwin//:toolchain"],
- "//src/conditions:windows": ["@remote_java_tools_javac11_test_windows//:toolchain"],
- "//src/conditions:linux": ["@remote_java_tools_javac11_test_linux//:toolchain"],
- }) + [
+ args = [
+ "@bazel_tools//tools/jdk:toolchain",
# java_tools zip to test
"released",
+ "released",
# coverage_report_generator to test
"released",
# --javabase value
@@ -547,9 +568,10 @@
srcs = ["bazel_coverage_java_test.sh"],
args = [
# --java_toolchain
- "@local_java_tools//:toolchain",
- # java_tools zip to test
- "src/java_tools_java11.zip",
+ "@bazel_tools//tools/jdk:toolchain",
+ # java_tools zips to test
+ "src/java_tools.zip",
+ "src/java_tools_prebuilt.zip",
# coverage output generator to test
"tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator/coverage",
# --javabase value
@@ -560,11 +582,13 @@
}),
data = [
":test-deps",
- "//src:java_tools_java11_zip",
+ "//src:java_tools_prebuilt_zip",
+ "//src:java_tools_zip",
"//src/test/shell/bazel/testdata:jdk_http_archives_filegroup",
"//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:coverage_output_generator_repo",
],
tags = [
+ "manual", # TODO(ilist): reenable after java_tools release
"no_windows",
],
)
diff --git a/src/test/shell/bazel/bazel_coverage_java_test.sh b/src/test/shell/bazel/bazel_coverage_java_test.sh
index deafebe..8d16aa8 100755
--- a/src/test/shell/bazel/bazel_coverage_java_test.sh
+++ b/src/test/shell/bazel/bazel_coverage_java_test.sh
@@ -35,6 +35,16 @@
fi
JAVA_TOOLS_ZIP_FILE_URL=${JAVA_TOOLS_ZIP_FILE_URL:-}
+JAVA_TOOLS_PREBUILT_ZIP="$1"; shift
+if [[ "${JAVA_TOOLS_PREBUILT_ZIP}" != "released" ]]; then
+ if [[ "${JAVA_TOOLS_PREBUILT_ZIP}" == file* ]]; then
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="${JAVA_TOOLS_PREBUILT_ZIP}"
+ else
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="file://$(rlocation io_bazel/$JAVA_TOOLS_PREBUILT_ZIP)"
+ fi
+fi
+JAVA_TOOLS_PREBUILT_ZIP_FILE_URL=${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL:-}
+
COVERAGE_GENERATOR_DIR="$1"; shift
if [[ "${COVERAGE_GENERATOR_DIR}" != "released" ]]; then
COVERAGE_GENERATOR_DIR="$(rlocation io_bazel/$COVERAGE_GENERATOR_DIR)"
@@ -56,9 +66,21 @@
if [[ ! -z "${JAVA_TOOLS_ZIP_FILE_URL}" ]]; then
cat >>WORKSPACE <<EOF
http_archive(
- name = "local_java_tools",
+ name = "remote_java_tools",
urls = ["${JAVA_TOOLS_ZIP_FILE_URL}"]
)
+http_archive(
+ name = "remote_java_tools_linux",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
+http_archive(
+ name = "remote_java_tools_windows",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
+http_archive(
+ name = "remote_java_tools_darwin",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
EOF
fi
diff --git a/src/test/shell/bazel/bazel_java14_test.sh b/src/test/shell/bazel/bazel_java14_test.sh
index ed82037..6dc78ef 100755
--- a/src/test/shell/bazel/bazel_java14_test.sh
+++ b/src/test/shell/bazel/bazel_java14_test.sh
@@ -56,6 +56,7 @@
JAVA_TOOLCHAIN="$1"; shift
JAVA_TOOLS_ZIP="$1"; shift
+JAVA_TOOLS_PREBUILT_ZIP="$1"; shift
JAVA_RUNTIME="$1"; shift
echo "JAVA_TOOLS_ZIP=$JAVA_TOOLS_ZIP"
@@ -65,10 +66,13 @@
if "$is_windows"; then
JAVA_TOOLS_ZIP_FILE_URL="file:///${JAVA_TOOLS_RLOCATION}"
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="file:///$(rlocation io_bazel/$JAVA_TOOLS_PREBUILT_ZIP)"
else
JAVA_TOOLS_ZIP_FILE_URL="file://${JAVA_TOOLS_RLOCATION}"
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="file://$(rlocation io_bazel/$JAVA_TOOLS_PREBUILT_ZIP)"
fi
JAVA_TOOLS_ZIP_FILE_URL=${JAVA_TOOLS_ZIP_FILE_URL:-}
+JAVA_TOOLS_PREBUILT_ZIP_FILE_URL=${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL:-}
add_to_bazelrc "build --java_toolchain=${JAVA_TOOLCHAIN}"
add_to_bazelrc "build --host_java_toolchain=${JAVA_TOOLCHAIN}"
@@ -81,9 +85,21 @@
# java_tools versions only used to test Bazel with various JDK toolchains.
http_archive(
- name = "local_java_tools",
+ name = "remote_java_tools",
urls = ["${JAVA_TOOLS_ZIP_FILE_URL}"]
)
+http_archive(
+ name = "remote_java_tools_linux",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
+http_archive(
+ name = "remote_java_tools_windows",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
+http_archive(
+ name = "remote_java_tools_darwin",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
EOF
cat $(rlocation io_bazel/src/test/shell/bazel/testdata/jdk_http_archives) >> WORKSPACE
}
diff --git a/src/test/shell/bazel/bazel_java15_test.sh b/src/test/shell/bazel/bazel_java15_test.sh
index 124e40a..fd09a33 100755
--- a/src/test/shell/bazel/bazel_java15_test.sh
+++ b/src/test/shell/bazel/bazel_java15_test.sh
@@ -56,6 +56,7 @@
JAVA_TOOLCHAIN="$1"; shift
JAVA_TOOLS_ZIP="$1"; shift
+JAVA_TOOLS_PREBUILT_ZIP="$1"; shift
JAVA_RUNTIME="$1"; shift
echo "JAVA_TOOLS_ZIP=$JAVA_TOOLS_ZIP"
@@ -65,10 +66,13 @@
if "$is_windows"; then
JAVA_TOOLS_ZIP_FILE_URL="file:///${JAVA_TOOLS_RLOCATION}"
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="file:///$(rlocation io_bazel/$JAVA_TOOLS_PREBUILT_ZIP)"
else
JAVA_TOOLS_ZIP_FILE_URL="file://${JAVA_TOOLS_RLOCATION}"
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="file://$(rlocation io_bazel/$JAVA_TOOLS_PREBUILT_ZIP)"
fi
JAVA_TOOLS_ZIP_FILE_URL=${JAVA_TOOLS_ZIP_FILE_URL:-}
+JAVA_TOOLS_PREBUILT_ZIP_FILE_URL=${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL:-}
add_to_bazelrc "build --java_toolchain=${JAVA_TOOLCHAIN}"
add_to_bazelrc "build --host_java_toolchain=${JAVA_TOOLCHAIN}"
@@ -81,9 +85,21 @@
# java_tools versions only used to test Bazel with various JDK toolchains.
http_archive(
- name = "local_java_tools",
+ name = "remote_java_tools",
urls = ["${JAVA_TOOLS_ZIP_FILE_URL}"]
)
+http_archive(
+ name = "remote_java_tools_linux",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
+http_archive(
+ name = "remote_java_tools_windows",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
+http_archive(
+ name = "remote_java_tools_darwin",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
EOF
cat $(rlocation io_bazel/src/test/shell/bazel/testdata/jdk_http_archives) >> WORKSPACE
}
diff --git a/src/test/shell/bazel/bazel_java_test.sh b/src/test/shell/bazel/bazel_java_test.sh
index b544b21..8eeb55d 100755
--- a/src/test/shell/bazel/bazel_java_test.sh
+++ b/src/test/shell/bazel/bazel_java_test.sh
@@ -71,6 +71,18 @@
fi
JAVA_TOOLS_ZIP_FILE_URL=${JAVA_TOOLS_ZIP_FILE_URL:-}
+JAVA_TOOLS_PREBUILT_ZIP="$1"; shift
+if [[ "${JAVA_TOOLS_PREBUILT_ZIP}" != "released" ]]; then
+ if [[ "${JAVA_TOOLS_PREBUILT_ZIP}" == file* ]]; then
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="${JAVA_TOOLS_PREBUILT_ZIP}"
+ elif "$is_windows"; then
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="file:///$(rlocation io_bazel/JAVA_TOOLS_PREBUILT_ZIP)"
+ else
+ JAVA_TOOLS_PREBUILT_ZIP_FILE_URL="file://$(rlocation io_bazel/JAVA_TOOLS_PREBUILT_ZIP)"
+ fi
+fi
+JAVA_TOOLS_PREBUILT_ZIP_FILE_URL=${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL:-}
+
if [[ $# -gt 0 ]]; then
JAVABASE_VALUE="$1"; shift
add_to_bazelrc "build --javabase=${JAVABASE_VALUE}"
@@ -88,9 +100,21 @@
if [[ ! -z "${JAVA_TOOLS_ZIP_FILE_URL}" ]]; then
cat >>WORKSPACE <<EOF
http_archive(
- name = "local_java_tools",
+ name = "remote_java_tools",
urls = ["${JAVA_TOOLS_ZIP_FILE_URL}"]
)
+http_archive(
+ name = "remote_java_tools_linux",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
+http_archive(
+ name = "remote_java_tools_windows",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
+http_archive(
+ name = "remote_java_tools_darwin",
+ urls = ["${JAVA_TOOLS_PREBUILT_ZIP_FILE_URL}"]
+)
EOF
fi
diff --git a/src/test/shell/bazel/bazel_java_tools_dist_test.sh b/src/test/shell/bazel/bazel_java_tools_dist_test.sh
index 3703d51..acb8191 100755
--- a/src/test/shell/bazel/bazel_java_tools_dist_test.sh
+++ b/src/test/shell/bazel/bazel_java_tools_dist_test.sh
@@ -19,8 +19,6 @@
set -euo pipefail
-JAVA_TOOLS_JAVA_VERSION="$1"; shift
-
# --- begin runfiles.bash initialization ---
if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
if [[ -f "$0.runfiles_manifest" ]]; then
@@ -71,8 +69,8 @@
function expect_path_in_java_tools() {
path="$1"; shift
- (zipinfo -1 $(rlocation io_bazel/src/java_tools_dist_${JAVA_TOOLS_JAVA_VERSION}.zip) \
- | grep -c "$path") >& ${TEST_log} || fail "Path $path not found in java_tools_${JAVA_TOOLS_JAVA_VERSION}.zip"
+ (zipinfo -1 $(rlocation io_bazel/src/java_tools_dist.zip) \
+ | grep -c "$path") >& ${TEST_log} || fail "Path $path not found in java_tools_dist.zip"
}
function test_java_tools_has_ijar() {
diff --git a/src/test/shell/bazel/bazel_java_tools_test.sh b/src/test/shell/bazel/bazel_java_tools_test.sh
index e554a58..db1c8aa 100755
--- a/src/test/shell/bazel/bazel_java_tools_test.sh
+++ b/src/test/shell/bazel/bazel_java_tools_test.sh
@@ -17,8 +17,6 @@
# Load the test setup defined in the parent directory
set -euo pipefail
-JAVA_TOOLS_JAVA_VERSION="$1"; shift
-
# --- begin runfiles.bash initialization ---
if [[ ! -d "${RUNFILES_DIR:-/dev/null}" && ! -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
if [[ -f "$0.runfiles_manifest" ]]; then
@@ -66,33 +64,51 @@
fi
function set_up() {
- local java_tools_rlocation=$(rlocation io_bazel/src/java_tools_${JAVA_TOOLS_JAVA_VERSION}.zip)
+ local java_tools_rlocation=$(rlocation io_bazel/src/java_tools.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
+ local java_tools_prebuilt_rlocation=$(rlocation io_bazel/src/java_tools_prebuilt.zip)
+ local java_tools_prebuilt_zip_file_url="file://${java_tools_prebuilt_rlocation}"
+ if "$is_windows"; then
+ java_tools_prebuilt_zip_file_url="file:///${java_tools_prebuilt_rlocation}"
+ fi
cat > WORKSPACE <<EOF
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "local_java_tools",
urls = ["${java_tools_zip_file_url}"]
)
+http_archive(
+ name = "local_java_tools_prebuilt",
+ urls = ["${java_tools_prebuilt_zip_file_url}"]
+)
EOF
}
function expect_path_in_java_tools() {
path="$1"; shift
- count=$(zipinfo -1 $(rlocation io_bazel/src/java_tools_${JAVA_TOOLS_JAVA_VERSION}.zip) | grep -c "$path")
- [[ "$count" -gt 0 ]] || fail "Path $path not found in java_tools_${JAVA_TOOLS_JAVA_VERSION}.zip"
+ count=$(zipinfo -1 $(rlocation io_bazel/src/java_tools.zip) | grep -c "$path")
+ [[ "$count" -gt 0 ]] || fail "Path $path not found in java_tools.zip"
}
+function expect_path_in_java_tools_prebuilt() {
+ path="$1"; shift
+
+ count=$(zipinfo -1 $(rlocation io_bazel/src/java_tools_prebuilt.zip) | grep -c "$path")
+ [[ "$count" -gt 0 ]] || fail "Path $path not found in java_tools_prebuilt.zip"
+}
+
+
function test_java_tools_has_ijar() {
expect_path_in_java_tools "java_tools/ijar"
+ expect_path_in_java_tools_prebuilt "java_tools/ijar"
}
function test_java_tools_has_ijar_binary() {
- expect_path_in_java_tools "java_tools/ijar/ijar"
+ expect_path_in_java_tools_prebuilt "java_tools/ijar/ijar"
}
function test_java_tools_has_zlib() {
@@ -113,10 +129,11 @@
function test_java_tools_has_singlejar() {
expect_path_in_java_tools "java_tools/src/tools/singlejar"
+ expect_path_in_java_tools_prebuilt "java_tools/src/tools/singlejar"
}
function test_java_tools_has_singlejar_local() {
- expect_path_in_java_tools "java_tools/src/tools/singlejar/singlejar_local"
+ expect_path_in_java_tools_prebuilt "java_tools/src/tools/singlejar/singlejar_local"
}
function test_java_tools_has_VanillaJavaBuilder() {
@@ -176,7 +193,7 @@
}
function test_java_tools_toolchain_builds() {
- bazel build @local_java_tools//:toolchain || fail "toolchain failed to build"
+ bazel build @bazel_tools//tools/jdk:toolchain || fail "toolchain failed to build"
}
function test_java_tools_singlejar_builds() {
@@ -187,93 +204,4 @@
bazel build @local_java_tools//:ijar_cc_binary || fail "ijar failed to build"
}
-function test_java_toolchain_default_manualConfiguration() {
- cat > BUILD <<EOF
-load("@local_java_tools//:java_toolchain_default.bzl", "java_toolchain_default")
-java_toolchain_default(
- name = "vanilla",
- javabuilder = ["//:VanillaJavaBuilder"],
- jvm_opts = [],
-)
-EOF
- bazel build //:vanilla || fail "java_toolchain_default target failed to build"
-}
-
-function test_java_toolchain_default_manualConfigurationWithLocation() {
- cat > BUILD <<EOF
-load("@local_java_tools//:java_toolchain_default.bzl", "java_toolchain_default", "JDK9_JVM_OPTS")
-java_toolchain_default(
- name = "toolchain",
- jvm_opts = [
- # In JDK9 we have seen a ~30% slow down in JavaBuilder performance when using
- # G1 collector and having compact strings enabled.
- "-XX:+UseParallelOldGC",
- "-XX:-CompactStrings",
- # override the javac in the JDK.
- "--patch-module=java.compiler=\$(location //:java_compiler_jar)",
- "--patch-module=jdk.compiler=\$(location //:jdk_compiler_jar)",
- ] + JDK9_JVM_OPTS,
- tools = [
- "//:java_compiler_jar",
- "//:jdk_compiler_jar",
- ],
-)
-EOF
- bazel build //:toolchain || fail "java_toolchain_default target failed to build"
-}
-
-function test_java_toolchain_default_jvm8Toolchain() {
- cat > BUILD <<EOF
-load("@local_java_tools//:java_toolchain_default.bzl", "java_toolchain_default", "JVM8_TOOLCHAIN_CONFIGURATION")
-java_toolchain_default(
- name = "jvm8_toolchain",
- configuration = JVM8_TOOLCHAIN_CONFIGURATION,
-)
-EOF
- bazel build //:jvm8_toolchain || fail "java_toolchain_default target failed to build"
-}
-
-function test_java_toolchain_default_javabuilderToolchain() {
- cat > BUILD <<EOF
-load("@local_java_tools//:java_toolchain_default.bzl", "java_toolchain_default", "JAVABUILDER_TOOLCHAIN_CONFIGURATION")
-java_toolchain_default(
- name = "javabuilder_toolchain",
- configuration = JAVABUILDER_TOOLCHAIN_CONFIGURATION,
-)
-EOF
- bazel build //:javabuilder_toolchain || fail "java_toolchain_default target failed to build"
-}
-
-function test_java_toolchain_default_vanillaToolchain() {
- cat > BUILD <<EOF
-load("@local_java_tools//:java_toolchain_default.bzl", "java_toolchain_default", "VANILLA_TOOLCHAIN_CONFIGURATION")
-java_toolchain_default(
- name = "vanilla_toolchain",
- configuration = VANILLA_TOOLCHAIN_CONFIGURATION,
-)
-EOF
- bazel build //:vanilla_toolchain || fail "java_toolchain_default target failed to build"
-}
-
-function test_java_toolchain_default_prebuiltToolchain() {
- cat > BUILD <<EOF
-load("@local_java_tools//:java_toolchain_default.bzl", "java_toolchain_default", "PREBUILT_TOOLCHAIN_CONFIGURATION")
-java_toolchain_default(
- name = "prebuilt_toolchain",
- configuration = PREBUILT_TOOLCHAIN_CONFIGURATION,
-)
-EOF
- bazel build //:prebuilt_toolchain || fail "java_toolchain_default target failed to build"
-}
-
-function test_java_toolchain_default_notInTools() {
- cat > BUILD <<EOF
-load("@bazel_tools//tools/jdk:java_toolchain_default.bzl", "java_toolchain_default")
-filegroup(
- name = "dummy",
-)
-EOF
- (bazel build //:dummy && fail "java_toolchain_default accessible from @bazel_tools") || true
-}
-
run_suite "Java tools archive tests"
diff --git a/src/tools/singlejar/BUILD b/src/tools/singlejar/BUILD
index 0bbc474..a2dd5b7 100644
--- a/src/tools/singlejar/BUILD
+++ b/src/tools/singlejar/BUILD
@@ -1,11 +1,10 @@
load("@rules_java//java:defs.bzl", "java_library")
+load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
# Description:
# singlejar C++ implementation.
package(default_visibility = ["//src:__subpackages__"])
-load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")
-
filegroup(
name = "srcs",
srcs = glob(["**"]),
@@ -60,13 +59,22 @@
genrule(
name = "singlejar_zip",
- srcs = SOURCES + [":singlejar_local"],
+ srcs = SOURCES,
outs = ["singlejar.zip"],
cmd = "$(location //src:zip_files) src/tools/singlejar $@ $$(echo $(SRCS) | sort)",
tools = ["//src:zip_files"],
visibility = ["//visibility:private"],
)
+genrule(
+ name = "singlejar_deploy_zip",
+ srcs = [":singlejar_local"],
+ outs = ["singlejar_deploy.zip"],
+ cmd = "$(location //src:zip_files) src/tools/singlejar $@ $$(echo $(SRCS) | sort)",
+ tools = ["//src:zip_files"],
+ visibility = ["//src:__pkg__"],
+)
+
cc_binary(
name = "singlejar",
srcs = [
diff --git a/src/upload_all_java_tools.sh b/src/upload_all_java_tools.sh
index f40004b..e8ef359 100755
--- a/src/upload_all_java_tools.sh
+++ b/src/upload_all_java_tools.sh
@@ -30,14 +30,19 @@
case "$(uname -s | tr [:upper:] [:lower:])" in
msys*|mingw*|cygwin*)
- declare -r is_windows=true
+ declare -r platform=windows
+ ;;
+linux*)
+ declare -r platform=linux
;;
*)
- declare -r is_windows=false
+ declare -r platform=other
;;
esac
-if "$is_windows"; then
+echo Platform: $platform
+
+if [[ "$platform" == "windows" ]]; then
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
fi
@@ -48,35 +53,47 @@
# Passing the same commit_hash and timestamp to all targets to mark all the artifacts
# uploaded on GCS with the same identifier.
-for java_version in 11; do
- bazel build //src:java_tools_java${java_version}_zip
- zip_path=${PWD}/bazel-bin/src/java_tools_java${java_version}.zip
+bazel build //src:java_tools_zip
+zip_path=${PWD}/bazel-bin/src/java_tools.zip
- if "$is_windows"; then
- # Windows needs "file:///c:/foo/bar".
- file_url="file:///$(cygpath -m ${zip_path})"
- else
- # Non-Windows needs "file:///foo/bar".
- file_url="file://${zip_path}"
- fi
+bazel build //src:java_tools_prebuilt_zip
+prebuilt_zip_path=${PWD}/bazel-bin/src/java_tools_prebuilt.zip
- # Skip for now, as the test is broken on Windows.
- # See https://github.com/bazelbuild/bazel/issues/12244 for details
- if not "$is_windows"; then
+if [[ "$platform" == "windows" ]]; then
+ # Windows needs "file:///c:/foo/bar".
+ file_url="file:///$(cygpath -m ${zip_path})"
+ prebuilt_file_url="file:///$(cygpath -m ${prebuilt_zip_path})"
+else
+ # Non-Windows needs "file:///foo/bar".
+ file_url="file://${zip_path}"
+ prebuilt_file_url="file://${prebuilt_zip_path}"
+fi
+
+# Skip for now, as the test is broken on Windows.
+# See https://github.com/bazelbuild/bazel/issues/12244 for details
+if [[ "$platform" != "windows" ]]; then
+ for java_version in 11 14 15; do
bazel test --verbose_failures --test_output=all --nocache_test_results \
//src/test/shell/bazel:bazel_java_test_local_java_tools_jdk${java_version} \
- --define=LOCAL_JAVA_TOOLS_ZIP_URL="${file_url}"
- fi
+ --define=LOCAL_JAVA_TOOLS_ZIP_URL="${file_url}" \
+ --define=LOCAL_JAVA_TOOLS_PREBUILT_ZIP_URL="${prebuilt_file_url}"
+ done
+fi
- bazel run //src:upload_java_tools_java${java_version} -- \
- --java_tools_zip src/java_tools_java${java_version}.zip \
+bazel run //src:upload_java_tools_prebuilt -- \
+ --commit_hash ${commit_hash} \
+ --timestamp ${timestamp} \
+ --bazel_version ${bazel_version}
+
+if [[ "$platform" == "linux" ]]; then
+ bazel run //src:upload_java_tools -- \
--commit_hash ${commit_hash} \
--timestamp ${timestamp} \
--bazel_version ${bazel_version}
- bazel run //src:upload_java_tools_dist_java${java_version} -- \
+ bazel run //src:upload_java_tools_dist -- \
--commit_hash ${commit_hash} \
--timestamp ${timestamp} \
--bazel_version ${bazel_version}
-done
+fi
diff --git a/src/upload_java_tools.sh b/src/upload_java_tools.sh
index 4e21358..2dee86c 100755
--- a/src/upload_java_tools.sh
+++ b/src/upload_java_tools.sh
@@ -20,8 +20,7 @@
# Mandatory flags:
# --java_tools_zip The workspace-relative path of a java_tools zip.
# --gcs_java_tools_dir The directory under bazel_java_tools on GCS where the zip is uploaded.
-# --java_version The version of the javac the given zip embeds.
-# --platform The name of the platform where the zip was built.
+# --platform Optional: The name of the platform where the zip was built. (If empty the zip should be platform independent).
set -euo pipefail
@@ -67,7 +66,6 @@
case "$arg" in
"--java_tools_zip") java_tools_zip_name="$val" ;;
"--gcs_java_tools_dir") gcs_java_tools_dir="$val" ;;
- "--java_version") java_version="$val" ;;
"--platform") platform="$val" ;;
"--commit_hash") commit_hash="$val" ;;
"--timestamp") timestamp="$val" ;;
@@ -77,6 +75,7 @@
done
java_tools_zip=$(rlocation io_bazel/${java_tools_zip_name})
+platform=${platform:+"_"}${platform:-}
# Create a temp directory and a writable temp zip file to add a README.md file to
# the initial zip.
@@ -98,14 +97,14 @@
$ git clone https://github.com/bazelbuild/bazel.git
$ git checkout ${commit_hash}
-$ bazel build //src:java_tools_java${java_version}.zip
+$ bazel build //src:java_tools_prebuilt.zip
EOF
# Add the README.md file to the temp zip.
zip -rv "${tmp_zip}" "${readme_file}"
gsutil_cmd="gsutil"
-if [[ "$platform" == "windows" ]]; then
+if "$is_windows"; then
gsutil_cmd="gsutil.cmd"
fi
@@ -119,4 +118,4 @@
# Upload the zip that contains the README.md to GCS.
"$gsutil_cmd" cp "$zip_url" \
- "gs://bazel-mirror/bazel_java_tools/${gcs_java_tools_dir}/${commit_hash}/java${java_version}/java_tools_javac${java_version}_${platform}-${timestamp}.zip"
+ "gs://bazel-mirror/bazel_java_tools/${gcs_java_tools_dir}/${commit_hash}/java/java_tools${platform}-${timestamp}.zip"
diff --git a/tools/jdk/BUILD b/tools/jdk/BUILD
index 9e005b3..860804f 100644
--- a/tools/jdk/BUILD
+++ b/tools/jdk/BUILD
@@ -419,12 +419,12 @@
srcs = [
"BUILD.java_langtools",
"BUILD.java_tools",
+ "BUILD.java_tools_prebuilt",
"BUILD-jdk", # Tools are build from the workspace for tests.
"DumpPlatformClassPath.java",
"default_java_toolchain.bzl",
"fail_rule.bzl",
"java_toolchain_alias.bzl",
- "java_toolchain_default.bzl.java_tools",
"jdk.BUILD",
"local_java_repository.bzl",
"nosystemjdk/README",
diff --git a/tools/jdk/BUILD.java_tools b/tools/jdk/BUILD.java_tools
index b68c186..78fb5e1 100644
--- a/tools/jdk/BUILD.java_tools
+++ b/tools/jdk/BUILD.java_tools
@@ -5,16 +5,7 @@
licenses(["notice"]) # Apache 2.0
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_proto_library")
-load("@rules_java//java:defs.bzl", "java_binary", "java_import", "java_toolchain")
load("@rules_proto//proto:defs.bzl", "proto_library")
-load(
- ":java_toolchain_default.bzl",
- "JAVABUILDER_TOOLCHAIN_CONFIGURATION",
- "JVM8_TOOLCHAIN_CONFIGURATION",
- "PREBUILT_TOOLCHAIN_CONFIGURATION",
- "VANILLA_TOOLCHAIN_CONFIGURATION",
- "java_toolchain_default",
-)
SUPRESSED_WARNINGS = select({
":windows": [],
@@ -24,80 +15,6 @@
],
})
-java_toolchain_default(
- name = "toolchain",
- configuration = JAVABUILDER_TOOLCHAIN_CONFIGURATION,
-)
-
-java_toolchain_default(
- name = "toolchain_hostjdk8",
- configuration = JVM8_TOOLCHAIN_CONFIGURATION,
- source_version = "8",
- target_version = "8",
-)
-
-# Default to the Java 8 language level.
-# TODO(cushon): consider if/when we should increment this?
-java_toolchain_default(
- name = "legacy_toolchain",
- configuration = JAVABUILDER_TOOLCHAIN_CONFIGURATION,
- source_version = "8",
- target_version = "8",
-)
-
-# Needed for openbsd / JVM8
-java_toolchain_default(
- name = "legacy_toolchain_jvm8",
- configuration = JVM8_TOOLCHAIN_CONFIGURATION,
- source_version = "8",
- target_version = "8",
-)
-
-java_toolchain_default(
- name = "toolchain_vanilla",
- configuration = VANILLA_TOOLCHAIN_CONFIGURATION,
-)
-
-RELEASES = (8, 9, 10, 11)
-
-[
- (
- java_toolchain_default(
- name = "toolchain_java%d" % release,
- configuration = JAVABUILDER_TOOLCHAIN_CONFIGURATION,
- source_version = "%s" % release,
- target_version = "%s" % release,
- ),
- # Needed for openbsd / JVM8
- java_toolchain_default(
- name = "toolchain_java%d_jvm8" % release,
- configuration = JVM8_TOOLCHAIN_CONFIGURATION,
- source_version = "%s" % release,
- target_version = "%s" % release,
- ),
- )
- for release in RELEASES
-]
-
-# A toolchain that targets java 14.
-java_toolchain_default(
- name = "toolchain_jdk_14",
- source_version = "14",
- target_version = "14",
-)
-
-# A toolchain that targets java 15.
-java_toolchain_default(
- name = "toolchain_jdk_15",
- source_version = "15",
- target_version = "15",
-)
-
-java_toolchain_default(
- name = "prebuilt_toolchain",
- configuration = PREBUILT_TOOLCHAIN_CONFIGURATION,
-)
-
filegroup(
name = "GenClass",
srcs = ["java_tools/GenClass_deploy.jar"],
@@ -227,43 +144,6 @@
)
config_setting(
- name = "remote",
- values = {"define": "EXECUTOR=remote"},
-)
-
-config_setting(
- name = "linux_x86_64",
- constraint_values = [
- "@platforms//os:linux",
- "@platforms//cpu:x86_64",
- ],
-)
-
-config_setting(
- name = "darwin_x86_64",
- constraint_values = [
- "@platforms//os:macos",
- "@platforms//cpu:x86_64",
- ],
-)
-
-config_setting(
- name = "darwin_arm64",
- constraint_values = [
- "@platforms//os:macos",
- "@platforms//cpu:arm64",
- ],
-)
-
-config_setting(
- name = "darwin_arm64e",
- constraint_values = [
- "@platforms//os:macos",
- "@platforms//cpu:arm64e",
- ],
-)
-
-config_setting(
name = "windows",
constraint_values = ["@platforms//os:windows"],
)
@@ -280,62 +160,6 @@
visibility = ["//visibility:public"],
)
-alias(
- name = "singlejar",
- actual = select({
- "//:remote": ":singlejar_cc_bin",
- "//conditions:default": ":singlejar_prebuilt_or_cc_binary",
- }),
-)
-
-alias(
- name = "singlejar_prebuilt_or_cc_binary",
- actual = select({
- ":linux_x86_64": "java_tools/src/tools/singlejar/singlejar_local",
- ":darwin_x86_64": "java_tools/src/tools/singlejar/singlejar_local",
- ":darwin_arm64": "java_tools/src/tools/singlejar/singlejar_local",
- ":darwin_arm64e": "java_tools/src/tools/singlejar/singlejar_local",
- ":windows": "java_tools/src/tools/singlejar/singlejar_local.exe",
- "//conditions:default": "singlejar_cc_bin",
- }),
-)
-
-alias(
- name = "prebuilt_singlejar",
- actual = select({
- ":windows": "java_tools/src/tools/singlejar/singlejar_local.exe",
- "//conditions:default": "java_tools/src/tools/singlejar/singlejar_local",
- }),
-)
-
-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_x86_64": ":ijar_prebuilt_binary",
- ":darwin_arm64": ":ijar_prebuilt_binary",
- ":darwin_arm64e": ":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_library(
name = "malloc",
)
diff --git a/tools/jdk/BUILD.java_tools_prebuilt b/tools/jdk/BUILD.java_tools_prebuilt
new file mode 100644
index 0000000..e293c72
--- /dev/null
+++ b/tools/jdk/BUILD.java_tools_prebuilt
@@ -0,0 +1,24 @@
+package(default_visibility = ["//visibility:public"])
+
+licenses(["notice"]) # Apache 2.0
+
+config_setting(
+ name = "windows",
+ constraint_values = ["@platforms//os:windows"],
+)
+
+filegroup(
+ name = "prebuilt_singlejar",
+ srcs = select({
+ ":windows": ["java_tools/src/tools/singlejar/singlejar_local.exe"],
+ "//conditions:default": ["java_tools/src/tools/singlejar/singlejar_local"],
+ }),
+)
+
+filegroup(
+ name = "ijar_prebuilt_binary",
+ srcs = select({
+ ":windows": ["java_tools/ijar/ijar.exe"],
+ "//conditions:default": ["java_tools/ijar/ijar"],
+ }),
+)
\ No newline at end of file
diff --git a/tools/jdk/java_toolchain_default.bzl.java_tools b/tools/jdk/java_toolchain_default.bzl.java_tools
deleted file mode 100644
index 356c9fe..0000000
--- a/tools/jdk/java_toolchain_default.bzl.java_tools
+++ /dev/null
@@ -1,178 +0,0 @@
-# Copyright 2020 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.
-
-"""Bazel rules for creating Java toolchains."""
-
-_DEFAULT_JAVACOPTS = [
- "-XDskipDuplicateBridges=true",
- "-XDcompilePolicy=simple",
- "-g",
- "-parameters",
-]
-
-# JVM options, without patching java.compiler and jdk.compiler modules.
-JDK9_JVM_OPTS = [
- # Allow JavaBuilder to access internal javac APIs.
- "--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED",
- "--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
- "--add-exports=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED",
- "--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
- "--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED",
- "--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
- "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
- "--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED",
-
- # quiet warnings from com.google.protobuf.UnsafeUtil,
- # see: https://github.com/google/protobuf/issues/3781
- # and: https://github.com/bazelbuild/bazel/issues/5599
- "--add-opens=java.base/java.nio=ALL-UNNAMED",
- "--add-opens=java.base/java.lang=ALL-UNNAMED",
-]
-
-# java_toolchain parameters without specifying javac, java.compiler,
-# jdk.compiler module, and jvm_opts
-_BASE_TOOLCHAIN_CONFIGURATION = dict(
- forcibly_disable_header_compilation = False,
- genclass = ["//:GenClass"],
- header_compiler = ["//:TurbineDirect"],
- header_compiler_direct = ["//:TurbineDirect"],
- ijar = ["//:ijar"],
- javabuilder = ["//:JavaBuilder"],
- javac_supports_workers = True,
- jacocorunner = "//:jacoco_coverage_runner_filegroup",
- jvm_opts = JDK9_JVM_OPTS,
- misc = _DEFAULT_JAVACOPTS,
- singlejar = ["//:singlejar"],
- # Code to enumerate target JVM boot classpath uses host JVM. Because
- # java_runtime-s are involved, its implementation is in @bazel_tools.
- bootclasspath = ["@bazel_tools//tools/jdk:platformclasspath"],
- source_version = "8",
- target_version = "8",
-)
-
-JVM8_TOOLCHAIN_CONFIGURATION = dict(
- tools = ["//:javac_jar"],
- jvm_opts = ["-Xbootclasspath/p:$(location //:javac_jar)"],
-)
-
-JAVABUILDER_TOOLCHAIN_CONFIGURATION = dict(
- jvm_opts = [
- # In JDK9 we have seen a ~30% slow down in JavaBuilder performance when using
- # G1 collector and having compact strings enabled.
- "-XX:+UseParallelOldGC",
- "-XX:-CompactStrings",
- # override the javac in the JDK.
- "--patch-module=java.compiler=$(location //:java_compiler_jar)",
- "--patch-module=jdk.compiler=$(location //:jdk_compiler_jar)",
- ] + JDK9_JVM_OPTS,
- tools = [
- "//:java_compiler_jar",
- "//:jdk_compiler_jar",
- ],
-)
-
-# The 'vanilla' toolchain is an unsupported alternative to the default.
-#
-# It does not provide any of the following features:
-# * Error Prone
-# * Strict Java Deps
-# * Header Compilation
-# * Reduced Classpath Optimization
-#
-# It uses the version of internal javac from the `--host_javabase` JDK instead
-# of providing a javac. Internal javac may not be source- or bug-compatible with
-# the javac that is provided with other toolchains.
-#
-# However it does allow using a wider range of `--host_javabase`s, including
-# versions newer than the current JDK.
-VANILLA_TOOLCHAIN_CONFIGURATION = dict(
- forcibly_disable_header_compilation = True,
- javabuilder = ["//:VanillaJavaBuilder"],
- jvm_opts = [],
-)
-
-# The new toolchain is using all the pre-built tools, including
-# singlejar and ijar, even on remote execution. This toolchain
-# should be used only when host and execution platform are the
-# same, otherwise the binaries will not work on the execution
-# platform.
-PREBUILT_TOOLCHAIN_CONFIGURATION = dict(
- jvm_opts = [
- # In JDK9 we have seen a ~30% slow down in JavaBuilder performance when using
- # G1 collector and having compact strings enabled.
- "-XX:+UseParallelOldGC",
- "-XX:-CompactStrings",
- # override the javac in the JDK.
- "--patch-module=java.compiler=$(location //:java_compiler_jar)",
- "--patch-module=jdk.compiler=$(location //:jdk_compiler_jar)",
- ] + JDK9_JVM_OPTS,
- tools = [
- "//:java_compiler_jar",
- "//:jdk_compiler_jar",
- ],
- ijar = ["//:ijar_prebuilt_binary"],
- singlejar = ["//:prebuilt_singlejar"],
-)
-
-_LABEL_LISTS = [
- "bootclasspath",
- "javac",
- "tools",
- "javabuilder",
- "singlejar",
- "genclass",
- "resourcejar",
- "ijar",
- "header_compiler",
- "header_compiler_direct",
- "package_configuration",
-]
-
-_LABELS = [
- "timezone_data",
- "oneversion",
- "oneversion_whitelist",
- "jacocorunner",
- "proguard_allowlister",
- "java_runtime",
-]
-
-# Converts values to labels, so that they are resolved relative to this java_tools repository
-def _to_label(k, v):
- if k in _LABELS and type(v) != type(Label("//a")):
- return Label(v)
- if k in _LABEL_LISTS and type(v) == type([Label("//a")]):
- return [Label(label) if type(label) == type("") else label for label in v]
- return v
-
-# Makes labels in jvm_opts absolute, that is replaces " //:" with " @repo//:".
-def _format_jvm_opts(toolchain_args, repo):
- jvm_opts = toolchain_args["jvm_opts"]
- if [opt for opt in jvm_opts if opt.find(" :") >= 0] != []:
- fail("Relative labels are not supported in jvm_opts parameter.")
- jvm_opts = [opt.replace(" //:", " @{repo}//:").format(repo = repo) for opt in jvm_opts]
- return dict(toolchain_args, jvm_opts = jvm_opts)
-
-def java_toolchain_default(name, configuration = dict(), **kwargs):
- """Defines a java_toolchain with appropriate defaults for Bazel."""
-
- toolchain_args = dict(_BASE_TOOLCHAIN_CONFIGURATION)
- toolchain_args.update(configuration)
- toolchain_args.update(kwargs)
- toolchain_args = {k: _to_label(k, v) for k, v in toolchain_args.items()}
- toolchain_args = _format_jvm_opts(toolchain_args, Label("//x").workspace_name)
- native.java_toolchain(
- name = name,
- **toolchain_args
- )