diff options
author | 2016-04-19 13:55:24 +0000 | |
---|---|---|
committer | 2016-04-20 11:12:35 +0000 | |
commit | 857cda2c45a5cc68c3fa398311c48c571a64915d (patch) | |
tree | 8a2ad9cd0c92752b1b6105c27d9995dcaf3d24a4 /src/main/java/com/google/devtools/build/lib/actions | |
parent | 0b26f446f8312d1c43d162fe706467ef458c4db8 (diff) |
Move the runfiles for external repositories to under the x.runfiles/ directory
This also sets the Bazel workspace name to io_bazel_source.
Fixes #848.
Relevant to #1116, #1124,
RELNOTES[INC]: All repositories are now directly under the x.runfiles directory in the runfiles tree (previously, external repositories were at x.runfiles/main-repo/external/other-repo. This simplifies handling remote repository runfiles considerably, but will break existing references to external repository runfiles.
---
Furthermore, if a Bazel project does not provide a workspace name in the WORKSPACE file, Bazel will now default to using __main__ as the workspace name (instead of "", as previously). The repository's runfiles will appear under x.runfiles/__main__/.
--
MOS_MIGRATED_REVID=120224534
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/actions')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/actions/Artifact.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java index f28683b451..9a132faa08 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java +++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java @@ -498,6 +498,21 @@ public class Artifact } /** + * For targets in external repositories, this returns the path the artifact live at in the + * runfiles tree. For local targets, it returns the rootRelativePath. + */ + public final PathFragment getRunfilesPath() { + PathFragment relativePath = rootRelativePath; + if (relativePath.segmentCount() > 1 + && relativePath.getSegment(0).equals(Label.EXTERNAL_PATH_PREFIX)) { + // Turn external/repo/foo into ../repo/foo. + relativePath = relativePath.relativeTo(Label.EXTERNAL_PATH_PREFIX); + relativePath = new PathFragment("..").getRelative(relativePath); + } + return relativePath; + } + + /** * Returns this.getExecPath().getPathString(). */ @Override |