diff options
author | 2018-03-02 05:17:12 -0800 | |
---|---|---|
committer | 2018-03-02 05:19:07 -0800 | |
commit | 7c5000944c8264115792ebb82c008ad95493ec68 (patch) | |
tree | d718a6bc687a899645f4a7d30d894a4d55567f32 /src/main/java/com/google/devtools/build/lib/skyframe | |
parent | fefd1b24017ddb7606056bec081a173217a116c8 (diff) |
Add option to filter for targets in the action graph dump.
RELNOTES: Use bazel dump --action_graph=/path/to/action.proto --action_graph:targets://foo:bar,//foo:foo to filter for certain targets in the action graph dump.
PiperOrigin-RevId: 187608321
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutor.java | 26 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java | 2 |
2 files changed, 22 insertions, 6 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 1652a764ff..ab98da4641 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 @@ -893,8 +893,16 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { } } + 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() { + public ActionGraphContainer getActionGraphContainer(List<String> actionGraphTargets) { ActionGraphContainer.Builder actionGraphBuilder = ActionGraphContainer.newBuilder(); ActionGraphIdCache actionGraphIdCache = new ActionGraphIdCache(actionGraphBuilder); for (Map.Entry<SkyKey, ? extends NodeEntry> skyKeyAndNodeEntry : @@ -904,9 +912,9 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { SkyFunctionName functionName = key.functionName(); try { if (functionName.equals(SkyFunctions.CONFIGURED_TARGET)) { - dumpConfiguredTarget(actionGraphBuilder, actionGraphIdCache, entry); + dumpConfiguredTarget(actionGraphBuilder, actionGraphIdCache, entry, actionGraphTargets); } else if (functionName.equals(SkyFunctions.ASPECT)) { - dumpAspect(actionGraphBuilder, actionGraphIdCache, entry); + dumpAspect(actionGraphBuilder, actionGraphIdCache, entry, actionGraphTargets); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); @@ -919,7 +927,8 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { private void dumpAspect( ActionGraphContainer.Builder actionGraphBuilder, ActionGraphIdCache actionGraphIdCache, - NodeEntry entry) + NodeEntry entry, + List<String> actionGraphTargets) throws InterruptedException { AspectValue aspectValue = (AspectValue) entry.getValue(); AspectKey aspectKey = aspectValue.getKey(); @@ -927,6 +936,9 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { (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(actionGraphIdCache, actionGraphBuilder, configuredTarget, action); @@ -936,10 +948,14 @@ public final class SequencedSkyframeExecutor extends SkyframeExecutor { private void dumpConfiguredTarget( ActionGraphContainer.Builder actionGraphBuilder, ActionGraphIdCache actionGraphIdCache, - NodeEntry entry) + 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(actionGraphIdCache, actionGraphBuilder, configuredTarget, action); 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 68f74aa7f5..1514290052 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 @@ -593,7 +593,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { } } - public abstract ActionGraphContainer getActionGraphContainer(); + public abstract ActionGraphContainer getActionGraphContainer(List<String> actionGraphTargets); class BuildViewProvider { /** |