diff options
Diffstat (limited to 'src/main')
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); } } |