diff options
author | 2017-11-22 08:24:42 -0800 | |
---|---|---|
committer | 2017-11-22 08:26:40 -0800 | |
commit | 69cb005beaad7f104617343de9c25acae28c2345 (patch) | |
tree | 5dbf8b2a25ead03b350ec38a8fbf1c39843f25a8 /src/main | |
parent | 3948159e71ac65a0b1195c33274eee2bedf89284 (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.java | 17 |
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; } |