diff options
author | Googler <noreply@google.com> | 2017-02-06 20:08:48 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2017-02-07 18:22:12 +0000 |
commit | eba6a442159f838311082bc18b6fa32cbabad31e (patch) | |
tree | 2cbee2e428f9bfee884923cd203ef21d246cf618 /src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java | |
parent | 73726a8a46cd5260fd0cc1cbf32c93922ca6ffb8 (diff) |
Adds abstractions for include processing to CppSemantics
--
PiperOrigin-RevId: 146694092
MOS_MIGRATED_REVID=146694092
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java index 657ea761e8..fc7db60296 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionExecutionFunction.java @@ -394,7 +394,8 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver return null; } } - addDiscoveredInputs(state.inputArtifactData, state.discoveredInputs, env); + addDiscoveredInputs( + state.inputArtifactData, state.expandedArtifacts, state.discoveredInputs, env); if (env.valuesMissing()) { return null; } @@ -411,7 +412,8 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver state.discoveredInputsStage2 = action.discoverInputsStage2(env); } if (state.discoveredInputsStage2 != null) { - addDiscoveredInputs(state.inputArtifactData, state.discoveredInputsStage2, env); + addDiscoveredInputs( + state.inputArtifactData, state.expandedArtifacts, state.discoveredInputsStage2, env); if (env.valuesMissing()) { return null; } @@ -422,8 +424,10 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver } actionExecutionContext = - skyframeActionExecutor.getContext(perActionFileCache, - metadataHandler, state.expandedArtifacts); + skyframeActionExecutor.getContext( + perActionFileCache, + metadataHandler, + Collections.unmodifiableMap(state.expandedArtifacts)); if (!state.hasExecutedAction()) { state.value = skyframeActionExecutor.executeAction(action, metadataHandler, actionStartTime, actionExecutionContext); @@ -483,6 +487,7 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver private static void addDiscoveredInputs( Map<Artifact, FileArtifactValue> inputData, + Map<Artifact, Collection<Artifact>> expandedArtifacts, Iterable<Artifact> discoveredInputs, Environment env) throws InterruptedException { @@ -497,8 +502,16 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver env.getValues(newlyDiscoveredInputsToSkyKeys(discoveredInputs, inputData.keySet())); if (!env.valuesMissing()) { for (Entry<SkyKey, SkyValue> entry : nonMandatoryDiscovered.entrySet()) { - inputData.put( - ArtifactSkyKey.artifact(entry.getKey()), (FileArtifactValue) entry.getValue()); + Artifact input = ArtifactSkyKey.artifact(entry.getKey()); + if (entry.getValue() instanceof TreeArtifactValue) { + TreeArtifactValue treeValue = (TreeArtifactValue) entry.getValue(); + expandedArtifacts.put(input, ImmutableSet.<Artifact>copyOf(treeValue.getChildren())); + inputData.putAll(treeValue.getChildValues()); + + inputData.put(input, treeValue.getSelfData()); + } else { + inputData.put(input, (FileArtifactValue) entry.getValue()); + } } } } @@ -643,7 +656,7 @@ public class ActionExecutionFunction implements SkyFunction, CompletionReceiver throw new ActionExecutionException(missingCount + " input file(s) do not exist", action, rootCauses.build(), /*catastrophe=*/false); } - return Pair.of(inputArtifactData, Collections.unmodifiableMap(expandedArtifacts)); + return Pair.of(inputArtifactData, expandedArtifacts); } private static Iterable<Artifact> filterKnownInputs( |