diff options
author | 2018-02-23 17:50:25 -0800 | |
---|---|---|
committer | 2018-02-23 17:52:29 -0800 | |
commit | 8488456f56789b01ca91842f271c67c855fdb273 (patch) | |
tree | ab58f200a86f218b2c780e51f65988f371d5e6c1 /src/main/java/com/google/devtools | |
parent | ceed58c70f1684fc4da2b32d86198c7a0635ec35 (diff) |
@AutoCodec RuleConfiguredTarget.
PiperOrigin-RevId: 186849562
Diffstat (limited to 'src/main/java/com/google/devtools')
2 files changed, 33 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java index 508bacdbbc..825ba5a57a 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java @@ -23,7 +23,6 @@ import com.google.devtools.build.lib.analysis.FileProvider; import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.OutputGroupInfo; import com.google.devtools.build.lib.analysis.RunfilesProvider; -import com.google.devtools.build.lib.analysis.TargetContext; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.VisibilityProvider; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; @@ -73,11 +72,6 @@ public abstract class AbstractConfiguredTarget this.visibility = visibility; } - @Deprecated // For callers to be serializable, they shouldn't have a TargetContext constructor. - public AbstractConfiguredTarget(TargetContext targetContext) { - this(targetContext.getLabel(), targetContext.getConfiguration(), targetContext.getVisibility()); - } - @Override public final NestedSet<PackageGroupContents> getVisibility() { return visibility; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java index dda8df5f19..372ec570e1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java @@ -29,15 +29,20 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMapBuilder; import com.google.devtools.build.lib.analysis.Util; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.RunUnder; import com.google.devtools.build.lib.analysis.skylark.SkylarkApiProvider; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.OutputFile; +import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Instantiator; +import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import com.google.devtools.build.lib.syntax.Printer; import java.util.function.Consumer; @@ -77,15 +82,24 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget { private final ImmutableMap<Label, ConfigMatchingProvider> configConditions; private final String ruleClassString; - public RuleConfiguredTarget(RuleContext ruleContext, TransitiveInfoProviderMap providers) { - super(ruleContext); + @Instantiator + @VisibleForSerialization + RuleConfiguredTarget( + Label label, + BuildConfiguration configuration, + NestedSet<PackageGroupContents> visibility, + TransitiveInfoProviderMap providers, + ImmutableMap<Label, ConfigMatchingProvider> configConditions, + ImmutableSet<ConfiguredTargetKey> implicitDeps, + String ruleClassString) { + super(label, configuration, visibility); // We don't use ImmutableMap.Builder here to allow augmenting the initial list of 'default' // providers by passing them in. TransitiveInfoProviderMapBuilder providerBuilder = new TransitiveInfoProviderMapBuilder().addAll(providers); - Preconditions.checkState(providerBuilder.contains(RunfilesProvider.class)); - Preconditions.checkState(providerBuilder.contains(FileProvider.class)); - Preconditions.checkState(providerBuilder.contains(FilesToRunProvider.class)); + Preconditions.checkState(providerBuilder.contains(RunfilesProvider.class), label); + Preconditions.checkState(providerBuilder.contains(FileProvider.class), label); + Preconditions.checkState(providerBuilder.contains(FilesToRunProvider.class), label); // Initialize every SkylarkApiProvider for (int i = 0; i < providers.getProviderCount(); i++) { @@ -96,9 +110,20 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget { } this.providers = providerBuilder.build(); - this.configConditions = ruleContext.getConfigConditions(); - this.implicitDeps = IMPLICIT_DEPS_INTERNER.intern(Util.findImplicitDeps(ruleContext)); - this.ruleClassString = ruleContext.getRule().getRuleClass(); + this.configConditions = configConditions; + this.implicitDeps = IMPLICIT_DEPS_INTERNER.intern(implicitDeps); + this.ruleClassString = ruleClassString; + } + + public RuleConfiguredTarget(RuleContext ruleContext, TransitiveInfoProviderMap providers) { + this( + ruleContext.getLabel(), + ruleContext.getConfiguration(), + ruleContext.getVisibility(), + providers, + ruleContext.getConfigConditions(), + Util.findImplicitDeps(ruleContext), + ruleContext.getRule().getRuleClass()); // If this rule is the run_under target, then check that we have an executable; note that // run_under is only set in the target configuration, and the target must also be analyzed for |