aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-02-26 12:54:27 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-02-28 17:04:17 +0000
commitb8101f57681f292a9ec312a9cbbc84ac4ec0668d (patch)
treeb5478c1ace551d6c1ee090e87d83c0d30ab73347 /src/main
parent7af1c3394766af41bd990322b1c52507cd6b78de (diff)
Skylark aspects should always output to bin directory.
-- MOS_MIGRATED_REVID=115659763
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java15
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.