aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar twerth <twerth@google.com>2018-03-07 05:57:37 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-07 05:59:04 -0800
commit2f232c8078d241f61947878d4a67989e3c8884e8 (patch)
tree9eb8eeecb8ccd24eb16c14807704cb6cb2f3309d
parente5626a53e108fe9de2af84fb2cf0c38eb72cdc4f (diff)
Add option to dump command lines of actions in dump.
RELNOTES: None PiperOrigin-RevId: 188164754
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java26
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/ActionGraphDump.java19
4 files changed, 47 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
index 2400cf6d18..a9fba24573 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/DumpCommand.java
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.runtime.commands;
import static java.util.stream.Collectors.toList;
+import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
@@ -128,6 +129,18 @@ public class DumpCommand implements BlazeCommand {
public List<String> actionGraphTargets;
@Option(
+ name = "action_graph:include_cmdline",
+ defaultValue = "false",
+ category = "verbosity",
+ documentationCategory = OptionDocumentationCategory.OUTPUT_SELECTION,
+ effectTags = {OptionEffectTag.BAZEL_MONITORING},
+ help =
+ "Include command line of actions in the action graph dump. "
+ + "This option does only apply to --action_graph."
+ )
+ public boolean actionGraphIncludeCmdLine;
+
+ @Option(
name = "rule_classes",
defaultValue = "false",
category = "verbosity",
@@ -251,7 +264,10 @@ public class DumpCommand implements BlazeCommand {
env.getSkyframeExecutor(),
dumpOptions.dumpActionGraph,
dumpOptions.actionGraphTargets,
+ dumpOptions.actionGraphIncludeCmdLine,
out);
+ } catch (CommandLineExpansionException e) {
+ env.getReporter().handle(Event.error(null, "Error expanding command line: " + e));
} catch (IOException e) {
env.getReporter()
.error(
@@ -303,11 +319,15 @@ public class DumpCommand implements BlazeCommand {
}
private boolean dumpActionGraph(
- SkyframeExecutor executor, String path, List<String> actionGraphTargets, PrintStream out)
- throws IOException {
+ SkyframeExecutor executor,
+ String path,
+ List<String> actionGraphTargets,
+ boolean includeActionCmdLine,
+ PrintStream out)
+ throws CommandLineExpansionException, IOException {
out.println("Dumping action graph to '" + path + "'");
ActionGraphContainer actionGraphContainer =
- executor.getActionGraphContainer(actionGraphTargets);
+ executor.getActionGraphContainer(actionGraphTargets, includeActionCmdLine);
FileOutputStream protoOutputStream = new FileOutputStream(path);
actionGraphContainer.writeTo(protoOutputStream);
protoOutputStream.close();
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 e6375c0e02..6844818b7c 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
@@ -28,6 +28,7 @@ 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.ActionKeyContext;
+import com.google.devtools.build.lib.actions.CommandLineExpansionException;
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;
@@ -763,8 +764,10 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor {
}
@Override
- public ActionGraphContainer getActionGraphContainer(List<String> actionGraphTargets) {
- ActionGraphDump actionGraphDump = new ActionGraphDump(actionGraphTargets);
+ public ActionGraphContainer getActionGraphContainer(
+ List<String> actionGraphTargets, boolean includeActionCmdLine)
+ throws CommandLineExpansionException {
+ ActionGraphDump actionGraphDump = new ActionGraphDump(actionGraphTargets, includeActionCmdLine);
for (Map.Entry<SkyKey, ? extends NodeEntry> skyKeyAndNodeEntry :
memoizingEvaluator.getGraphMap().entrySet()) {
NodeEntry entry = skyKeyAndNodeEntry.getValue();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index 4a8bf8ed80..41106fca89 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -50,6 +50,7 @@ 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.ArtifactRoot;
+import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.actions.EnvironmentalExecException;
import com.google.devtools.build.lib.actions.Executor;
import com.google.devtools.build.lib.actions.FileStateType;
@@ -593,7 +594,9 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
}
}
- public abstract ActionGraphContainer getActionGraphContainer(List<String> actionGraphTargets);
+ public abstract ActionGraphContainer getActionGraphContainer(
+ List<String> actionGraphTargets, boolean includeActionCmdLine)
+ throws CommandLineExpansionException;
class BuildViewProvider {
/**
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/ActionGraphDump.java b/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/ActionGraphDump.java
index a606e34553..3a18d414c4 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/ActionGraphDump.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/ActionGraphDump.java
@@ -23,6 +23,7 @@ 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.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.analysis.AnalysisProtos;
import com.google.devtools.build.lib.analysis.AnalysisProtos.ActionGraphContainer;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -56,9 +57,12 @@ public class ActionGraphDump {
private final KnownNestedSets knownNestedSets;
private final KnownAspectDescriptors knownAspectDescriptors;
private final KnownRuleConfiguredTargets knownRuleConfiguredTargets;
+ private final boolean includeActionCmdLine;
- public ActionGraphDump(List<String> actionGraphTargets) {
+ public ActionGraphDump(List<String> actionGraphTargets, boolean includeActionCmdLine) {
this.actionGraphTargets = ImmutableSet.copyOf(actionGraphTargets);
+ this.includeActionCmdLine = includeActionCmdLine;
+
knownRuleClassStrings = new KnownRuleClassStrings(actionGraphBuilder);
knownArtifacts = new KnownArtifacts(actionGraphBuilder);
knownConfigurations = new KnownConfigurations(actionGraphBuilder);
@@ -80,7 +84,8 @@ public class ActionGraphDump {
return actionGraphTargets.contains(labelString);
}
- private void dumpSingleAction(ConfiguredTarget configuredTarget, ActionAnalysisMetadata action) {
+ private void dumpSingleAction(ConfiguredTarget configuredTarget, ActionAnalysisMetadata action)
+ throws CommandLineExpansionException {
Preconditions.checkState(configuredTarget instanceof RuleConfiguredTarget);
RuleConfiguredTarget ruleConfiguredTarget = (RuleConfiguredTarget) configuredTarget;
AnalysisProtos.Action.Builder actionBuilder =
@@ -109,6 +114,10 @@ public class ActionGraphDump {
.setValue(environmentVariable.getValue());
actionBuilder.addEnvironmentVariables(keyValuePairBuilder.build());
}
+
+ if (includeActionCmdLine) {
+ actionBuilder.addAllArguments(spawnAction.getArguments());
+ }
}
ActionOwner actionOwner = action.getOwner();
@@ -140,7 +149,8 @@ public class ActionGraphDump {
actionGraphBuilder.addActions(actionBuilder.build());
}
- public void dumpAspect(AspectValue aspectValue, ConfiguredTargetValue configuredTargetValue) {
+ public void dumpAspect(AspectValue aspectValue, ConfiguredTargetValue configuredTargetValue)
+ throws CommandLineExpansionException {
ConfiguredTarget configuredTarget = configuredTargetValue.getConfiguredTarget();
if (!includeInActionGraph(configuredTarget.getLabel().toString())) {
return;
@@ -151,7 +161,8 @@ public class ActionGraphDump {
}
}
- public void dumpConfiguredTarget(ConfiguredTargetValue configuredTargetValue) {
+ public void dumpConfiguredTarget(ConfiguredTargetValue configuredTargetValue)
+ throws CommandLineExpansionException {
ConfiguredTarget configuredTarget = configuredTargetValue.getConfiguredTarget();
if (!includeInActionGraph(configuredTarget.getLabel().toString())) {
return;