aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Chris Heisterkamp <cheister@squareup.com>2017-11-13 04:08:28 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-13 04:10:52 -0800
commitc0b25e9ecfe0c3eceb63d69547df37f9f1327fd0 (patch)
tree9680139baffa550985d1ca7d1a1e729f36e318c2 /src/main
parentb874b8edbb7af4787be5363fac4dcbc24e74ed6f (diff)
Update java check in StartupOptions::GetJvm() to work with java9
If you have java 9 installed but JAVA_HOME is set to java 8 then some bazel tests will fail because the check for java cannot find rt.jar which no longer exists in java 9. e.g. on OSX 10.13 ``` > java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) > JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home bazel test //src/test/py/bazel:action_temp_test ``` will fail with the following ``` FAIL: testLinuxOrDarwinSandboxedBuildAction (__main__.ActionTempTest) ---------------------------------------------------------------------- Traceback (most recent call last): File "/private/var/tmp/_bazel_cheister/08d5287ffe0da9d62c01970651a9400e/bazel-sandbox/7165594205799114739/execroot/io_bazel/bazel-out/local-fastbuild/bin/src/test/py/bazel/action_temp_test.runfiles/io_bazel/src/test/py/bazel/action_temp_test.py", line 30, in testLinuxOrDarwinSandboxedBuildAction self.AssertTempEnvvarWithSpawnStrategy('sandboxed') File "/private/var/tmp/_bazel_cheister/08d5287ffe0da9d62c01970651a9400e/bazel-sandbox/7165594205799114739/execroot/io_bazel/bazel-out/local-fastbuild/bin/src/test/py/bazel/action_temp_test.runfiles/io_bazel/src/test/py/bazel/action_temp_test.py", line 39, in AssertTempEnvvarWithSpawnStrategy strategies = self._SpawnStrategies() File "/private/var/tmp/_bazel_cheister/08d5287ffe0da9d62c01970651a9400e/bazel-sandbox/7165594205799114739/execroot/io_bazel/bazel-out/local-fastbuild/bin/src/test/py/bazel/action_temp_test.runfiles/io_bazel/src/test/py/bazel/action_temp_test.py", line 124, in _SpawnStrategies self.AssertExitCode(exit_code, 2, stderr) File "/private/var/tmp/_bazel_cheister/08d5287ffe0da9d62c01970651a9400e/bazel-sandbox/7165594205799114739/execroot/io_bazel/bazel-out/local-fastbuild/bin/src/test/py/bazel/action_temp_test.runfiles/io_bazel/src/test/py/bazel/test_base.py", line 68, in AssertExitCode '(end stderr)------------------------------------------', AssertionError: Bazel exited with 1 (expected 2), stderr: (start stderr)---------------------------------------- INFO: $TEST_TMPDIR defined: output root default is '/private/var/tmp/_bazel_cheister/08d5287ffe0da9d62c01970651a9400e/bazel-sandbox/7165594205799114739/execroot/io_bazel/_tmp/30efe0ec7addffc49fb72b5d5aa45572' and max_idle_secs default is '15'. Extracting Bazel installation... Problem with java installation: couldn't find/access rt.jar in /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home (end stderr)------------------------------------------ ``` This is related to https://github.com/bazelbuild/bazel/issues/428 but really only fixes the case where you are still using java8 but happen to have java9 installed. Closes #4045. PiperOrigin-RevId: 175513188
Diffstat (limited to 'src/main')
-rw-r--r--src/main/cpp/startup_options.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/main/cpp/startup_options.cc b/src/main/cpp/startup_options.cc
index 23ce3e5d3c..629ef45858 100644
--- a/src/main/cpp/startup_options.cc
+++ b/src/main/cpp/startup_options.cc
@@ -469,12 +469,19 @@ string StartupOptions::GetJvm() {
string jdk_rt_jar = blaze_util::JoinPath(GetHostJavabase(), "jre/lib/rt.jar");
// If just the JRE is installed
string jre_rt_jar = blaze_util::JoinPath(GetHostJavabase(), "lib/rt.jar");
+ // rt.jar does not exist in java 9+ so check for java instead
+ string jre_java = blaze_util::JoinPath(GetHostJavabase(), "bin/java");
+ string jre_java_exe = blaze_util::JoinPath(GetHostJavabase(), "bin/java.exe");
if (blaze_util::CanReadFile(jdk_rt_jar) ||
- blaze_util::CanReadFile(jre_rt_jar)) {
+ blaze_util::CanReadFile(jre_rt_jar) ||
+ blaze_util::CanReadFile(jre_java) ||
+ blaze_util::CanReadFile(jre_java_exe)) {
return java_program;
}
- fprintf(stderr, "Problem with java installation: "
- "couldn't find/access rt.jar in %s\n", GetHostJavabase().c_str());
+ fprintf(stderr,
+ "Problem with java installation: "
+ "couldn't find/access rt.jar or java in %s\n",
+ GetHostJavabase().c_str());
exit(1);
}