diff options
author | twerth <twerth@google.com> | 2018-03-05 07:41:37 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-05 07:43:50 -0800 |
commit | 88c3b85bbfa840200ec5d483dc791cefbb20f73a (patch) | |
tree | 236199b432753f20f9d5b53374bcb2142570dacf /src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java | |
parent | 3bcad502164dd169e5bb0af88f406dea86e24109 (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.java | 140 |
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 |