aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
diff options
context:
space:
mode:
authorGravatar twerth <twerth@google.com>2018-03-05 07:41:37 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-05 07:43:50 -0800
commit88c3b85bbfa840200ec5d483dc791cefbb20f73a (patch)
tree236199b432753f20f9d5b53374bcb2142570dacf /src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
parent3bcad502164dd169e5bb0af88f406dea86e24109 (diff)
Move action graph dump methods into the ActionGraphDump class.
RELNOTES: None PiperOrigin-RevId: 187865083
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java140
1 files changed, 9 insertions, 131 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
index 4b7cfe3d6b..48827ed498 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java
@@ -27,35 +27,21 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Range;
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.ActionExecutionMetadata;
import com.google.devtools.build.lib.actions.ActionKeyContext;
-import com.google.devtools.build.lib.actions.ActionOwner;
-import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.AnalysisProtos;
import com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.BuildView;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.WorkspaceStatusAction.Factory;
-import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
-import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
-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.NestedSetView;
-import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.concurrent.Uninterruptibles;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.packages.AspectClass;
-import com.google.devtools.build.lib.packages.AspectDescriptor;
import com.google.devtools.build.lib.packages.BuildFileName;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
@@ -111,7 +97,6 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.Callable;
@@ -776,18 +761,9 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor {
return new ArrayList<>(ruleStats.values());
}
- private static boolean includeInActionGraph(String labelString, List<String> actionGraphTargets) {
- if (actionGraphTargets.size() == 1
- && Iterables.getOnlyElement(actionGraphTargets).equals("...")) {
- return true;
- }
- return actionGraphTargets.contains(labelString);
- }
-
@Override
public ActionGraphContainer getActionGraphContainer(List<String> actionGraphTargets) {
- ActionGraphContainer.Builder actionGraphBuilder = ActionGraphContainer.newBuilder();
- ActionGraphDump actionGraphDump = new ActionGraphDump(actionGraphBuilder);
+ ActionGraphDump actionGraphDump = new ActionGraphDump(actionGraphTargets);
for (Map.Entry<SkyKey, ? extends NodeEntry> skyKeyAndNodeEntry :
memoizingEvaluator.getGraphMap().entrySet()) {
NodeEntry entry = skyKeyAndNodeEntry.getValue();
@@ -795,121 +771,23 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor {
SkyFunctionName functionName = key.functionName();
try {
if (functionName.equals(SkyFunctions.CONFIGURED_TARGET)) {
- dumpConfiguredTarget(actionGraphBuilder, actionGraphDump, entry, actionGraphTargets);
+ actionGraphDump.dumpConfiguredTarget((ConfiguredTargetValue) entry.getValue());
} else if (functionName.equals(SkyFunctions.ASPECT)) {
- dumpAspect(actionGraphBuilder, actionGraphDump, entry, actionGraphTargets);
+ AspectValue aspectValue = (AspectValue) entry.getValue();
+ AspectKey aspectKey = aspectValue.getKey();
+ ConfiguredTargetValue configuredTargetValue =
+ (ConfiguredTargetValue)
+ memoizingEvaluator.getExistingValue(aspectKey.getBaseConfiguredTargetKey());
+ actionGraphDump.dumpAspect(aspectValue, configuredTargetValue);
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new IllegalStateException("No interruption in sequenced evaluation", e);
}
}
- return actionGraphBuilder.build();
- }
-
- private void dumpAspect(
- ActionGraphContainer.Builder actionGraphBuilder,
- ActionGraphDump actionGraphDump,
- NodeEntry entry,
- List<String> actionGraphTargets)
- throws InterruptedException {
- AspectValue aspectValue = (AspectValue) entry.getValue();
- AspectKey aspectKey = aspectValue.getKey();
- ConfiguredTargetValue value =
- (ConfiguredTargetValue)
- memoizingEvaluator.getExistingValue(aspectKey.getBaseConfiguredTargetKey());
- ConfiguredTarget configuredTarget = value.getConfiguredTarget();
- if (!includeInActionGraph(configuredTarget.getLabel().toString(), actionGraphTargets)) {
- return;
- }
- for (int i = 0; i < aspectValue.getNumActions(); i++) {
- Action action = aspectValue.getAction(i);
- dumpSingleAction(actionGraphDump, actionGraphBuilder, configuredTarget, action);
- }
- }
-
- private void dumpConfiguredTarget(
- ActionGraphContainer.Builder actionGraphBuilder,
- ActionGraphDump actionGraphDump,
- NodeEntry entry,
- List<String> actionGraphTargets)
- throws InterruptedException {
- ConfiguredTargetValue ctValue = (ConfiguredTargetValue) entry.getValue();
- ConfiguredTarget configuredTarget = ctValue.getConfiguredTarget();
- if (!includeInActionGraph(configuredTarget.getLabel().toString(), actionGraphTargets)) {
- return;
- }
- List<ActionAnalysisMetadata> actions = ctValue.getActions();
- for (ActionAnalysisMetadata action : actions) {
- dumpSingleAction(actionGraphDump, actionGraphBuilder, configuredTarget, action);
- }
+ return actionGraphDump.build();
}
- private void dumpSingleAction(
- ActionGraphDump actionGraphDump,
- ActionGraphContainer.Builder actionGraphBuilder,
- ConfiguredTarget configuredTarget,
- ActionAnalysisMetadata action) {
- Preconditions.checkState(configuredTarget instanceof RuleConfiguredTarget);
- Label label = configuredTarget.getLabel();
- String ruleClassString = ((RuleConfiguredTarget) configuredTarget).getRuleClassString();
- AnalysisProtos.Action.Builder actionBuilder =
- AnalysisProtos.Action.newBuilder()
- .setMnemonic(action.getMnemonic())
- .setTargetId(actionGraphDump.targetToId(label, ruleClassString));
-
- if (action instanceof ActionExecutionMetadata) {
- ActionExecutionMetadata actionExecutionMetadata = (ActionExecutionMetadata) action;
- actionBuilder
- .setActionKey(actionExecutionMetadata.getKey(actionGraphDump.getActionKeyContext()))
- .setDiscoversInputs(actionExecutionMetadata.discoversInputs());
- }
-
- // store environment
- if (action instanceof SpawnAction) {
- SpawnAction spawnAction = (SpawnAction) action;
- // TODO(twerth): This handles the fixed environemnt. We probably want to output the inherited
- // environment as well.
- ImmutableMap<String, String> fixedEnvironment = spawnAction.getEnvironment();
- for (Entry<String, String> environmentVariable : fixedEnvironment.entrySet()) {
- AnalysisProtos.KeyValuePair.Builder keyValuePairBuilder =
- AnalysisProtos.KeyValuePair.newBuilder();
- keyValuePairBuilder
- .setKey(environmentVariable.getKey())
- .setValue(environmentVariable.getValue());
- actionBuilder.addEnvironmentVariables(keyValuePairBuilder.build());
- }
- }
-
- ActionOwner actionOwner = action.getOwner();
- if (actionOwner != null) {
- BuildConfiguration buildConfiguration = (BuildConfiguration) actionOwner.getConfiguration();
- actionBuilder.setConfigurationId(actionGraphDump.configurationToId(buildConfiguration));
-
- // store aspect
- for (AspectDescriptor aspectDescriptor : actionOwner.getAspectDescriptors()) {
- actionBuilder.addAspectDescriptorIds(
- actionGraphDump.aspectDescriptorToId(aspectDescriptor));
- }
- }
-
- // store inputs
- Iterable<Artifact> inputs = action.getInputs();
- if (!(inputs instanceof NestedSet)) {
- inputs = NestedSetBuilder.wrap(Order.STABLE_ORDER, inputs);
- }
- NestedSetView<Artifact> nestedSetView = new NestedSetView<>((NestedSet<Artifact>) inputs);
- if (nestedSetView.directs().size() > 0 || nestedSetView.transitives().size() > 0) {
- actionBuilder.addInputDepSetIds(actionGraphDump.depSetToId(nestedSetView));
- }
-
- // store outputs
- for (Artifact artifact : action.getOutputs()) {
- actionBuilder.addOutputIds(actionGraphDump.artifactToId(artifact));
- }
-
- actionGraphBuilder.addActions(actionBuilder.build());
- }
/**
* In addition to calling the superclass method, deletes all ConfiguredTarget values from the