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"