aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2016-10-14 11:52:00 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-10-14 20:24:03 +0000
commit37590dcc7fcab7b99dd49e0c32568f9a32dd59a9 (patch)
tree4f7d20fca4813d50ea24ec0a06ab985367ad7eac /src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
parent2b8a3a45b22fd544230434f3e4ffd6f15334adc8 (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.java45
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();
+ }
+ }
}