aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Florian Weikert <fwe@google.com>2015-08-31 14:37:27 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-08-31 19:16:07 +0000
commit70265eca3b2a12ef7d2d1949b3e3e6c2b44f26f0 (patch)
treeff1bd992e7c05f9f9484beb02b96041d9e5b0db7 /src/main/java/com
parent053d4a338a66ae18facf0d0afa865f2a21352b6d (diff)
Skylark: All executable rules now have an attribute 'args'.
-- MOS_MIGRATED_REVID=101932897
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
index da14fc6d44..1ca229c11a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
@@ -21,6 +21,7 @@ import static com.google.devtools.build.lib.packages.Type.BOOLEAN;
import static com.google.devtools.build.lib.packages.Type.INTEGER;
import static com.google.devtools.build.lib.packages.Type.LABEL;
import static com.google.devtools.build.lib.packages.Type.LABEL_LIST;
+import static com.google.devtools.build.lib.packages.Type.LICENSE;
import static com.google.devtools.build.lib.packages.Type.STRING;
import static com.google.devtools.build.lib.packages.Type.STRING_LIST;
import static com.google.devtools.build.lib.syntax.SkylarkType.castList;
@@ -119,13 +120,22 @@ public class SkylarkRuleClassFunctions {
});
// TODO(bazel-team): Remove the code duplication (BaseRuleClasses and this class).
- /** Parent rule class for non-test Skylark rules. */
+ /** Parent rule class for non-executable non-test Skylark rules. */
public static final RuleClass baseRule =
BaseRuleClasses.commonCoreAndSkylarkAttributes(
new RuleClass.Builder("$base_rule", RuleClassType.ABSTRACT, true))
.add(attr("expect_failure", STRING))
.build();
+ /** Parent rule class for executable non-test Skylark rules. */
+ public static final RuleClass binaryBaseRule =
+ new RuleClass.Builder("$binary_base_rule", RuleClassType.ABSTRACT, true, baseRule)
+ .add(
+ attr("args", STRING_LIST)
+ .nonconfigurable("policy decision: should be consistent across configurations"))
+ .add(attr("output_licenses", LICENSE))
+ .build();
+
/** Parent rule class for test Skylark rules. */
public static final RuleClass testBaseRule =
new RuleClass.Builder("$test_base_rule", RuleClassType.ABSTRACT, true, baseRule)
@@ -235,11 +245,10 @@ public class SkylarkRuleClassFunctions {
funcallEnv.checkLoadingPhase("rule", ast.getLocation());
RuleClassType type = test ? RuleClassType.TEST : RuleClassType.NORMAL;
+ RuleClass parent = test ? testBaseRule : (executable ? binaryBaseRule : baseRule);
// We'll set the name later, pass the empty string for now.
- RuleClass.Builder builder = test
- ? new RuleClass.Builder("", type, true, testBaseRule)
- : new RuleClass.Builder("", type, true, baseRule);
+ RuleClass.Builder builder = new RuleClass.Builder("", type, true, parent);
if (attrs != Environment.NONE) {
for (Map.Entry<String, Attribute.Builder> attr : castMap(