testing/bazel4: deal with illegal reflective access

This commit is contained in:
Jesse Chan 2022-01-02 04:11:50 +00:00 committed by Kevin Daudt
parent 31e385a9df
commit c287e61a4c
3 changed files with 35 additions and 51 deletions

View File

@ -28,7 +28,7 @@ source="https://github.com/bazelbuild/bazel/releases/download/$pkgver/bazel-$pkg
patch_fix_jdk_13.patch
patch_stop_hardcoding_verify_none_1.patch
patch_stop_hardcoding_verify_none_2.patch
patch_go_back_to_pre16_permit.patch"
patch_remove_illegal_reflective.patch"
build() {
export JAVA_HOME="/usr/lib/jvm/default-jvm"
@ -124,5 +124,5 @@ fe1862bbd392f8a2d7af5f7c5e08fa6cf6dab0ba7b88280c28c4b072241613480e861af60212ceee
0b4b3e541eaa496253e83d6fd88ba98d14c2a53324b7438f57d240b45f2c3c63b659038224e2b66706d4420eccb7c17c834260839f2fd39e3c6b3dea2613b735 patch_fix_jdk_13.patch
f8456643419ac108a7cd72eaccd931e9c269c828611b0a62a79ad80a4f542b83cf5fa69af026e04bfb8d9f2c70527b5b25f9af56edb0a5a696ce66b3032df48d patch_stop_hardcoding_verify_none_1.patch
c5ad25926e5672cd86b27c791c7347b21b57777296cc26d92d2bd9ae6eb39ee81d48008edb666285432135082e91daa9162ea67c719625bcede8f2d5647c9633 patch_stop_hardcoding_verify_none_2.patch
94840b77904cabbaff4d2b011b79699f9b6114e9893af4f8649e397f34ffb0e8c2d9c6d481f9a0cdab39fd00d13c8c76efa8a8fe781c0d3162421764a0a1d6d5 patch_go_back_to_pre16_permit.patch
44a942c842688e53a431994e2cd7070d72a757fde1c45d44f3c0b349fd050692f0cac11f8b72fcf10cd944753a0ebc2038053a359ac7a1676125cc8107f04144 patch_remove_illegal_reflective.patch
"

View File

@ -1,49 +0,0 @@
From: Jesse Chan <jc@linux.com>
Date: Thu, 24 Jun 2021 20:20:22 +0800
Subject: [PATCH] Explicitly permit illegal access, go back to pre-JDK16 default
---
scripts/bootstrap/compile.sh | 1 +
src/main/cpp/blaze.cc | 14 +++++++-------
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/scripts/bootstrap/compile.sh b/scripts/bootstrap/compile.sh
index e9cfbeec3d..095ed901bb 100755
--- a/scripts/bootstrap/compile.sh
+++ b/scripts/bootstrap/compile.sh
@@ -436,6 +436,7 @@ function run_bazel_jar() {
done
"${JAVA_HOME}/bin/java" \
+ --illegal-access=permit \
-XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=ISO-8859-1 \
-XX:HeapDumpPath=${OUTPUT_DIR} \
-Djava.util.logging.config.file=${OUTPUT_DIR}/javalog.properties \
diff --git a/src/main/cpp/blaze.cc b/src/main/cpp/blaze.cc
index ecdc707c64..25c4f619bb 100644
--- a/src/main/cpp/blaze.cc
+++ b/src/main/cpp/blaze.cc
@@ -360,13 +360,13 @@ static vector<string> GetServerExeArgs(const blaze_util::Path &jvm_path,
result.push_back("-XX:HeapDumpPath=" +
startup_options.output_base.AsJvmArgument());
- // TODO(b/109998449): only assume JDK >= 9 for embedded JDKs
- if (!startup_options.GetEmbeddedJavabase().IsEmpty()) {
- // quiet warnings from com.google.protobuf.UnsafeUtil,
- // see: https://github.com/google/protobuf/issues/3781
- result.push_back("--add-opens=java.base/java.nio=ALL-UNNAMED");
- result.push_back("--add-opens=java.base/java.lang=ALL-UNNAMED");
- }
+ // quiet warnings from com.google.protobuf.UnsafeUtil,
+ // see: https://github.com/google/protobuf/issues/3781
+ result.push_back("--add-opens=java.base/java.nio=ALL-UNNAMED");
+ result.push_back("--add-opens=java.base/java.lang=ALL-UNNAMED");
+
+ // explicitly permit illegal access, go back to pre-JDK16 default
+ result.push_back("--illegal-access=permit");
vector<string> user_options = startup_options.host_jvm_args;
--
2.31.1

View File

@ -0,0 +1,33 @@
--- a/src/main/cpp/blaze.cc
+++ b/src/main/cpp/blaze.cc
@@ -360,13 +360,10 @@ static vector<string> GetServerExeArgs(const blaze_util::Path &jvm_path,
result.push_back("-XX:HeapDumpPath=" +
startup_options.output_base.AsJvmArgument());
- // TODO(b/109998449): only assume JDK >= 9 for embedded JDKs
- if (!startup_options.GetEmbeddedJavabase().IsEmpty()) {
- // quiet warnings from com.google.protobuf.UnsafeUtil,
- // see: https://github.com/google/protobuf/issues/3781
- result.push_back("--add-opens=java.base/java.nio=ALL-UNNAMED");
- result.push_back("--add-opens=java.base/java.lang=ALL-UNNAMED");
- }
+ // quiet warnings from com.google.protobuf.UnsafeUtil,
+ // see: https://github.com/google/protobuf/issues/3781
+ result.push_back("--add-opens=java.base/java.nio=ALL-UNNAMED");
+ result.push_back("--add-opens=java.base/java.lang=ALL-UNNAMED");
vector<string> user_options = startup_options.host_jvm_args;
--- a/src/main/java/com/google/devtools/build/lib/unsafe/StringUnsafe.java
+++ b/src/main/java/com/google/devtools/build/lib/unsafe/StringUnsafe.java
@@ -72,10 +72,7 @@ public class StringUnsafe {
+ Arrays.toString(String.class.getDeclaredFields()),
e);
}
- this.constructor.setAccessible(true);
- valueField.setAccessible(true);
valueOffset = UnsafeProvider.getInstance().objectFieldOffset(valueField);
- coderField.setAccessible(true);
coderOffset = UnsafeProvider.getInstance().objectFieldOffset(coderField);
}