aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/exec/local
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/exec/local')
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/local/BUILD18
-rw-r--r--src/main/java/com/google/devtools/build/lib/exec/local/LocalSpawnRunner.java19
2 files changed, 27 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/exec/local/BUILD b/src/main/java/com/google/devtools/build/lib/exec/local/BUILD
index e9226e127f..a320ea95de 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/local/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/exec/local/BUILD
@@ -8,22 +8,36 @@ filegroup(
java_library(
name = "local",
- srcs = glob(["*.java"]),
+ srcs = [
+ "LocalEnvProvider.java",
+ "LocalSpawnRunner.java",
+ ],
data = [
"//src/main/tools:process-wrapper",
],
deps = [
+ ":options",
"//src/main/java/com/google/devtools/build/lib:build-base",
"//src/main/java/com/google/devtools/build/lib:io",
"//src/main/java/com/google/devtools/build/lib:packages-internal",
"//src/main/java/com/google/devtools/build/lib:process_util",
+ "//src/main/java/com/google/devtools/build/lib:runtime",
"//src/main/java/com/google/devtools/build/lib:util",
"//src/main/java/com/google/devtools/build/lib/actions",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/shell",
"//src/main/java/com/google/devtools/build/lib/vfs",
- "//src/main/java/com/google/devtools/common/options",
"//third_party:guava",
"//third_party:jsr305",
],
)
+
+java_library(
+ name = "options",
+ srcs = [
+ "LocalExecutionOptions.java",
+ ],
+ deps = [
+ "//src/main/java/com/google/devtools/common/options",
+ ],
+)
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 bfc6a8fcbb..3677d2cd4f 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
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.actions.SpawnResult.Status;
import com.google.devtools.build.lib.actions.Spawns;
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;
import com.google.devtools.build.lib.shell.AbnormalTerminationException;
import com.google.devtools.build.lib.shell.Command;
import com.google.devtools.build.lib.shell.CommandException;
@@ -43,7 +44,6 @@ import com.google.devtools.build.lib.vfs.Path;
import java.io.IOException;
import java.io.OutputStream;
import java.time.Duration;
-import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
@@ -78,6 +78,7 @@ public final class LocalSpawnRunner implements SpawnRunner {
private final String productName;
private final LocalEnvProvider localEnvProvider;
+ // TODO(b/62588075): Move this logic to ProcessWrapperUtil?
private static Path getProcessWrapper(Path execRoot, OS localOs) {
return execRoot.getRelative("_bin/process-wrapper" + OsUtils.executableExtension(localOs));
}
@@ -265,13 +266,15 @@ public final class LocalSpawnRunner implements SpawnRunner {
// a stack trace, test log or similar, which is incredibly helpful for debugging. The
// process wrapper also supports output file redirection, so we don't need to stream the
// output through this process.
- List<String> cmdLine = new ArrayList<>();
- cmdLine.add(processWrapper);
- cmdLine.add("--timeout=" + policy.getTimeout().getSeconds());
- cmdLine.add("--kill_delay=" + localExecutionOptions.localSigkillGraceSeconds);
- cmdLine.add("--stdout=" + getPathOrDevNull(outErr.getOutputPath()));
- cmdLine.add("--stderr=" + getPathOrDevNull(outErr.getErrorPath()));
- cmdLine.addAll(spawn.getArguments());
+ List<String> cmdLine =
+ ProcessWrapperUtil.commandLineBuilder()
+ .setProcessWrapperPath(processWrapper)
+ .setCommandArguments(spawn.getArguments())
+ .setStdoutPath(getPathOrDevNull(outErr.getOutputPath()))
+ .setStderrPath(getPathOrDevNull(outErr.getErrorPath()))
+ .setTimeout(policy.getTimeout())
+ .setKillDelay(Duration.ofSeconds(localExecutionOptions.localSigkillGraceSeconds))
+ .build();
cmd =
new Command(
cmdLine.toArray(new String[0]),