aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
authorGravatar Rumou Duan <rduan@google.com>2016-04-25 17:55:12 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-04-26 08:29:19 +0000
commit33bab46ae38ef0dec7914bb4ca7b733a9feb435c (patch)
tree5d10b6610a56bf8414313d842850026369264fcb /src/main/java/com/google/devtools/build/lib/analysis
parentd9121976fa7b39372027c70edddf9eb3c0bba7a6 (diff)
Split ActionMetadata into ActionAnalysisMetadata and ActionExecutionMetadata.
Except in action execution logic (ActionExecutionFunction, SkyframeActionExecutor, etc.), switch Action interface references to either ActionAnalysisMetadata if possible or ActionExecutionMetadata. -- MOS_MIGRATED_REVID=120723431
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ExtraActionsVisitor.java26
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PrintActionVisitor.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java12
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;
}