diff options
author | 2017-07-11 16:45:02 +0200 | |
---|---|---|
committer | 2017-07-11 18:26:13 +0200 | |
commit | 2d05de2185920e9270edcfcc66e2e8b92668864d (patch) | |
tree | 5f3844a8ca1aedd00a20527d6c6c3deeff5d3b73 | |
parent | f07773b31450b1863dd6f9390b9bb8b3040e2d6d (diff) |
MakeVariableProvider should be declared provider only.
RELNOTES: None.
PiperOrigin-RevId: 161527470
14 files changed, 21 insertions, 42 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index c159037231..a27427a9e0 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -1064,7 +1064,7 @@ public final class RuleContext extends TargetContext continue; } makeVariableProvidersBuilder.addAll( - getPrerequisites(attributeName, Mode.TARGET, MakeVariableProvider.class)); + getPrerequisites(attributeName, Mode.TARGET, MakeVariableProvider.SKYLARK_CONSTRUCTOR)); } for (MakeVariableProvider makeVariableProvider : makeVariableProvidersBuilder.build()) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java b/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java index 46ad5446b5..be35e55174 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java @@ -15,9 +15,7 @@ package com.google.devtools.build.lib.rules; import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; import com.google.devtools.build.lib.packages.SkylarkClassObject; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; @@ -26,11 +24,10 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; /** Provides access to make variables from the current fragments. */ @SkylarkModule(name = "MakeVariables", doc = "Make variables exposed by the current target.") @Immutable -public final class MakeVariableProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public final class MakeVariableProvider extends SkylarkClassObject { public static final String SKYLARK_NAME = "MakeVariableInfo"; - public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR = + public static final NativeClassObjectConstructor<MakeVariableProvider> SKYLARK_CONSTRUCTOR = new NativeClassObjectConstructor<MakeVariableProvider>( MakeVariableProvider.class, SKYLARK_NAME) {}; diff --git a/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java b/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java index fbb1b4b616..21d8da4785 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java +++ b/src/main/java/com/google/devtools/build/lib/rules/ToolchainType.java @@ -61,7 +61,7 @@ public class ToolchainType implements RuleConfiguredTargetFactory { // out the lookup rule -> toolchain rule mapping. For now, it only provides Make variables that // come from BuildConfiguration so no need to ask Skyframe. return new RuleConfiguredTargetBuilder(ruleContext) - .addProvider(new MakeVariableProvider(ImmutableMap.copyOf(makeVariables))) + .addNativeDeclaredProvider(new MakeVariableProvider(ImmutableMap.copyOf(makeVariables))) .addProvider(RunfilesProvider.simple(Runfiles.EMPTY)) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java index 3a7ddfb1e1..c464e57692 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java @@ -388,7 +388,6 @@ public class CcToolchain implements RuleConfiguredTargetFactory { new RuleConfiguredTargetBuilder(ruleContext) .addProvider(ccProvider) .addNativeDeclaredProvider(ccProvider) - .addProvider(makeVariableProvider) .addNativeDeclaredProvider(makeVariableProvider) .addProvider( fdoSupport.getFdoSupport().createFdoSupportProvider(ruleContext, profileArtifact)) diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java index 2e9bbf3f31..7ab2ca6b53 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java @@ -21,11 +21,9 @@ import static com.google.devtools.build.lib.packages.BuildType.OUTPUT_LIST; import static com.google.devtools.build.lib.syntax.Type.BOOLEAN; import static com.google.devtools.build.lib.syntax.Type.STRING; -import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.BaseRuleClasses; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Attribute; @@ -111,10 +109,8 @@ public class GenRuleBaseRule implements RuleDefinition { .add( attr("toolchains", LABEL_LIST) .allowedFileTypes(FileTypeSet.NO_FILE) - .mandatoryNativeProviders( - ImmutableList.<Class<? extends TransitiveInfoProvider>>of( - MakeVariableProvider.class))) - + .mandatoryProviders(MakeVariableProvider.SKYLARK_CONSTRUCTOR.id()) + ) /* <!-- #BLAZE_RULE(genrule).ATTRIBUTE(outs) --> A list of files generated by this rule. <p> diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java index c734e0a9b4..3bc2227645 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java @@ -509,7 +509,7 @@ public class JavaBinary implements RuleConfiguredTargetFactory { TransitiveInfoCollection javabaseTarget = ruleContext.getPrerequisite(":jvm", Mode.TARGET); JavaRuntimeProvider javaRuntime = null; if (javabaseTarget != null) { - javaRuntime = javabaseTarget.getProvider(JavaRuntimeProvider.class); + javaRuntime = javabaseTarget.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR); builder.addTransitiveArtifacts(javaRuntime.javaBaseInputs()); // Add symlinks to the C++ runtime libraries under a path that can be built diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java index cb06a32b1f..d7032fa684 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaHelper.java @@ -155,7 +155,7 @@ public abstract class JavaHelper { } TransitiveInfoCollection jvm = ruleContext.getPrerequisite(":jvm", Mode.TARGET); - return jvm == null ? null : jvm.getProvider(JavaRuntimeProvider.class); + return jvm == null ? null : jvm.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR); } public static JavaRuntimeProvider getHostJavaRuntime(RuleContext ruleContext) { @@ -164,7 +164,7 @@ public abstract class JavaHelper { } TransitiveInfoCollection jvm = ruleContext.getPrerequisite(":host_jdk", Mode.HOST); - return jvm == null ? null : jvm.getProvider(JavaRuntimeProvider.class); + return jvm == null ? null : jvm.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR); } /** diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java index 108edd055c..ccda5e7dbd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java @@ -83,10 +83,8 @@ public class JavaRuntime implements RuleConfiguredTargetFactory { return new RuleConfiguredTargetBuilder(ruleContext) .addProvider(RunfilesProvider.class, RunfilesProvider.simple(runfiles)) .setFilesToBuild(filesToBuild) - .addProvider(JavaRuntimeProvider.class, javaRuntime) .addNativeDeclaredProvider(javaRuntime) .addProvider(MiddlemanProvider.class, new MiddlemanProvider(middleman)) - .addProvider(makeVariableProvider) .addNativeDeclaredProvider(makeVariableProvider) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java index 7ef88ce193..6b52df7455 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeAlias.java @@ -48,13 +48,9 @@ public class JavaRuntimeAlias implements RuleConfiguredTargetFactory { RuleConfiguredTargetBuilder builder = new RuleConfiguredTargetBuilder(ruleContext); if (runtime != null) { - MakeVariableProvider makeVariableProvider = runtime.getProvider(MakeVariableProvider.class); - JavaRuntimeProvider javaRuntimeProvider = runtime.getProvider(JavaRuntimeProvider.class); builder - .addProvider(javaRuntimeProvider) - .addNativeDeclaredProvider(javaRuntimeProvider) - .addProvider(makeVariableProvider) - .addNativeDeclaredProvider(makeVariableProvider) + .addNativeDeclaredProvider(runtime.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR)) + .addNativeDeclaredProvider(runtime.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR)) .addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class)) .addProvider(MiddlemanProvider.class, runtime.getProvider(MiddlemanProvider.class)) .setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild()); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProvider.java index 33235a3d04..558ff04baa 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeProvider.java @@ -16,10 +16,8 @@ package com.google.devtools.build.lib.rules.java; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; import com.google.devtools.build.lib.packages.SkylarkClassObject; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; @@ -32,12 +30,12 @@ import com.google.devtools.build.lib.vfs.PathFragment; doc = "Information about the Java runtime being used." ) @Immutable -public class JavaRuntimeProvider extends SkylarkClassObject - implements TransitiveInfoProvider { +public class JavaRuntimeProvider extends SkylarkClassObject { public static final String SKYLARK_NAME = "JavaRuntimeInfo"; - public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR = - new NativeClassObjectConstructor(JavaToolchainProvider.class, SKYLARK_NAME) {}; + public static final NativeClassObjectConstructor<JavaRuntimeProvider> SKYLARK_CONSTRUCTOR = + new NativeClassObjectConstructor<JavaRuntimeProvider>( + JavaRuntimeProvider.class, SKYLARK_NAME) {}; private final NestedSet<Artifact> javaBaseInputs; private final PathFragment javaHome; diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java index cab0d2c481..5299823427 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuite.java @@ -41,14 +41,13 @@ public class JavaRuntimeSuite implements RuleConfiguredTargetFactory { "could not resolve runtime for cpu " + ruleContext.getConfiguration().getCpu()); } - MakeVariableProvider makeVariableProvider = runtime.getProvider(MakeVariableProvider.class); + MakeVariableProvider makeVariableProvider = + runtime.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR); return new RuleConfiguredTargetBuilder(ruleContext) - .addProvider(JavaRuntimeProvider.class, runtime.getProvider(JavaRuntimeProvider.class)) - .addNativeDeclaredProvider(runtime.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR.getKey())) + .addNativeDeclaredProvider(runtime.get(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR)) .addProvider(RunfilesProvider.class, runtime.getProvider(RunfilesProvider.class)) .addProvider(MiddlemanProvider.class, runtime.getProvider(MiddlemanProvider.class)) - .addProvider(makeVariableProvider) .addNativeDeclaredProvider(makeVariableProvider) .setFilesToBuild(runtime.getProvider(FileProvider.class).getFilesToBuild()) .build(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuiteRule.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuiteRule.java index 22de4df4a3..379501e107 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuiteRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntimeSuiteRule.java @@ -17,11 +17,9 @@ package com.google.devtools.build.lib.rules.java; import static com.google.devtools.build.lib.packages.Attribute.attr; import static com.google.devtools.build.lib.packages.BuildType.LICENSE; -import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.BaseRuleClasses; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; @@ -43,9 +41,7 @@ public final class JavaRuntimeSuiteRule implements RuleDefinition { <!-- #END_BLAZE_RULE.ATTRIBUTE --> */ .add( attr("default", BuildType.LABEL) - .mandatoryNativeProviders( - ImmutableList.<Class<? extends TransitiveInfoProvider>>of( - JavaRuntimeProvider.class)) + .mandatoryProviders(JavaRuntimeProvider.SKYLARK_CONSTRUCTOR.id()) .allowedFileTypes(FileTypeSet.NO_FILE)) .add(attr("output_licenses", LICENSE)) .build(); diff --git a/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java b/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java index a4990af350..85320516e5 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/ToolchainTypeTest.java @@ -28,7 +28,7 @@ public class ToolchainTypeTest extends BuildViewTestCase { public void testSmoke() throws Exception { ConfiguredTarget cc = getConfiguredTarget(getRuleClassProvider().getToolsRepository() + "//tools/cpp:toolchain_type"); - assertThat(cc.getProvider(MakeVariableProvider.class).getMakeVariables()) + assertThat(cc.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR).getMakeVariables()) .containsKey("TARGET_CPU"); } } diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java index 2c7419cb12..a2924f116d 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CrosstoolConfigurationLoaderTest.java @@ -489,7 +489,7 @@ public class CrosstoolConfigurationLoaderTest extends AnalysisTestCase { create(loader, "--cpu=piii", "--host_cpu=piii", "--android_cpu=", "--fat_apk_cpu="); ConfiguredTarget ccToolchainA = getCcToolchainTarget(toolchainA); CcToolchainProvider ccProviderA = ccToolchainA.getProvider(CcToolchainProvider.class); - MakeVariableProvider makeProviderA = ccToolchainA.getProvider(MakeVariableProvider.class); + MakeVariableProvider makeProviderA = ccToolchainA.get(MakeVariableProvider.SKYLARK_CONSTRUCTOR); assertThat(toolchainA.getToolchainIdentifier()).isEqualTo("toolchain-identifier-A"); assertThat(toolchainA.getHostSystemName()).isEqualTo("host-system-name-A"); assertThat(toolchainA.getTargetGnuSystemName()).isEqualTo("target-system-name-A"); |