diff options
author | Ulf Adams <ulfjack@google.com> | 2016-10-14 11:52:00 +0000 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2016-10-14 20:24:03 +0000 |
commit | 37590dcc7fcab7b99dd49e0c32568f9a32dd59a9 (patch) | |
tree | 4f7d20fca4813d50ea24ec0a06ab985367ad7eac /src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java | |
parent | 2b8a3a45b22fd544230434f3e4ffd6f15334adc8 (diff) |
Merge BazelBaseRuleClasses into BaseRuleClasses.
There doesn't seem to be any reason to keep them separate.
--
MOS_MIGRATED_REVID=136145734
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java index eb49821885..0d29c18bd2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java @@ -29,6 +29,7 @@ import static com.google.devtools.build.lib.syntax.Type.STRING_LIST; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.RunUnder; import com.google.devtools.build.lib.analysis.constraints.EnvironmentRule; @@ -44,7 +45,6 @@ import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.packages.TestSize; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileTypeSet; - import java.util.List; /** @@ -257,4 +257,47 @@ public class BaseRuleClasses { .build(); } } + + public static final ImmutableSet<String> ALLOWED_RULE_CLASSES = + ImmutableSet.of("filegroup", "genrule", "Fileset"); + + /** A base rule for all binary rules. */ + public static final class BinaryBaseRule implements RuleDefinition { + @Override + public RuleClass build(Builder builder, RuleDefinitionEnvironment env) { + return builder + .add(attr("args", STRING_LIST)) + .add(attr("output_licenses", LICENSE)) + .add( + attr("$is_executable", BOOLEAN) + .value(true) + .nonconfigurable("Called from RunCommand.isExecutable, which takes a Target")) + .build(); + } + + @Override + public Metadata getMetadata() { + return RuleDefinition.Metadata.builder() + .name("$binary_base_rule") + .type(RuleClassType.ABSTRACT) + .build(); + } + } + + /** Rule class for rules in error. */ + public static final class ErrorRule implements RuleDefinition { + @Override + public RuleClass build(Builder builder, RuleDefinitionEnvironment env) { + return builder.publicByDefault().build(); + } + + @Override + public Metadata getMetadata() { + return RuleDefinition.Metadata.builder() + .name("$error_rule") + .type(RuleClassType.ABSTRACT) + .ancestors(BaseRuleClasses.BaseRule.class) + .build(); + } + } } |