From bc6769b55751fd4a4808dfbb13b4c30c6014a184 Mon Sep 17 00:00:00 2001 From: lberki Date: Thu, 13 Jul 2017 15:33:30 +0200 Subject: [PATCH] Remove the cc_common.cc_toolchain_attr and java_common.java_runtime_attr in favor of the cc_toolchain_alias() and the java_runtime_alias() rules introduced in https://github.com/bazelbuild/bazel/commit/440919933dc11d8aa4394dbd53790271a2073bc5. These two serve the same purpose; the attributes were originally introduced in https://github.com/bazelbuild/bazel/commit/28c9617d53bf58dcba9572bcfdc165c62421d983 and https://github.com/bazelbuild/bazel/commit/4634ff903d1aaec59d545bd28a139d6cf2b95e0d respectively in order to avoid introducing the magic rule classes. However, the magic rule classes needed to be introduced anyway so that existing rules can declare which Make variables they use and there is no point in having two mechanisms to do the same thing. RELNOTES[INC]: cc_common.cc_toolchain_attr and java_common.java_runtime_attr are not supported anymore and were replaced with the cc_toolchain_alias() and java_runtime_alias() rules. PiperOrigin-RevId: 161799608 --- .../bazel/rules/BazelRuleClassProvider.java | 4 ++-- .../lib/rules/java/JavaSkylarkCommon.java | 24 +------------------ .../lib/rules/java/JavaSkylarkApiTest.java | 3 ++- 3 files changed, 5 insertions(+), 26 deletions(-) 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 47337f170600ea..c2e046f1b41e8c 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 @@ -524,8 +524,8 @@ public void init(Builder builder) { builder.addRuleDefinition(new AndroidDeviceRule()); builder.addSkylarkAccessibleTopLevels("android_common", new AndroidSkylarkCommon()); - builder.addSkylarkAccessibleTopLevels("java_common", new JavaSkylarkCommon( - BazelJavaSemantics.INSTANCE, builder.getToolsRepository())); + builder.addSkylarkAccessibleTopLevels("java_common", + new JavaSkylarkCommon(BazelJavaSemantics.INSTANCE)); builder.addSkylarkAccessibleTopLevels("java_proto_common", JavaProtoSkylarkCommon.class); try { diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java index 4d3359161c1780..175d8642a60e52 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java @@ -16,7 +16,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.MiddlemanProvider; import com.google.devtools.build.lib.analysis.RuleContext; @@ -25,10 +24,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; -import com.google.devtools.build.lib.packages.Attribute; -import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.rules.SkylarkAttr; import com.google.devtools.build.lib.rules.SkylarkRuleContext; import com.google.devtools.build.lib.rules.java.proto.StrictDepsUtils; import com.google.devtools.build.lib.skylarkinterface.Param; @@ -44,11 +40,9 @@ @SkylarkModule(name = "java_common", doc = "Utilities for Java compilation support in Skylark.") public class JavaSkylarkCommon { private final JavaSemantics javaSemantics; - private final String toolsRepository; - public JavaSkylarkCommon(JavaSemantics javaSemantics, String toolsrepository) { + public JavaSkylarkCommon(JavaSemantics javaSemantics) { this.javaSemantics = javaSemantics; - this.toolsRepository = toolsrepository; } @SkylarkCallable( @@ -468,20 +462,4 @@ private static StrictDepsMode getStrictDepsMode(String strictDepsMode) { public static ClassObjectConstructor getJavaRuntimeProvider() { return JavaRuntimeProvider.SKYLARK_CONSTRUCTOR; } - - @SkylarkCallable( - name = "java_runtime_attr", - doc = "A value that, when passed as a value in the attribute dictionary of a rule " - + "definition, will yield a dependency that describes the current Java runtime in use.", - documented = false, - structField = true - ) - public SkylarkAttr.Descriptor getJvmAttribute() { - ConfiguredRuleClassProvider.Builder env = new ConfiguredRuleClassProvider.Builder(); - env.setToolsRepository(toolsRepository); - return new SkylarkAttr.Descriptor( - "java_runtime_attr", - new Attribute.Builder<>("", BuildType.LABEL) - .value(JavaSemantics.jvmAttribute(env))); - } } diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java index daa14b19429b49..1986c0312bb5d3 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java @@ -49,6 +49,7 @@ public void testJavaRuntimeProvider() throws Exception { "load(':rule.bzl', 'jrule')", "java_runtime(name='jvm', srcs=[], java_home='/foo/bar/')", "java_runtime_suite(name='suite', default=':jvm')", + "java_runtime_alias(name='alias')", "jrule(name='r')"); scratch.file( @@ -58,7 +59,7 @@ public void testJavaRuntimeProvider() throws Exception { " return struct(", " java_executable = provider.java_executable_exec_path,", ")", - "jrule = rule(_impl, attrs = { '_java_runtime': java_common.java_runtime_attr})"); + "jrule = rule(_impl, attrs = { '_java_runtime': attr.label(default=Label('//a:alias'))})"); useConfiguration("--javabase=//a:suite"); ConfiguredTarget ct = getConfiguredTarget("//a:r");