aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/worker
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-02-17 09:50:03 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-17 09:55:44 +0000
commit8efc3ef049381c18addbdeca0cdbfe7b2b870301 (patch)
treecb12e8beb9d4aeac27117bd0663dfb8d9d5ec26e /src/main/java/com/google/devtools/build/lib/worker
parent2fc8f97bf66a3b12dd751d265640b6b5494b2a7b (diff)
Use absolute paths in ProcessBuilder invocations.
Needed for #276. -- MOS_MIGRATED_REVID=114838538
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/worker')
-rw-r--r--src/main/java/com/google/devtools/build/lib/worker/Worker.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/worker/Worker.java b/src/main/java/com/google/devtools/build/lib/worker/Worker.java
index 8ad0a75c7f..cb8d4923cc 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/Worker.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/Worker.java
@@ -19,6 +19,7 @@ import com.google.devtools.build.lib.events.Reporter;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.Path;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -58,8 +59,15 @@ final class Worker {
int workerId = pidCounter.getAndIncrement();
Path logFile = logDir.getRelative("worker-" + workerId + "-" + key.getMnemonic() + ".log");
+ String[] command = key.getArgs().toArray(new String[0]);
+
+ // Follows the logic of {@link com.google.devtools.build.lib.shell.Command}.
+ File executable = new File(command[0]);
+ if (!executable.isAbsolute() && executable.getParent() != null) {
+ command[0] = new File(key.getWorkDir().getPathFile(), command[0]).getAbsolutePath();
+ }
ProcessBuilder processBuilder =
- new ProcessBuilder(key.getArgs().toArray(new String[0]))
+ new ProcessBuilder(command)
.directory(key.getWorkDir().getPathFile())
.redirectError(Redirect.appendTo(logFile.getPathFile()));
processBuilder.environment().putAll(key.getEnv());