Add embedded jdk support for ppc64le
This adds support for embedding OpenJDK in bazel for ppc64le.
Azul Systems does not create Zulu/OpenJDK builds for ppc64le, but AdoptOpenjdk.net does.
This PR adds the necessary configs and conditionals and http_file configuration URLs for adoptopenjdk downloads.
The minimize_jdk.sh script needed a slight generalization.
I've been using adoptOpenjdk-embedded bazel for quite a while and can vouch for its stability.
Closes #11436.
PiperOrigin-RevId: 313571170
diff --git a/src/BUILD b/src/BUILD
index 0d46818..124585b 100644
--- a/src/BUILD
+++ b/src/BUILD
@@ -226,6 +226,9 @@
"//src/conditions:linux_aarch64": [
"@openjdk_linux_aarch64_vanilla//file",
],
+ "//src/conditions:linux_ppc64le": [
+ "@openjdk_linux_ppc64le_vanilla//file",
+ ],
"//conditions:default": [
"@openjdk_linux_vanilla//file",
],
@@ -758,6 +761,7 @@
"@remote_java_tools_windows_for_testing//:WORKSPACE",
"@remotejdk11_linux_aarch64_for_testing//:WORKSPACE",
"@remotejdk11_linux_for_testing//:WORKSPACE",
+ "@remotejdk11_linux_ppc64le_for_testing//:WORKSPACE",
"@remotejdk11_macos_for_testing//:WORKSPACE",
"@remotejdk11_win_for_testing//:WORKSPACE",
"@rules_cc//:WORKSPACE",
diff --git a/src/conditions/BUILD b/src/conditions/BUILD
index dd0b481..bfc88c8 100644
--- a/src/conditions/BUILD
+++ b/src/conditions/BUILD
@@ -23,6 +23,12 @@
)
config_setting(
+ name = "linux_ppc64le",
+ values = {"cpu": "ppc"},
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
name = "linux_s390x",
values = {"cpu": "s390x"},
visibility = ["//visibility:public"],
diff --git a/src/conditions/BUILD.tools b/src/conditions/BUILD.tools
index 4d94790..393add7 100644
--- a/src/conditions/BUILD.tools
+++ b/src/conditions/BUILD.tools
@@ -23,6 +23,12 @@
)
config_setting(
+ name = "linux_ppc64le",
+ values = {"cpu": "ppc"},
+ visibility = ["//visibility:public"],
+)
+
+config_setting(
name = "linux_s390x",
values = {"cpu": "s390x"},
visibility = ["//visibility:public"],
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 95f7f0b..c5f8ef6 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
@@ -120,6 +120,19 @@
# This must be kept in sync with the top-level WORKSPACE file.
maybe(
http_archive,
+ name = "remotejdk11_linux_ppc64le",
+ build_file = "@local_jdk//:BUILD.bazel",
+ sha256 = "a417db0295b1f4b538ecbaf7c774f3a177fab9657a665940170936c0eca4e71a",
+ strip_prefix = "jdk-11.0.7+10",
+ urls = [
+ "https://mirror.bazel.com/openjdk/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.7%2B10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.7_10.tar.gz",
+ "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.7%2B10/OpenJDK11U-jdk_ppc64le_linux_hotspot_11.0.7_10.tar.gz",
+ ],
+)
+
+# This must be kept in sync with the top-level WORKSPACE file.
+maybe(
+ http_archive,
name = "remotejdk11_macos",
build_file = "@local_jdk//:BUILD.bazel",
sha256 = "e1fe56769f32e2aaac95e0a8f86b5a323da5af3a3b4bba73f3086391a6cc056f",
diff --git a/src/minimize_jdk.sh b/src/minimize_jdk.sh
index fb9186b..52e1c79 100755
--- a/src/minimize_jdk.sh
+++ b/src/minimize_jdk.sh
@@ -30,6 +30,14 @@
fi
fulljdk=$1
out=$3
+ARCH=`uname -p`
+if [[ "${ARCH}" == 'ppc64le' ]]; then
+ FULL_JDK_DIR="jdk*"
+ DOCS=""
+else
+ FULL_JDK_DIR="zulu*"
+ DOCS="DISCLAIMER readme.txt"
+fi
UNAME=$(uname -s | tr 'A-Z' 'a-z')
@@ -38,11 +46,11 @@
mkdir "tmp.$$"
cd "tmp.$$"
unzip "../$fulljdk"
- cd zulu*
+ cd $FULL_JDK_DIR
./bin/jlink --module-path ./jmods/ --add-modules "$modules" \
--vm=server --strip-debug --no-man-pages \
--output reduced
- cp DISCLAIMER readme.txt legal/java.base/ASSEMBLY_EXCEPTION \
+ cp $DOCS legal/java.base/ASSEMBLY_EXCEPTION \
reduced/
# These are necessary for --host_jvm_debug to work.
cp bin/dt_socket.dll bin/jdwp.dll reduced/bin
@@ -55,11 +63,11 @@
# to the owner stored in the archive - it will try to do that when running as
# root, but fail when running inside Docker, so we explicitly disable it.
tar xf "$fulljdk" --no-same-owner
- cd zulu*
+ cd $FULL_JDK_DIR
./bin/jlink --module-path ./jmods/ --add-modules "$modules" \
--vm=server --strip-debug --no-man-pages \
--output reduced
- cp DISCLAIMER readme.txt legal/java.base/ASSEMBLY_EXCEPTION \
+ cp $DOCS legal/java.base/ASSEMBLY_EXCEPTION \
reduced/
# These are necessary for --host_jvm_debug to work.
if [[ "$UNAME" =~ darwin ]]; then
diff --git a/src/test/py/bazel/test_base.py b/src/test/py/bazel/test_base.py
index 8f92c52..1909afe 100644
--- a/src/test/py/bazel/test_base.py
+++ b/src/test/py/bazel/test_base.py
@@ -58,6 +58,7 @@
'rules_proto',
'remotejdk11_linux_for_testing',
'remotejdk11_linux_aarch64_for_testing',
+ 'remotejdk11_linux_ppc64le_for_testing',
'remotejdk11_macos_for_testing',
'remotejdk11_win_for_testing',
'remote_java_tools_darwin_for_testing',
diff --git a/src/test/shell/testenv.sh b/src/test/shell/testenv.sh
index cd44777..46ec437 100755
--- a/src/test/shell/testenv.sh
+++ b/src/test/shell/testenv.sh
@@ -309,6 +309,7 @@
"remote_java_tools_windows_for_testing"
"remotejdk11_linux_for_testing"
"remotejdk11_linux_aarch64_for_testing"
+ "remotejdk11_linux_ppc64le_for_testing"
"remotejdk11_macos_for_testing"
"remotejdk11_win_for_testing"
"rules_cc"