From 5c16ab2378befcd8000bf4f95da596ada04ae8c6 Mon Sep 17 00:00:00 2001 From: cushon Date: Tue, 19 Dec 2017 16:18:49 -0800 Subject: Add java_toolchain definitions that work with JDK 8 and 9 host_javabases And inject the correct toolchain for the current host_javabase into tools.WORKSPACE. PiperOrigin-RevId: 179618337 --- .../build/lib/bazel/rules/BazelRuleClassProvider.java | 15 ++++++++++++++- .../google/devtools/build/lib/bazel/rules/tools.WORKSPACE | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java index ebac337780..0995d5fa6a 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java @@ -265,7 +265,16 @@ public class BazelRuleClassProvider { try { builder.addWorkspaceFilePrefix( - ResourceFileLoader.loadResource(BazelRuleClassProvider.class, "tools.WORKSPACE")); + ResourceFileLoader.loadResource(BazelRuleClassProvider.class, "tools.WORKSPACE") + // Hackily select the java_toolchain based on the host JDK version. JDK 8 and + // 9 host_javabases require different toolchains, e.g. to use --patch-module + // instead of -Xbootclasspath/p:. + .replace( + "%java_toolchain%", + isJdk8OrEarlier() + ? "@bazel_tools//tools/jdk:toolchain_jdk8" + : "@bazel_tools//tools/jdk:toolchain_jdk9")); + } catch (IOException e) { throw new IllegalStateException(e); } @@ -277,6 +286,10 @@ public class BazelRuleClassProvider { } }; + private static boolean isJdk8OrEarlier() { + return Double.parseDouble(System.getProperty("java.class.version")) <= 52.0; + } + public static final RuleSet PROTO_RULES = new RuleSet() { @Override diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE b/src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE index b080717b43..49f1b5d85a 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/tools.WORKSPACE @@ -1,2 +1,3 @@ local_repository(name = "bazel_tools", path = __embedded_dir__ + "/embedded_tools") bind(name = "cc_toolchain", actual = "@bazel_tools//tools/cpp:default-toolchain") +bind(name = "java_toolchain", actual = "%java_toolchain%") -- cgit v1.2.3