diff options
author | 2016-02-26 12:54:27 +0000 | |
---|---|---|
committer | 2016-02-28 17:04:17 +0000 | |
commit | b8101f57681f292a9ec312a9cbbc84ac4ec0668d (patch) | |
tree | b5478c1ace551d6c1ee090e87d83c0d30ab73347 /src/main/java | |
parent | 7af1c3394766af41bd990322b1c52507cd6b78de (diff) |
Skylark aspects should always output to bin directory.
--
MOS_MIGRATED_REVID=115659763
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java index e6b3a513fb..523c9c758d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java @@ -557,13 +557,23 @@ public final class SkylarkRuleContext { } } + private boolean isForAspect() { + return ruleAttributesCollection != null; + } + @SkylarkCallable( doc = "Creates a file object with the given filename, in the current package. " + DOC_NEW_FILE_TAIL ) public Artifact newFile(String filename) { - return newFile(ruleContext.getBinOrGenfilesDirectory(), filename); + return newFile(newFileRoot(), filename); + } + + private Root newFileRoot() { + return isForAspect() + ? getConfiguration().getBinDirectory() + : ruleContext.getBinOrGenfilesDirectory(); } // Kept for compatibility with old code. @@ -578,8 +588,7 @@ public final class SkylarkRuleContext { public Artifact newFile(Artifact baseArtifact, String newBaseName) { PathFragment original = baseArtifact.getRootRelativePath(); PathFragment fragment = original.replaceName(newBaseName); - Root root = ruleContext.getBinOrGenfilesDirectory(); - return ruleContext.getDerivedArtifact(fragment, root); + return ruleContext.getDerivedArtifact(fragment, newFileRoot()); } // Kept for compatibility with old code. |