Refactor JDK dependency to separate host and target JDKs PiperOrigin-RevId: 235554287
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java index 92ebf3c..f0a457a 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
@@ -35,6 +35,7 @@ import com.google.devtools.build.lib.rules.java.JavaOptions; import com.google.devtools.build.lib.rules.java.JavaPackageConfigurationRule; import com.google.devtools.build.lib.rules.java.JavaRuleClasses.IjarBaseRule; +import com.google.devtools.build.lib.rules.java.JavaRuleClasses.JavaHostRuntimeBaseRule; import com.google.devtools.build.lib.rules.java.JavaRuleClasses.JavaRuntimeBaseRule; import com.google.devtools.build.lib.rules.java.JavaRuleClasses.JavaToolchainBaseRule; import com.google.devtools.build.lib.rules.java.JavaRuntimeAliasRule; @@ -69,6 +70,7 @@ builder.addRuleDefinition(new IjarBaseRule()); builder.addRuleDefinition(new JavaToolchainBaseRule()); builder.addRuleDefinition(new JavaRuntimeBaseRule()); + builder.addRuleDefinition(new JavaHostRuntimeBaseRule()); builder.addRuleDefinition(new BazelJavaRuleClasses.JavaBaseRule()); builder.addRuleDefinition(new ProguardLibraryRule()); builder.addRuleDefinition(new JavaImportBaseRule());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImportBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImportBaseRule.java index a7a467d..211a4c7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImportBaseRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImportBaseRule.java
@@ -27,7 +27,7 @@ import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; import com.google.devtools.build.lib.rules.cpp.CppConfiguration; -import com.google.devtools.build.lib.rules.java.JavaRuleClasses.JavaRuntimeBaseRule; +import com.google.devtools.build.lib.rules.java.JavaRuleClasses.JavaHostRuntimeBaseRule; /** A base rule for building the java_import rule. */ public class JavaImportBaseRule implements RuleDefinition { @@ -75,7 +75,9 @@ .name("$java_import_base") .type(RuleClassType.ABSTRACT) .ancestors( - BaseRuleClasses.RuleBase.class, ProguardLibraryRule.class, JavaRuntimeBaseRule.class) + BaseRuleClasses.RuleBase.class, + ProguardLibraryRule.class, + JavaHostRuntimeBaseRule.class) .build(); } }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleClasses.java index 2364901..5467c8c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleClasses.java
@@ -82,6 +82,24 @@ .value(JavaSemantics.jvmAttribute(env)) .mandatoryProviders(ToolchainInfo.PROVIDER.id()) .useOutputLicenses()) + .build(); + } + + @Override + public Metadata getMetadata() { + return RuleDefinition.Metadata.builder() + .name("$java_runtime_toolchain_base_rule") + .type(RuleClassType.ABSTRACT) + .ancestors(JavaHostRuntimeBaseRule.class) + .build(); + } + } + + /** Common attributes for rules that use the host Java runtime. */ + public static final class JavaHostRuntimeBaseRule implements RuleDefinition { + @Override + public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) { + return builder .add( attr(HOST_JAVA_RUNTIME_ATTRIBUTE_NAME, LABEL) .cfg(HostTransition.INSTANCE) @@ -93,7 +111,7 @@ @Override public Metadata getMetadata() { return RuleDefinition.Metadata.builder() - .name("$java_runtime_toolchain_base_rule") + .name("$java_host_runtime_toolchain_base_rule") .type(RuleClassType.ABSTRACT) .build(); }