aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2018-01-26 05:46:02 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-26 05:47:36 -0800
commit4ea7fa325a33340c557010ec6fac5eb1532c6503 (patch)
treeff5478e7601048bf731327259b566096c983f552 /src/main/java/com/google/devtools/build/lib
parentc026569c445a5b22903d17ea6691876c47059eba (diff)
Make experimental_inmemory_dotd_files not fail with local execution
If actions are executed locally, silently fall back to reading the on-disk .d file. PiperOrigin-RevId: 183376432
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java5
2 files changed, 7 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index 7f520dcaaa..70446b2809 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -1216,7 +1216,13 @@ public class CppCompileAction extends AbstractAction
// case where we expected an in-memory .d file, but we did not get an appropriate response.
// Perhaps we produced the file locally.
if (dotdFile.artifact() != null || reply == null) {
- return depSet.read(dotdFile.getPath());
+ Path dotdPath;
+ if (dotdFile.artifact() != null) {
+ dotdPath = dotdFile.getPath();
+ } else {
+ dotdPath = execRoot.getRelative(dotdFile.getSafeExecPath());
+ }
+ return depSet.read(dotdPath);
} else {
// This is an in-memory .d file.
return depSet.process(reply.getContents());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
index 4b64e2b7ad..77966e0f88 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategy.java
@@ -26,7 +26,6 @@ import com.google.devtools.build.lib.actions.SimpleSpawn;
import com.google.devtools.build.lib.actions.Spawn;
import com.google.devtools.build.lib.actions.SpawnActionContext;
import com.google.devtools.build.lib.actions.SpawnResult;
-import com.google.devtools.build.lib.actions.UserExecException;
import java.util.List;
/**
@@ -50,10 +49,6 @@ public class SpawnGccStrategy implements CppCompileActionContext {
public CppCompileActionResult execWithReply(
CppCompileAction action, ActionExecutionContext actionExecutionContext)
throws ExecException, InterruptedException {
- if (action.getDotdFile() != null && action.getDotdFile().artifact() == null) {
- throw new UserExecException("cannot execute remotely or locally: "
- + action.getPrimaryInput().getExecPathString());
- }
Iterable<Artifact> inputs = Iterables.concat(action.getInputs(), action.getAdditionalInputs());
Spawn spawn = new SimpleSpawn(
action,