aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/runtime')
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java18
2 files changed, 24 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
index 32d31a2979..3870931203 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandEnvironment.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.runtime;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.eventbus.EventBus;
import com.google.devtools.build.lib.actions.PackageRootResolver;
@@ -146,7 +147,7 @@ public final class CommandEnvironment {
// TODO(ulfjack): We don't call beforeCommand() in tests, but rely on workingDirectory being set
// in setupPackageCache(). This leads to NPE if we don't set it here.
- this.workingDirectory = directories.getWorkspace();
+ this.setWorkingDirectory(directories.getWorkspace());
this.workspaceName = null;
workspace.getSkyframeExecutor().setEventBus(eventBus);
@@ -554,8 +555,16 @@ public final class CommandEnvironment {
return commandStartTime;
}
- void setWorkingDirectory(Path workingDirectory) {
+ @VisibleForTesting
+ public void setWorkingDirectoryForTesting(Path workingDirectory) {
+ setWorkingDirectory(workingDirectory);
+ }
+
+ private void setWorkingDirectory(Path workingDirectory) {
this.workingDirectory = workingDirectory;
+ if (getWorkspace() != null) {
+ this.relativeWorkingDirectory = workingDirectory.relativeTo(getWorkspace());
+ }
}
/**
@@ -608,8 +617,7 @@ public final class CommandEnvironment {
workspace = FileSystemUtils.getWorkingDirectory(getRuntime().getFileSystem());
workingDirectory = workspace;
}
- this.relativeWorkingDirectory = workingDirectory.relativeTo(workspace);
- this.workingDirectory = workingDirectory;
+ this.setWorkingDirectory(workingDirectory);
// Fail fast in the case where a Blaze command forgets to install the package path correctly.
skyframeExecutor.setActive(false);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
index 25fd5f2432..7acf1c7304 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
@@ -186,13 +186,19 @@ public class RunCommand implements BlazeCommand {
String productName = env.getRuntime().getProductName();
Artifact executable = targetToRun.getProvider(FilesToRunProvider.class).getExecutable();
+ BuildRequestOptions requestOptions = env.getOptions().getOptions(BuildRequestOptions.class);
+
PathFragment executablePath = executable.getPath().asFragment();
- PathFragment prettyExecutablePath = OutputDirectoryLinksUtils.getPrettyPath(
- executable.getPath(),
- env.getWorkspaceName(),
- env.getWorkspace(),
- env.getOptions().getOptions(BuildRequestOptions.class).getSymlinkPrefix(productName),
- productName);
+ PathFragment prettyExecutablePath =
+ OutputDirectoryLinksUtils.getPrettyPath(
+ executable.getPath(),
+ env.getWorkspaceName(),
+ env.getWorkspace(),
+ requestOptions.printWorkspaceInOutputPathsIfNeeded
+ ? env.getWorkingDirectory()
+ : env.getWorkspace(),
+ requestOptions.getSymlinkPrefix(productName),
+ productName);
RunUnder runUnder = env.getOptions().getOptions(BuildConfiguration.Options.class).runUnder;
// Insert the command prefix specified by the "--run_under=<command-prefix>" option