aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java46
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java67
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java6
3 files changed, 33 insertions, 86 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 5cd90d2da5..1f21e65dc7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -33,7 +33,6 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ArtifactFactory;
import com.google.devtools.build.lib.actions.ArtifactOwner;
import com.google.devtools.build.lib.actions.Root;
-import com.google.devtools.build.lib.analysis.ExtraActionArtifactsProvider.ExtraArtifactSet;
import com.google.devtools.build.lib.analysis.config.BinTools;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
@@ -682,30 +681,31 @@ public class BuildView {
Collection<ConfiguredTarget> configuredTargets,
Collection<AspectValue> aspects,
Set<Artifact> artifactsToBuild) {
- Iterable<ExtraArtifactSet> xaSets =
+ Iterable<Artifact> extraActionArtifacts =
concat(
addExtraActionsFromTargets(viewOptions, configuredTargets),
addExtraActionsFromAspects(viewOptions, aspects));
RegexFilter filter = viewOptions.extraActionFilter;
- for (ExtraArtifactSet set : xaSets) {
- boolean filterMatches = filter == null || filter.isIncluded(set.getLabel().toString());
+ for (Artifact artifact : extraActionArtifacts) {
+ boolean filterMatches =
+ filter == null || filter.isIncluded(artifact.getOwnerLabel().toString());
if (filterMatches) {
- artifactsToBuild.addAll(set.getArtifacts());
+ artifactsToBuild.add(artifact);
}
}
}
- private NestedSet<ExtraArtifactSet> addExtraActionsFromTargets(
+ private NestedSet<Artifact> addExtraActionsFromTargets(
BuildView.Options viewOptions, Collection<ConfiguredTarget> configuredTargets) {
- NestedSetBuilder<ExtraArtifactSet> builder = NestedSetBuilder.stableOrder();
+ NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
for (ConfiguredTarget target : configuredTargets) {
ExtraActionArtifactsProvider provider =
target.getProvider(ExtraActionArtifactsProvider.class);
if (provider != null) {
if (viewOptions.extraActionTopLevelOnly) {
if (!viewOptions.extraActionTopLevelOnlyWithAspects) {
- builder.add(ExtraArtifactSet.of(target.getLabel(), provider.getExtraActionArtifacts()));
+ builder.addTransitive(provider.getExtraActionArtifacts());
} else {
// Collect all aspect-classes that topLevel might inject.
Set<AspectClass> aspectClasses = new HashSet<>();
@@ -713,16 +713,10 @@ public class BuildView {
aspectClasses.addAll(attr.getAspectClasses());
}
- Iterable<Artifact> artifacts;
- if (aspectClasses.isEmpty()) {
- artifacts = provider.getExtraActionArtifacts();
- } else {
- ImmutableList.Builder<Artifact> artifactBuilder = ImmutableList.builder();
- artifactBuilder.addAll(provider.getExtraActionArtifacts());
- artifactBuilder.addAll(filterTransitiveExtraActions(provider, aspectClasses));
- artifacts = artifactBuilder.build();
+ builder.addTransitive(provider.getExtraActionArtifacts());
+ if (!aspectClasses.isEmpty()) {
+ builder.addAll(filterTransitiveExtraActions(provider, aspectClasses));
}
- builder.add(ExtraArtifactSet.of(target.getLabel(), artifacts));
}
} else {
builder.addTransitive(provider.getTransitiveExtraActionArtifacts());
@@ -741,28 +735,26 @@ public class BuildView {
ImmutableList.Builder<Artifact> artifacts = ImmutableList.builder();
// Add to 'artifacts' all extra-actions which were registered by aspects which 'topLevel'
// might have injected.
- for (ExtraArtifactSet extraArtifactSet : provider.getTransitiveExtraActionArtifacts()) {
- for (Artifact artifact : extraArtifactSet.getArtifacts()) {
- ArtifactOwner owner = artifact.getArtifactOwner();
- if (owner instanceof AspectKey) {
- if (aspectClasses.contains(((AspectKey) owner).getAspectClass())) {
- artifacts.add(artifact);
- }
+ for (Artifact artifact : provider.getTransitiveExtraActionArtifacts()) {
+ ArtifactOwner owner = artifact.getArtifactOwner();
+ if (owner instanceof AspectKey) {
+ if (aspectClasses.contains(((AspectKey) owner).getAspectClass())) {
+ artifacts.add(artifact);
}
}
}
return artifacts.build();
}
- private NestedSet<ExtraArtifactSet> addExtraActionsFromAspects(
+ private NestedSet<Artifact> addExtraActionsFromAspects(
BuildView.Options viewOptions, Collection<AspectValue> aspects) {
- NestedSetBuilder<ExtraArtifactSet> builder = NestedSetBuilder.stableOrder();
+ NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
for (AspectValue aspect : aspects) {
ExtraActionArtifactsProvider provider =
aspect.getConfiguredAspect().getProvider(ExtraActionArtifactsProvider.class);
if (provider != null) {
if (viewOptions.extraActionTopLevelOnly) {
- builder.add(ExtraArtifactSet.of(aspect.getLabel(), provider.getExtraActionArtifacts()));
+ builder.addTransitive(provider.getExtraActionArtifacts());
} else {
builder.addTransitive(provider.getTransitiveExtraActionArtifacts());
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
index 01b23d988f..3ea9a5a8de 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionArtifactsProvider.java
@@ -14,9 +14,7 @@
package com.google.devtools.build.lib.analysis;
-import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.cmdline.Label;
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;
@@ -30,48 +28,11 @@ public final class ExtraActionArtifactsProvider implements TransitiveInfoProvide
public static final ExtraActionArtifactsProvider EMPTY =
new ExtraActionArtifactsProvider(
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
- NestedSetBuilder.<ExtraArtifactSet>emptySet(Order.STABLE_ORDER));
+ NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER));
- /**
- * The set of extra artifacts provided by a single configured target.
- */
- @Immutable
- public static final class ExtraArtifactSet {
- private final Label label;
- private final ImmutableList<Artifact> artifacts;
-
- private ExtraArtifactSet(Label label, Iterable<Artifact> artifacts) {
- this.label = label;
- this.artifacts = ImmutableList.copyOf(artifacts);
- }
-
- public Label getLabel() {
- return label;
- }
-
- public ImmutableList<Artifact> getArtifacts() {
- return artifacts;
- }
-
- public static ExtraArtifactSet of(Label label, Iterable<Artifact> artifacts) {
- return new ExtraArtifactSet(label, artifacts);
- }
-
- @Override
- public int hashCode() {
- return label.hashCode();
- }
-
- @Override
- public boolean equals(Object other) {
- return other == this
- || (other instanceof ExtraArtifactSet
- && label.equals(((ExtraArtifactSet) other).getLabel()));
- }
- }
-
- public static ExtraActionArtifactsProvider create(NestedSet<Artifact> extraActionArtifacts,
- NestedSet<ExtraArtifactSet> transitiveExtraActionArtifacts) {
+ public static ExtraActionArtifactsProvider create(
+ NestedSet<Artifact> extraActionArtifacts,
+ NestedSet<Artifact> transitiveExtraActionArtifacts) {
if (extraActionArtifacts.isEmpty() && transitiveExtraActionArtifacts.isEmpty()) {
return EMPTY;
}
@@ -81,8 +42,7 @@ public final class ExtraActionArtifactsProvider implements TransitiveInfoProvide
public static ExtraActionArtifactsProvider merge(
Iterable<ExtraActionArtifactsProvider> providers) {
NestedSetBuilder<Artifact> artifacts = NestedSetBuilder.stableOrder();
- NestedSetBuilder<ExtraArtifactSet> transitiveExtraActionArtifacts =
- NestedSetBuilder.stableOrder();
+ NestedSetBuilder<Artifact> transitiveExtraActionArtifacts = NestedSetBuilder.stableOrder();
for (ExtraActionArtifactsProvider provider : providers) {
artifacts.addTransitive(provider.getExtraActionArtifacts());
@@ -94,13 +54,12 @@ public final class ExtraActionArtifactsProvider implements TransitiveInfoProvide
/** The outputs of the extra actions associated with this target. */
private final NestedSet<Artifact> extraActionArtifacts;
- private final NestedSet<ExtraArtifactSet> transitiveExtraActionArtifacts;
+ private final NestedSet<Artifact> transitiveExtraActionArtifacts;
- /**
- * Use {@link #create} instead.
- */
- private ExtraActionArtifactsProvider(NestedSet<Artifact> extraActionArtifacts,
- NestedSet<ExtraArtifactSet> transitiveExtraActionArtifacts) {
+ /** Use {@link #create} instead. */
+ private ExtraActionArtifactsProvider(
+ NestedSet<Artifact> extraActionArtifacts,
+ NestedSet<Artifact> transitiveExtraActionArtifacts) {
this.extraActionArtifacts = extraActionArtifacts;
this.transitiveExtraActionArtifacts = transitiveExtraActionArtifacts;
}
@@ -112,10 +71,8 @@ public final class ExtraActionArtifactsProvider implements TransitiveInfoProvide
return extraActionArtifacts;
}
- /**
- * The outputs of the extra actions in the whole transitive closure.
- */
- public NestedSet<ExtraArtifactSet> getTransitiveExtraActionArtifacts() {
+ /** The outputs of the extra actions in the whole transitive closure. */
+ public NestedSet<Artifact> getTransitiveExtraActionArtifacts() {
return transitiveExtraActionArtifacts;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
index 782eaa2ef1..99fd04cda7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
@@ -18,14 +18,12 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.ExtraActionArtifactsProvider.ExtraArtifactSet;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.extra.ExtraActionMapProvider;
import com.google.devtools.build.lib.rules.extra.ExtraActionSpec;
-
import java.util.List;
import java.util.Set;
@@ -51,7 +49,7 @@ class ExtraActionUtils {
}
ImmutableList<Artifact> extraActionArtifacts = ImmutableList.of();
- NestedSetBuilder<ExtraArtifactSet> builder = NestedSetBuilder.stableOrder();
+ NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder();
List<Label> actionListenerLabels = configuration.getActionListeners();
if (!actionListenerLabels.isEmpty()
@@ -70,7 +68,7 @@ class ExtraActionUtils {
extraActionArtifacts = visitor.getAndResetExtraArtifacts();
if (!extraActionArtifacts.isEmpty()) {
- builder.add(ExtraArtifactSet.of(ruleContext.getLabel(), extraActionArtifacts));
+ builder.addAll(extraActionArtifacts);
}
}