aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-11-19 18:01:05 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-11-20 09:17:18 +0000
commit4b28a9e4b322e2ac4f18203ef21560f5b1acf03e (patch)
tree368b41f14d083c48cfe981540717bb078be85074
parent9efd5cc71b5cd32d8326ee9ff229174f5efab3b8 (diff)
Make Android assets work in external repositories.
-- MOS_MIGRATED_REVID=108258054
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/Label.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index efd87d41e0..b3b31f42a1 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -248,6 +248,10 @@ public final class Label implements Comparable<Label>, Serializable, SkylarkPrin
/**
* Returns the path fragment of the package in which this rule was declared (e.g. {@code
* //file/base:fileutils_test} returns {@code file/base}).
+ *
+ * <p>This is <b>not</b> suitable for inferring a path under which files related to a rule with
+ * this label will be under the exec root, in particular, it won't work for rules in external
+ * repositories.
*/
public PathFragment getPackageFragment() {
return packageIdentifier.getPackageFragment();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java b/src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java
index 5e017b0ccf..f7558f35a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java
@@ -170,7 +170,8 @@ public final class LocalResourceContainer {
PathFragment assetsDir, Iterable<FileProvider> targets) {
for (FileProvider target : targets) {
for (Artifact file : target.getFilesToBuild()) {
- PathFragment packageFragment = file.getArtifactOwner().getLabel().getPackageFragment();
+ PathFragment packageFragment = file.getArtifactOwner().getLabel()
+ .getPackageIdentifier().getPathFragment();
PathFragment packageRelativePath =
file.getRootRelativePath().relativeTo(packageFragment);
if (packageRelativePath.startsWith(assetsDir)) {
@@ -198,7 +199,8 @@ public final class LocalResourceContainer {
Artifact lastFile = null;
for (FileProvider target : targets) {
for (Artifact file : target.getFilesToBuild()) {
- PathFragment packageFragment = file.getArtifactOwner().getLabel().getPackageFragment();
+ PathFragment packageFragment = file.getArtifactOwner().getLabel()
+ .getPackageIdentifier().getPathFragment();
PathFragment packageRelativePath =
file.getRootRelativePath().relativeTo(packageFragment);
PathFragment resourceDir = findResourceDir(file);