aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java (renamed from src/main/java/com/google/devtools/build/lib/analysis/Aspect.java)10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java31
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java53
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java30
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java18
7 files changed, 71 insertions, 82 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Aspect.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
index 835fb5e7de..d5ef9e846b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Aspect.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java
@@ -42,12 +42,12 @@ import javax.annotation.Nullable;
* <p>Aspects are created alongside configured targets on request from dependents.
*/
@Immutable
-public final class Aspect implements Iterable<TransitiveInfoProvider> {
+public final class ConfiguredAspect implements Iterable<TransitiveInfoProvider> {
private final String name;
private final ImmutableMap<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider>
providers;
- private Aspect(
+ private ConfiguredAspect(
String name,
ImmutableMap<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> providers) {
this.name = name;
@@ -84,7 +84,7 @@ public final class Aspect implements Iterable<TransitiveInfoProvider> {
}
/**
- * Builder for {@link Aspect}.
+ * Builder for {@link ConfiguredAspect}.
*/
public static class Builder {
private final Map<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider>
@@ -140,7 +140,7 @@ public final class Aspect implements Iterable<TransitiveInfoProvider> {
return this;
}
- public Aspect build() {
+ public ConfiguredAspect build() {
if (!outputGroupBuilders.isEmpty()) {
ImmutableMap.Builder<String, NestedSet<Artifact>> outputGroups = ImmutableMap.builder();
for (Map.Entry<String, NestedSetBuilder<Artifact>> entry : outputGroupBuilders.entrySet()) {
@@ -159,7 +159,7 @@ public final class Aspect implements Iterable<TransitiveInfoProvider> {
providers.put(SkylarkProviders.class, new SkylarkProviders(skylarkProvidersMap));
}
- return new Aspect(name, ImmutableMap.copyOf(providers));
+ return new ConfiguredAspect(name, ImmutableMap.copyOf(providers));
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java
index 667164001b..c983764d65 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspectFactory.java
@@ -28,6 +28,6 @@ public interface ConfiguredAspectFactory {
* @param parameters information from attributes of the rule that have requested this
* aspect
*/
- Aspect create(ConfiguredTarget base, RuleContext context, AspectParameters parameters)
+ ConfiguredAspect create(ConfiguredTarget base, RuleContext context, AspectParameters parameters)
throws InterruptedException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index b52f5a65e3..e90971403a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.analysis;
-import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ListMultimap;
@@ -33,7 +32,7 @@ import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.packages.AspectParameters;
+import com.google.devtools.build.lib.packages.Aspect;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy;
import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy;
@@ -56,7 +55,6 @@ import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import javax.annotation.Nullable;
@@ -284,36 +282,37 @@ public final class ConfiguredTargetFactory {
}
/**
- * Constructs an {@link Aspect}. Returns null if an error occurs; in that case,
+ * Constructs an {@link ConfiguredAspect}. Returns null if an error occurs; in that case,
* {@code aspectFactory} should call one of the error reporting methods of {@link RuleContext}.
*/
- public Aspect createAspect(
+ public ConfiguredAspect createAspect(
AnalysisEnvironment env,
RuleConfiguredTarget associatedTarget,
ConfiguredAspectFactory aspectFactory,
- AspectWithParameters aspectWithParameters,
+ Aspect aspect,
ListMultimap<Attribute, ConfiguredTarget> prerequisiteMap,
Set<ConfigMatchingProvider> configConditions,
BuildConfiguration hostConfiguration)
- throws InterruptedException {
+ throws InterruptedException {
RuleContext.Builder builder = new RuleContext.Builder(env,
associatedTarget.getTarget(),
associatedTarget.getConfiguration(),
hostConfiguration,
ruleClassProvider.getPrerequisiteValidator());
- RuleContext ruleContext = builder
- .setVisibility(convertVisibility(
- prerequisiteMap, env.getEventHandler(), associatedTarget.getTarget(), null))
- .setPrerequisites(prerequisiteMap)
- .setAspectAttributes(aspectWithParameters.getDefinition().getAttributes())
- .setConfigConditions(configConditions)
- .build();
+ RuleContext ruleContext =
+ builder
+ .setVisibility(
+ convertVisibility(
+ prerequisiteMap, env.getEventHandler(), associatedTarget.getTarget(), null))
+ .setPrerequisites(prerequisiteMap)
+ .setAspectAttributes(aspect.getDefinition().getAttributes())
+ .setConfigConditions(configConditions)
+ .build();
if (ruleContext.hasErrors()) {
return null;
}
- return aspectFactory.create(associatedTarget, ruleContext,
- aspectWithParameters.getParameters());
+ return aspectFactory.create(associatedTarget, ruleContext, aspect.getParameters());
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index fcea1537c2..57a1d92364 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -25,9 +25,9 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.ImmutableSortedKeyListMultimap;
+import com.google.devtools.build.lib.packages.Aspect;
import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.AspectDefinition;
-import com.google.devtools.build.lib.packages.AspectWithParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
@@ -102,15 +102,14 @@ public abstract class DependencyResolver {
private final Attribute.Transition transition;
private final boolean hasStaticConfiguration;
- private final ImmutableSet<AspectWithParameters> aspects;
+ private final ImmutableSet<Aspect> aspects;
/**
* Constructs a Dependency with a given configuration (suitable for static configuration
* builds).
*/
- public Dependency(Label label,
- @Nullable BuildConfiguration configuration,
- ImmutableSet<AspectWithParameters> aspects) {
+ public Dependency(
+ Label label, @Nullable BuildConfiguration configuration, ImmutableSet<Aspect> aspects) {
this.label = Preconditions.checkNotNull(label);
this.configuration = configuration;
this.transition = null;
@@ -123,14 +122,13 @@ public abstract class DependencyResolver {
* builds).
*/
public Dependency(Label label, @Nullable BuildConfiguration configuration) {
- this(label, configuration, ImmutableSet.<AspectWithParameters>of());
+ this(label, configuration, ImmutableSet.<Aspect>of());
}
/**
* Constructs a Dependency with a given transition (suitable for dynamic configuration builds).
*/
- public Dependency(Label label, Attribute.Transition transition,
- ImmutableSet<AspectWithParameters> aspects) {
+ public Dependency(Label label, Attribute.Transition transition, ImmutableSet<Aspect> aspects) {
this.label = Preconditions.checkNotNull(label);
this.configuration = null;
this.transition = Preconditions.checkNotNull(transition);
@@ -167,7 +165,7 @@ public abstract class DependencyResolver {
return transition;
}
- public ImmutableSet<AspectWithParameters> getAspects() {
+ public ImmutableSet<Aspect> getAspects() {
return aspects;
}
@@ -204,7 +202,7 @@ public abstract class DependencyResolver {
* represent those edges. Visibility attributes are only visited if {@code visitVisibility} is
* {@code true}.
*
- * <p>If {@code aspectWithParameters} is null, returns the dependent nodes of the configured
+ * <p>If {@code aspect} is null, returns the dependent nodes of the configured
* target node representing the given target and configuration, otherwise that of the aspect
* node accompanying the aforementioned configured target node for the specified aspect.
*
@@ -220,7 +218,7 @@ public abstract class DependencyResolver {
public final ListMultimap<Attribute, Dependency> dependentNodeMap(
TargetAndConfiguration node,
BuildConfiguration hostConfig,
- AspectWithParameters aspectWithParameters,
+ Aspect aspect,
Set<ConfigMatchingProvider> configConditions)
throws EvalException, InterruptedException {
Target target = node.getTarget();
@@ -242,11 +240,11 @@ public abstract class DependencyResolver {
ListMultimap<Attribute, LabelAndConfiguration> labelMap =
resolveAttributes(
rule,
- aspectWithParameters != null ? aspectWithParameters.getDefinition() : null,
+ aspect != null ? aspect.getDefinition() : null,
config,
hostConfig,
configConditions);
- visitRule(rule, aspectWithParameters, labelMap, outgoingEdges);
+ visitRule(rule, aspect, labelMap, outgoingEdges);
} else if (target instanceof PackageGroup) {
visitPackageGroup(node, (PackageGroup) target, outgoingEdges.get(null));
} else {
@@ -555,20 +553,16 @@ public abstract class DependencyResolver {
}
}
- private ImmutableSet<AspectWithParameters> requiredAspects(
- AspectWithParameters aspectWithParameters,
- Attribute attribute,
- Target target,
- Rule originalRule) {
+ private ImmutableSet<Aspect> requiredAspects(
+ Aspect aspect, Attribute attribute, Target target, Rule originalRule) {
if (!(target instanceof Rule)) {
return ImmutableSet.of();
}
- Set<AspectWithParameters> aspectCandidates =
- extractAspectCandidates(aspectWithParameters, attribute, originalRule);
+ Set<Aspect> aspectCandidates = extractAspectCandidates(aspect, attribute, originalRule);
RuleClass ruleClass = ((Rule) target).getRuleClassObject();
- ImmutableSet.Builder<AspectWithParameters> result = ImmutableSet.builder();
- for (AspectWithParameters candidateClass : aspectCandidates) {
+ ImmutableSet.Builder<Aspect> result = ImmutableSet.builder();
+ for (Aspect candidateClass : aspectCandidates) {
if (Sets.difference(
candidateClass.getDefinition().getRequiredProviders(),
ruleClass.getAdvertisedProviders())
@@ -579,19 +573,18 @@ public abstract class DependencyResolver {
return result.build();
}
- private static Set<AspectWithParameters> extractAspectCandidates(
- AspectWithParameters aspectWithParameters, Attribute attribute, Rule originalRule) {
+ private static Set<Aspect> extractAspectCandidates(
+ Aspect aspectWithParameters, Attribute attribute, Rule originalRule) {
// The order of this set will be deterministic. This is necessary because this order eventually
// influences the order in which aspects are merged into the main configured target, which in
// turn influences which aspect takes precedence if two emit the same provider (maybe this
// should be an error)
- Set<AspectWithParameters> aspectCandidates = new LinkedHashSet<>();
- aspectCandidates.addAll(attribute.getAspectsWithParameters(originalRule));
+ Set<Aspect> aspectCandidates = new LinkedHashSet<>();
+ aspectCandidates.addAll(attribute.getAspects(originalRule));
if (aspectWithParameters != null) {
for (AspectClass aspect :
aspectWithParameters.getDefinition().getAttributeAspects().get(attribute.getName())) {
- aspectCandidates.add(
- new AspectWithParameters(aspect, aspectWithParameters.getParameters()));
+ aspectCandidates.add(new Aspect(aspect, aspectWithParameters.getParameters()));
}
}
return aspectCandidates;
@@ -604,7 +597,7 @@ public abstract class DependencyResolver {
private void visitRule(
Rule rule,
- AspectWithParameters aspectWithParameters,
+ Aspect aspect,
ListMultimap<Attribute, LabelAndConfiguration> labelMap,
ListMultimap<Attribute, Dependency> outgoingEdges) {
Preconditions.checkNotNull(labelMap);
@@ -647,7 +640,7 @@ public abstract class DependencyResolver {
}
for (Dependency dependency :
transitionApplier.getDependencies(
- label, requiredAspects(aspectWithParameters, attribute, toTarget, rule))) {
+ label, requiredAspects(aspect, attribute, toTarget, rule))) {
outgoingEdges.put(
entry.getKey(),
dependency);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java
index 14ef1550af..3ef5414323 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java
@@ -53,7 +53,7 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
private final ImmutableMap<Class<? extends TransitiveInfoProvider>, Object> providers;
private final ImmutableList<Artifact> mandatoryStampFiles;
private final Set<ConfigMatchingProvider> configConditions;
- private final ImmutableList<Aspect> aspects;
+ private final ImmutableList<ConfiguredAspect> configuredAspects;
RuleConfiguredTarget(RuleContext ruleContext,
ImmutableList<Artifact> mandatoryStampFiles,
@@ -80,7 +80,7 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
this.providers = ImmutableMap.copyOf(providerBuilder);
this.mandatoryStampFiles = mandatoryStampFiles;
this.configConditions = ruleContext.getConfigConditions();
- this.aspects = ImmutableList.of();
+ this.configuredAspects = ImmutableList.of();
// 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
@@ -108,7 +108,7 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
* an input or an output file).
*/
public static ConfiguredTarget mergeAspects(
- ConfiguredTarget base, Iterable<Aspect> aspects) {
+ ConfiguredTarget base, Iterable<ConfiguredAspect> aspects) {
if (Iterables.isEmpty(aspects)) {
// If there are no aspects, don't bother with creating a proxy object
return base;
@@ -122,7 +122,7 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
/**
* Creates an instance based on a configured target and a set of aspects.
*/
- private RuleConfiguredTarget(RuleConfiguredTarget base, Iterable<Aspect> aspects) {
+ private RuleConfiguredTarget(RuleConfiguredTarget base, Iterable<ConfiguredAspect> aspects) {
super(base.getTarget(), base.getConfiguration());
Set<Class<? extends TransitiveInfoProvider>> providers = new HashSet<>();
@@ -138,8 +138,8 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
SkylarkProviders.merge(getAllProviders(base, aspects, SkylarkProviders.class));
// Validate that all other providers are only provided once.
- for (Aspect aspect : aspects) {
- for (TransitiveInfoProvider aspectProvider : aspect) {
+ for (ConfiguredAspect configuredAspect : aspects) {
+ for (TransitiveInfoProvider aspectProvider : configuredAspect) {
Class<? extends TransitiveInfoProvider> aClass = aspectProvider.getClass();
if (OutputGroupProvider.class.equals(aClass)) {
continue;
@@ -178,21 +178,19 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
}
this.mandatoryStampFiles = base.mandatoryStampFiles;
this.configConditions = base.configConditions;
- this.aspects = ImmutableList.copyOf(aspects);
+ this.configuredAspects = ImmutableList.copyOf(aspects);
}
private static <T extends TransitiveInfoProvider> List<T> getAllProviders(
- RuleConfiguredTarget base,
- Iterable<Aspect> aspects,
- Class<T> providerClass) {
+ RuleConfiguredTarget base, Iterable<ConfiguredAspect> aspects, Class<T> providerClass) {
T baseProvider = base.getProvider(providerClass);
List<T> providers = new ArrayList<>();
if (baseProvider != null) {
providers.add(baseProvider);
}
- for (Aspect aspect : aspects) {
- final T aspectProvider = aspect.getProvider(providerClass);
+ for (ConfiguredAspect configuredAspect : aspects) {
+ final T aspectProvider = configuredAspect.getProvider(providerClass);
if (aspectProvider == null) {
continue;
}
@@ -215,8 +213,8 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
// class?
Object provider = providers.get(providerClass);
if (provider == null) {
- for (Aspect aspect : aspects) {
- provider = aspect.getProviders().get(providerClass);
+ for (ConfiguredAspect configuredAspect : configuredAspects) {
+ provider = configuredAspect.getProviders().get(providerClass);
if (provider != null) {
break;
}
@@ -247,8 +245,8 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
public UnmodifiableIterator<TransitiveInfoProvider> iterator() {
Map<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> allProviders =
new LinkedHashMap<>();
- for (int i = aspects.size() - 1; i >= 0; i++) {
- for (TransitiveInfoProvider tip : aspects.get(i)) {
+ for (int i = configuredAspects.size() - 1; i >= 0; i++) {
+ for (TransitiveInfoProvider tip : configuredAspects.get(i)) {
allProviders.put(tip.getClass(), tip);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java
index d7c9a8a807..bb0922b368 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelper.java
@@ -134,12 +134,11 @@ public final class TopLevelArtifactHelper {
public static ArtifactsToBuild getAllArtifactsToBuild(
AspectValue aspectValue, TopLevelArtifactContext context) {
- Aspect aspect = aspectValue.getAspect();
+ ConfiguredAspect configuredAspect = aspectValue.getConfiguredAspect();
return getAllArtifactsToBuild(
- aspect.getProvider(OutputGroupProvider.class),
- aspect.getProvider(FileProvider.class),
- context
- );
+ configuredAspect.getProvider(OutputGroupProvider.class),
+ configuredAspect.getProvider(FileProvider.class),
+ context);
}
public static ArtifactsToBuild getAllArtifactsToBuild(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index a5f2c6bfbd..49f71b605b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -43,7 +43,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.packages.AspectWithParameters;
+import com.google.devtools.build.lib.packages.Aspect;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.Configurator;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
@@ -1466,8 +1466,8 @@ public final class BuildConfiguration {
* for each configuration represented by this instance.
* TODO(bazel-team): this is a really ugly reverse dependency: factor this away.
*/
- Iterable<DependencyResolver.Dependency> getDependencies(Label label,
- ImmutableSet<AspectWithParameters> aspects);
+ Iterable<DependencyResolver.Dependency> getDependencies(
+ Label label, ImmutableSet<Aspect> aspects);
}
/**
@@ -1540,8 +1540,8 @@ public final class BuildConfiguration {
}
@Override
- public Iterable<DependencyResolver.Dependency> getDependencies(Label label,
- ImmutableSet<AspectWithParameters> aspects) {
+ public Iterable<DependencyResolver.Dependency> getDependencies(
+ Label label, ImmutableSet<Aspect> aspects) {
return ImmutableList.of(
new DependencyResolver.Dependency(label, currentConfiguration, aspects));
}
@@ -1641,8 +1641,8 @@ public final class BuildConfiguration {
}
@Override
- public Iterable<DependencyResolver.Dependency> getDependencies(Label label,
- ImmutableSet<AspectWithParameters> aspects) {
+ public Iterable<DependencyResolver.Dependency> getDependencies(
+ Label label, ImmutableSet<Aspect> aspects) {
return ImmutableList.of(new DependencyResolver.Dependency(label, transition, aspects));
}
}
@@ -1708,8 +1708,8 @@ public final class BuildConfiguration {
@Override
- public Iterable<DependencyResolver.Dependency> getDependencies(Label label,
- ImmutableSet<AspectWithParameters> aspects) {
+ public Iterable<DependencyResolver.Dependency> getDependencies(
+ Label label, ImmutableSet<Aspect> aspects) {
ImmutableList.Builder<DependencyResolver.Dependency> builder = ImmutableList.builder();
for (TransitionApplier applier : appliers) {
builder.addAll(applier.getDependencies(label, aspects));