diff options
author | 2015-08-31 14:37:27 +0000 | |
---|---|---|
committer | 2015-08-31 19:16:07 +0000 | |
commit | 70265eca3b2a12ef7d2d1949b3e3e6c2b44f26f0 (patch) | |
tree | ff1bd992e7c05f9f9484beb02b96041d9e5b0db7 /src/main/java/com | |
parent | 053d4a338a66ae18facf0d0afa865f2a21352b6d (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.java | 17 |
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( |