aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-02-23 17:50:25 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-23 17:52:29 -0800
commit8488456f56789b01ca91842f271c67c855fdb273 (patch)
treeab58f200a86f218b2c780e51f65988f371d5e6c1 /src/main/java/com/google/devtools/build/lib
parentceed58c70f1684fc4da2b32d86198c7a0635ec35 (diff)
@AutoCodec RuleConfiguredTarget.
PiperOrigin-RevId: 186849562
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java41
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