diff options
author | 2016-04-22 12:50:12 +0000 | |
---|---|---|
committer | 2016-04-22 13:20:30 +0000 | |
commit | 33481d7be9fecd54c52a6e535f90718cde198020 (patch) | |
tree | 642c5c777b4af76ef7536e9796e686f9cb1030f2 /src/main/java/com | |
parent | 899416d11209288f7eafe57729ec8f07b23537e1 (diff) |
Skylark aspects should always output to bin directory.
--
MOS_MIGRATED_REVID=120539216
Diffstat (limited to 'src/main/java/com')
-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 bb12bb45ba..e83f409bc5 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 @@ -567,13 +567,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. @@ -588,8 +598,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. |