diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildResultPrinter.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildResultPrinter.java index c8d79b0b4dd076..8ef4a38ec983c0 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildResultPrinter.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildResultPrinter.java @@ -138,7 +138,8 @@ public void showBuildResult( + OutputDirectoryLinksUtils.getPrettyPath(temp.getPath(), env.getWorkspaceName(), env.getWorkspace(), - request.getBuildOptions().getSymlinkPrefix(productName))); + request.getBuildOptions().getSymlinkPrefix(productName), + productName)); } } } @@ -156,7 +157,7 @@ private String formatArtifactForShowResults(Artifact artifact, BuildRequest requ String productName = env.getRuntime().getProductName(); return " " + OutputDirectoryLinksUtils.getPrettyPath(artifact.getPath(), env.getWorkspaceName(), env.getWorkspace(), - request.getBuildOptions().getSymlinkPrefix(productName)); + request.getBuildOptions().getSymlinkPrefix(productName), productName); } /** diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java index 971800b60065a3..48bc11c8d98dea 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java @@ -352,16 +352,13 @@ void executeBuild(UUID buildId, AnalysisResult analysisResult, BuildConfiguration targetConfiguration = targetConfigurations.size() == 1 ? targetConfigurations.get(0) : null; if (targetConfigurations.size() == 1) { + String productName = runtime.getProductName(); String dirName = env.getWorkspaceName(); String workspaceName = analysisResult.getWorkspaceName(); OutputDirectoryLinksUtils.createOutputDirectoryLinks( - dirName, - env.getWorkspace(), - env.getDirectories().getExecRoot(workspaceName), - env.getDirectories().getOutputPath(workspaceName), - getReporter(), - targetConfiguration, - request.getBuildOptions().getSymlinkPrefix(runtime.getProductName())); + dirName, env.getWorkspace(), env.getDirectories().getExecRoot(workspaceName), + env.getDirectories().getOutputPath(workspaceName), getReporter(), targetConfiguration, + request.getBuildOptions().getSymlinkPrefix(productName), productName); } ActionCache actionCache = getActionCache(); diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java b/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java index 5ee110e68818cd..ae085ed2bf3ae7 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java @@ -38,12 +38,12 @@ public class OutputDirectoryLinksUtils { private static final String NO_CREATE_SYMLINKS_PREFIX = "/"; - public static String getOutputSymlinkName(String symlinkPrefix) { - return symlinkPrefix + "out"; + public static String getOutputSymlinkName(String productName) { + return productName + "-out"; } - private static String execRootSymlink(String symlinkPrefix, String workspaceName) { - return symlinkPrefix + workspaceName; + private static String execRootSymlink(String productName, String workspaceName) { + return productName + "-" + workspaceName; } /** * Attempts to create convenience symlinks in the workspaceDirectory and in @@ -53,7 +53,8 @@ private static String execRootSymlink(String symlinkPrefix, String workspaceName */ static void createOutputDirectoryLinks(String workspaceName, Path workspace, Path execRoot, Path outputPath, - EventHandler eventHandler, @Nullable BuildConfiguration targetConfig, String symlinkPrefix) { + EventHandler eventHandler, @Nullable BuildConfiguration targetConfig, + String symlinkPrefix, String productName) { if (NO_CREATE_SYMLINKS_PREFIX.equals(symlinkPrefix)) { return; } @@ -62,10 +63,10 @@ static void createOutputDirectoryLinks(String workspaceName, // Make the two non-specific links from the workspace to the output area, // and the configuration-specific links in both the workspace and the execution root dirs. // NB! Keep in sync with removeOutputDirectoryLinks below. - createLink(workspace, getOutputSymlinkName(symlinkPrefix), outputPath, failures); + createLink(workspace, getOutputSymlinkName(productName), outputPath, failures); // Points to execroot - createLink(workspace, execRootSymlink(symlinkPrefix, workspaceName), execRoot, failures); + createLink(workspace, execRootSymlink(productName, workspaceName), execRoot, failures); if (targetConfig != null) { createLink(workspace, symlinkPrefix + "bin", @@ -92,7 +93,7 @@ static void createOutputDirectoryLinks(String workspaceName, * before, the pretty path may be incorrect if the symlinks end up pointing somewhere new. */ public static PathFragment getPrettyPath(Path file, String workspaceName, - Path workspaceDirectory, String symlinkPrefix) { + Path workspaceDirectory, String symlinkPrefix, String productName) { for (String link : LINKS) { PathFragment result = relativize(file, workspaceDirectory, symlinkPrefix + link); if (result != null) { @@ -101,12 +102,12 @@ public static PathFragment getPrettyPath(Path file, String workspaceName, } PathFragment result = relativize(file, workspaceDirectory, - execRootSymlink(symlinkPrefix, workspaceName)); + execRootSymlink(productName, workspaceName)); if (result != null) { return result; } - result = relativize(file, workspaceDirectory, getOutputSymlinkName(symlinkPrefix)); + result = relativize(file, workspaceDirectory, getOutputSymlinkName(productName)); if (result != null) { return result; } @@ -149,8 +150,8 @@ public static void removeOutputDirectoryLinks(String workspaceName, Path workspa } List failures = new ArrayList<>(); - removeLink(workspace, getOutputSymlinkName(symlinkPrefix), failures); - removeLink(workspace, execRootSymlink(symlinkPrefix, workspaceName), failures); + removeLink(workspace, getOutputSymlinkName(productName), failures); + removeLink(workspace, execRootSymlink(productName, workspaceName), failures); removeLink(workspace, symlinkPrefix + "bin", failures); removeLink(workspace, symlinkPrefix + "testlogs", failures); removeLink(workspace, symlinkPrefix + "genfiles", failures); 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 12f03a0086f8dc..4e3c9dc0dbc38e 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 @@ -246,7 +246,8 @@ public ExitCode exec(CommandEnvironment env, OptionsProvider options) { PathFragment prettyExecutablePath = OutputDirectoryLinksUtils.getPrettyPath(executablePath, env.getWorkspaceName(), env.getWorkspace(), - options.getOptions(BuildRequestOptions.class).getSymlinkPrefix(productName)); + options.getOptions(BuildRequestOptions.class).getSymlinkPrefix(productName), + productName); List cmdLine = new ArrayList<>(); if (runOptions.scriptPath == null) { PathFragment processWrapperPath =