aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar corysmith <corysmith@google.com>2017-11-22 08:24:42 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-22 08:26:40 -0800
commit69cb005beaad7f104617343de9c25acae28c2345 (patch)
tree5dbf8b2a25ead03b350ec38a8fbf1c39843f25a8 /src/main
parent3948159e71ac65a0b1195c33274eee2bedf89284 (diff)
Prevent blaze from crashing on invalid resource locations.
RELNOTES: None PiperOrigin-RevId: 176659616
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/LocalResourceContainer.java17
1 files changed, 14 insertions, 3 deletions
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 dbc7c964fc..084306048d 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
@@ -286,9 +286,20 @@ public final class LocalResourceContainer {
PathFragment packageFragment =
file.getArtifactOwner().getLabel().getPackageIdentifier().getSourceRoot();
PathFragment packageRelativePath = file.getRootRelativePath().relativeTo(packageFragment);
- resourceRoots.add(
- trimTail(file.getExecPath(), makeRelativeTo(resourceDir, packageRelativePath)));
-
+ try {
+ resourceRoots.add(
+ trimTail(file.getExecPath(), makeRelativeTo(resourceDir, packageRelativePath)));
+ } catch (IllegalArgumentException e) {
+ ruleErrorConsumer.attributeError(
+ resourcesAttr,
+ String.format(
+ "'%s' (generated by '%s') is not under the directory '%s' (derived from %s).",
+ file.getRootRelativePath(),
+ file.getArtifactOwner().getLabel(),
+ packageRelativePath,
+ file.getRootRelativePath()));
+ throw new RuleErrorException();
+ }
return resourceDir;
}