diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
10 files changed, 53 insertions, 49 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java index cf1b16b8d7..dd96b3a6de 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java @@ -17,6 +17,7 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionRegistry; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.MiddlemanFactory; @@ -105,13 +106,13 @@ public interface AnalysisEnvironment extends ActionRegistry { * If the artifact was created in another analysis environment (e.g. by a different configured * target instance) or the artifact is a source artifact, it returns null. */ - Action getLocalGeneratingAction(Artifact artifact); + ActionAnalysisMetadata getLocalGeneratingAction(Artifact artifact); /** * Returns the actions that were registered so far with this analysis environment, that is, all * the actions that were created by the current target being analyzed. */ - Iterable<Action> getRegisteredActions(); + Iterable<ActionAnalysisMetadata> getRegisteredActions(); /** * Returns the Skyframe SkyFunction.Environment if available. Otherwise, null. 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 fb30f6099f..1251fe1ceb 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 @@ -27,7 +27,7 @@ import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.google.common.eventbus.EventBus; -import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionGraph; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactFactory; @@ -552,7 +552,7 @@ public class BuildView { getArtifactFactory(), CoverageReportValue.ARTIFACT_OWNER); if (actionsWrapper != null) { - ImmutableList <Action> actions = actionsWrapper.getActions(); + ImmutableList<ActionAnalysisMetadata> actions = actionsWrapper.getActions(); skyframeExecutor.injectCoverageReportData(actions); artifactsToBuild.addAll(actionsWrapper.getCoverageOutputs()); } @@ -571,7 +571,7 @@ public class BuildView { final ActionGraph actionGraph = new ActionGraph() { @Nullable @Override - public Action getGeneratingAction(Artifact artifact) { + public ActionAnalysisMetadata getGeneratingAction(Artifact artifact) { ArtifactOwner artifactOwner = artifact.getArtifactOwner(); if (artifactOwner instanceof ActionLookupValue.ActionLookupKey) { SkyKey key = ActionLookupValue.key((ActionLookupValue.ActionLookupKey) artifactOwner); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java index 4d1d787095..2f8762d025 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java @@ -17,7 +17,7 @@ import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; -import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactFactory; import com.google.devtools.build.lib.actions.ArtifactOwner; @@ -90,7 +90,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { * The list of actions registered by the configured target this analysis environment is * responsible for. May get cleared out at the end of the analysis of said target. */ - final List<Action> actions = new ArrayList<>(); + final List<ActionAnalysisMetadata> actions = new ArrayList<>(); public CachingAnalysisEnvironment(ArtifactFactory artifactFactory, ArtifactOwner owner, boolean isSystemEnv, boolean extendedSanityChecks, @@ -119,7 +119,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { skyframeEnv = null; } - private static StringBuilder shortDescription(Action action) { + private static StringBuilder shortDescription(ActionAnalysisMetadata action) { if (action == null) { return new StringBuilder("null Action"); } @@ -138,7 +138,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { List<String> checkedActions = null; if (!orphanArtifacts.isEmpty()) { checkedActions = Lists.newArrayListWithCapacity(actions.size()); - for (Action action : actions) { + for (ActionAnalysisMetadata action : actions) { StringBuilder sb = shortDescription(action); for (Artifact o : action.getOutputs()) { sb.append("\n "); @@ -166,7 +166,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { private Map<Artifact, String> getOrphanArtifactMap() { // Construct this set to avoid poor performance under large --runs_per_test. Set<Artifact> artifactsWithActions = new HashSet<>(); - for (Action action : actions) { + for (ActionAnalysisMetadata action : actions) { // Don't bother checking that every Artifact only appears once; that test is performed // elsewhere (see #testNonUniqueOutputs in ActionListenerIntegrationTest). artifactsWithActions.addAll(action.getOutputs()); @@ -258,7 +258,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { } @Override - public void registerAction(Action... actions) { + public void registerAction(ActionAnalysisMetadata... actions) { Preconditions.checkState(enabled); if (allowRegisteringActions) { Collections.addAll(this.actions, actions); @@ -266,9 +266,9 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { } @Override - public Action getLocalGeneratingAction(Artifact artifact) { + public ActionAnalysisMetadata getLocalGeneratingAction(Artifact artifact) { Preconditions.checkState(allowRegisteringActions); - for (Action action : actions) { + for (ActionAnalysisMetadata action : actions) { if (action.getOutputs().contains(artifact)) { return action; } @@ -277,7 +277,7 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { } @Override - public Collection<Action> getRegisteredActions() { + public Collection<ActionAnalysisMetadata> getRegisteredActions() { return Collections.unmodifiableCollection(actions); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java index 645cd6d889..7f3db2a01e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java @@ -20,7 +20,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.UnmodifiableIterator; -import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -174,7 +174,8 @@ public final class ConfiguredAspect implements Iterable<TransitiveInfoProvider> addProvider( ExtraActionArtifactsProvider.class, createExtraActionProvider( - ImmutableSet.<Action>of() /* actionsWithoutExtraAction */, ruleContext)); + ImmutableSet.<ActionAnalysisMetadata>of() /* actionsWithoutExtraAction */, + ruleContext)); return new ConfiguredAspect(name, ImmutableMap.copyOf(providers)); } 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 829e637956..782eaa2ef1 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 @@ -16,7 +16,7 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableList; import com.google.common.collect.Multimap; -import com.google.devtools.build.lib.actions.Action; +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; @@ -44,7 +44,7 @@ class ExtraActionUtils { * bookkeeping. */ static ExtraActionArtifactsProvider createExtraActionProvider( - Set<Action> actionsWithoutExtraAction, RuleContext ruleContext) { + Set<ActionAnalysisMetadata> actionsWithoutExtraAction, RuleContext ruleContext) { BuildConfiguration configuration = ruleContext.getConfiguration(); if (configuration.isHostConfiguration()) { return ExtraActionArtifactsProvider.EMPTY; @@ -61,7 +61,7 @@ class ExtraActionUtils { // The action list is modified within the body of the loop by the maybeAddExtraAction() call, // thus the copy - for (Action action : + for (ActionAnalysisMetadata action : ImmutableList.copyOf(ruleContext.getAnalysisEnvironment().getRegisteredActions())) { if (!actionsWithoutExtraAction.contains(action)) { visitor.maybeAddExtraAction(action); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java index 3b4069ede4..db1017390d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java @@ -17,8 +17,8 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionGraph; import com.google.devtools.build.lib.actions.ActionGraphVisitor; import com.google.devtools.build.lib.actions.Artifact; @@ -26,7 +26,6 @@ import com.google.devtools.build.lib.rules.extra.ExtraActionSpec; import java.util.Collection; import java.util.List; -import java.util.Set; import javax.annotation.Nullable; @@ -37,7 +36,6 @@ final class ExtraActionsVisitor extends ActionGraphVisitor { private final RuleContext ruleContext; private final Multimap<String, ExtraActionSpec> mnemonicToExtraActionMap; private final List<Artifact> extraArtifacts; - public final Set<Action> actions = Sets.newHashSet(); /** Creates a new visitor for the extra actions associated with the given target. */ public ExtraActionsVisitor(RuleContext ruleContext, @@ -48,21 +46,23 @@ final class ExtraActionsVisitor extends ActionGraphVisitor { extraArtifacts = Lists.newArrayList(); } - void maybeAddExtraAction(Action original) { - if (original.extraActionCanAttach()) { - Collection<ExtraActionSpec> extraActions = - mnemonicToExtraActionMap.get(original.getMnemonic()); - if (extraActions != null) { - for (ExtraActionSpec extraAction : extraActions) { - extraArtifacts.addAll(extraAction.addExtraAction(ruleContext, original)); + void maybeAddExtraAction(ActionAnalysisMetadata original) { + if (original instanceof Action) { + Action action = (Action) original; + if (action.extraActionCanAttach()) { + Collection<ExtraActionSpec> extraActions = + mnemonicToExtraActionMap.get(action.getMnemonic()); + if (extraActions != null) { + for (ExtraActionSpec extraAction : extraActions) { + extraArtifacts.addAll(extraAction.addExtraAction(ruleContext, action)); + } } } } } @Override - protected void visitAction(Action action) { - actions.add(action); + protected void visitAction(ActionAnalysisMetadata action) { maybeAddExtraAction(action); } @@ -78,7 +78,7 @@ final class ExtraActionsVisitor extends ActionGraphVisitor { return new ActionGraph() { @Override @Nullable - public Action getGeneratingAction(Artifact artifact) { + public ActionAnalysisMetadata getGeneratingAction(Artifact artifact) { return ruleContext.getAnalysisEnvironment().getLocalGeneratingAction(artifact); } }; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PrintActionVisitor.java b/src/main/java/com/google/devtools/build/lib/analysis/PrintActionVisitor.java index 287809265f..abe62c1474 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/PrintActionVisitor.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/PrintActionVisitor.java @@ -16,7 +16,7 @@ package com.google.devtools.build.lib.analysis; import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; -import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionGraph; import com.google.devtools.build.lib.actions.ActionGraphVisitor; import com.google.devtools.build.lib.actions.ActionOwner; @@ -28,8 +28,8 @@ import java.util.List; */ public final class PrintActionVisitor extends ActionGraphVisitor { private final ConfiguredTarget target; - private final List<Action> actions; - private final Predicate<Action> actionMnemonicMatcher; + private final List<ActionAnalysisMetadata> actions; + private final Predicate<ActionAnalysisMetadata> actionMnemonicMatcher; private final String targetConfigurationChecksum; /** @@ -37,7 +37,7 @@ public final class PrintActionVisitor extends ActionGraphVisitor { * mnemonic. */ public PrintActionVisitor(ActionGraph actionGraph, ConfiguredTarget target, - Predicate<Action> actionMnemonicMatcher) { + Predicate<ActionAnalysisMetadata> actionMnemonicMatcher) { super(actionGraph); this.target = target; this.actionMnemonicMatcher = actionMnemonicMatcher; @@ -46,21 +46,21 @@ public final class PrintActionVisitor extends ActionGraphVisitor { } @Override - protected boolean shouldVisit(Action action) { + protected boolean shouldVisit(ActionAnalysisMetadata action) { ActionOwner owner = action.getOwner(); return owner != null && target.getLabel().equals(owner.getLabel()) && targetConfigurationChecksum.equals(owner.getConfigurationChecksum()); } @Override - protected void visitAction(Action action) { + protected void visitAction(ActionAnalysisMetadata action) { if (actionMnemonicMatcher.apply(action)) { actions.add(action); } } /** Retrieves the collected actions since this method was last called and clears the list. */ - public ImmutableList<Action> getActions() { + public ImmutableList<ActionAnalysisMetadata> getActions() { return ImmutableList.copyOf(actions); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java index 07b0d863c9..853fdf7caf 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java @@ -18,7 +18,7 @@ import static com.google.devtools.build.lib.analysis.ExtraActionUtils.createExtr import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.LicensesProvider.TargetLicense; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; @@ -62,7 +62,7 @@ public final class RuleConfiguredTargetBuilder { private NestedSet<Artifact> filesToBuild = NestedSetBuilder.emptySet(Order.STABLE_ORDER); private RunfilesSupport runfilesSupport; private Artifact executable; - private ImmutableSet<Action> actionsWithoutExtraAction = ImmutableSet.of(); + private ImmutableSet<ActionAnalysisMetadata> actionsWithoutExtraAction = ImmutableSet.of(); public RuleConfiguredTargetBuilder(RuleContext ruleContext) { this.ruleContext = ruleContext; @@ -341,7 +341,8 @@ public final class RuleConfiguredTargetBuilder { /** * Set the extra action pseudo actions. */ - public RuleConfiguredTargetBuilder setActionsWithoutExtraAction(ImmutableSet<Action> actions) { + public RuleConfiguredTargetBuilder setActionsWithoutExtraAction( + ImmutableSet<ActionAnalysisMetadata> actions) { this.actionsWithoutExtraAction = actions; return this; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index fef9393d12..cc3118be95 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -29,6 +29,7 @@ import com.google.common.collect.ListMultimap; import com.google.common.collect.Multimaps; import com.google.common.collect.Sets; import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.ActionRegistry; import com.google.devtools.build.lib.actions.Artifact; @@ -379,7 +380,7 @@ public final class RuleContext extends TargetContext } @Override - public void registerAction(Action... action) { + public void registerAction(ActionAnalysisMetadata... action) { getAnalysisEnvironment().registerAction(action); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java index 39b1d96f94..18a147e4bf 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java @@ -14,7 +14,7 @@ package com.google.devtools.build.lib.analysis.buildinfo; import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.actions.Action; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.Artifact; import java.util.List; @@ -23,19 +23,19 @@ import java.util.List; * A collection of build-info files for both stamped and unstamped modes. */ public final class BuildInfoCollection { - private final ImmutableList<Action> actions; + private final ImmutableList<ActionAnalysisMetadata> actions; private final ImmutableList<Artifact> stampedBuildInfo; private final ImmutableList<Artifact> redactedBuildInfo; - public BuildInfoCollection(List<? extends Action> actions, List<Artifact> stampedBuildInfo, - List<Artifact> redactedBuildInfo) { + public BuildInfoCollection(List<? extends ActionAnalysisMetadata> actions, + List<Artifact> stampedBuildInfo, List<Artifact> redactedBuildInfo) { // Do not remove <Action>: workaround for Java 7 type inference. - this.actions = ImmutableList.<Action>copyOf(actions); + this.actions = ImmutableList.<ActionAnalysisMetadata>copyOf(actions); this.stampedBuildInfo = ImmutableList.copyOf(stampedBuildInfo); this.redactedBuildInfo = ImmutableList.copyOf(redactedBuildInfo); } - public ImmutableList<Action> getActions() { + public ImmutableList<ActionAnalysisMetadata> getActions() { return actions; } |