From 82d43279f93d95e4c41b4bc598a3cc05ddd1ae1a Mon Sep 17 00:00:00 2001 From: Kristina Chodorow Date: Mon, 19 Sep 2016 18:08:59 +0000 Subject: Change execution root for external repositories to be ../repo Some of the important aspect of this change: * Remote repos in the execution root are under output_base/execroot/repo_name, so the prefix is ../repo_name (to escape the local workspace name). * Package roots for external repos were previously "output_base/", they are now output_base/external/repo_name (which means source artifacts always have a relative path from their repository). * Outputs are under bazel-bin/external/repo_name/ (or similarly under genfiles). Note that this is a bit of a change from how this was implemented in the previous cl. Fixes #1262. RELNOTES[INC]: Previously, an external repository would be symlinked into the execution root at execroot/local_repo/external/remote_repo. This changes it to be at execroot/remote_repo. This may break genrules/Skylark actions that hardcode execution root paths. If this causes breakages for you, ensure that genrules are using $(location :target) to access files and Skylark rules are using http://bazel.io/docs/skylark/lib/File.html's path, dirname, etc. functions. Roll forward of bdfd58a. -- MOS_MIGRATED_REVID=133606309 --- .../com/google/devtools/build/lib/buildtool/ExecutionTool.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java') 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 5ee730e022..2efdc21693 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 @@ -508,8 +508,14 @@ public class ExecutionTool { // Plant the symlink forest. try { - new SymlinkForest( - packageRoots, getExecRoot(), runtime.getProductName(), workspaceName) + SymlinkForest.builder() + .setLegacyExternalRunfiles( + request.getOptions(BuildConfiguration.Options.class).legacyExternalRunfiles) + .setPackageRoots(packageRoots) + .setWorkspace(getExecRoot()) + .setProductName(runtime.getProductName()) + .setWorkspaceName(workspaceName) + .build() .plantSymlinkForest(); } catch (IOException e) { throw new ExecutorInitException("Source forest creation failed", e); -- cgit v1.2.3