aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/exec
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-04-30 09:41:53 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-30 09:43:19 -0700
commitd7fde0ea4580e58beb6801929daf0c183c3affba (patch)
tree301e44d12bc19bb18a1bc8c5da4d087a8deedc37 /src/main/java/com/google/devtools/build/lib/exec
parent25d5efc1b1e51a618c6fc81f6e987cf416322fb8 (diff)
Support ParamFileActionInput in LocalSpawnRunner.
RELNOTES: None PiperOrigin-RevId: 194798051
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/exec')
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
index e22da3ef85..cd4075f6bb 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java
@@ -22,12 +22,15 @@ import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.io.ByteStreams;
import com.google.devtools.build.lib.actions.ActionExecutionMetadata;
+import com.google.devtools.build.lib.actions.ActionInput;
+import com.google.devtools.build.lib.actions.CommandLines.ParamFileActionInput;
import com.google.devtools.build.lib.actions.ResourceManager;
import com.google.devtools.build.lib.actions.ResourceManager.ResourceHandle;
import com.google.devtools.build.lib.actions.Spawn;
import com.google.devtools.build.lib.actions.SpawnResult;
import com.google.devtools.build.lib.actions.SpawnResult.Status;
import com.google.devtools.build.lib.actions.Spawns;
+import com.google.devtools.build.lib.actions.cache.VirtualActionInput;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.exec.SpawnRunner;
import com.google.devtools.build.lib.runtime.ProcessWrapperUtil;
@@ -241,6 +244,20 @@ public class LocalSpawnRunner implements SpawnRunner {
context.prefetchInputs();
}
+ for (ActionInput input : spawn.getInputFiles()) {
+ if (input instanceof ParamFileActionInput) {
+ VirtualActionInput virtualActionInput = (VirtualActionInput) input;
+ Path outputPath = execRoot.getRelative(virtualActionInput.getExecPath());
+ if (outputPath.exists()) {
+ outputPath.delete();
+ }
+ outputPath.getParentDirectory().createDirectoryAndParents();
+ try (OutputStream outputStream = outputPath.getOutputStream()) {
+ virtualActionInput.writeTo(outputStream);
+ }
+ }
+ }
+
stepLog(INFO, "running locally");
setState(State.LOCAL_ACTION_RUNNING);