aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar ulfjack <ulfjack@google.com>2017-08-02 20:30:07 +0200
committerGravatar Dmitry Lomov <dslomov@google.com>2017-08-03 12:09:54 +0200
commit1e509a3c82b31f120763b121380d15e01090ab0a (patch)
treea612803f65146a487fccae6d11fefb428eff2751
parent202119ad33627a8a64ad686c159e6cbee7edcec1 (diff)
Move core rules to a top-level class.
PiperOrigin-RevId: 164013246
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD14
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java61
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/core/CoreRules.java55
-rw-r--r--src/test/java/com/google/devtools/build/lib/BUILD3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java3
7 files changed, 95 insertions, 46 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index c1aacb5e35..fb1870b6e8 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -692,6 +692,7 @@ java_library(
":buildeventstream",
":collect",
":concurrent",
+ ":core-rules",
":events",
":java-compilation",
":java-rules",
@@ -1051,6 +1052,19 @@ java_library(
)
java_library(
+ name = "core-rules",
+ srcs = glob(
+ ["rules/core/*.java"],
+ ),
+ deps = [
+ ":build-base",
+ "//src/main/java/com/google/devtools/build/lib/analysis/featurecontrol",
+ "//src/main/java/com/google/devtools/build/lib/rules/config",
+ "//third_party:guava",
+ ],
+)
+
+java_library(
name = "android-rules",
srcs = glob(
["rules/android/*.java"],
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index e93a154d44..87de50cd52 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -19,7 +19,6 @@ import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Functions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet;
@@ -27,8 +26,6 @@ import com.google.devtools.build.lib.analysis.PlatformConfigurationLoader;
import com.google.devtools.build.lib.analysis.PlatformOptions;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.constraints.EnvironmentRule;
-import com.google.devtools.build.lib.analysis.featurecontrol.FeaturePolicyLoader;
-import com.google.devtools.build.lib.analysis.featurecontrol.FeaturePolicyOptions;
import com.google.devtools.build.lib.bazel.rules.BazelToolchainType.BazelToolchainTypeRule;
import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryRule;
import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryRule;
@@ -100,6 +97,7 @@ import com.google.devtools.build.lib.rules.config.ConfigFeatureFlag;
import com.google.devtools.build.lib.rules.config.ConfigFeatureFlagConfiguration;
import com.google.devtools.build.lib.rules.config.ConfigRuleClasses;
import com.google.devtools.build.lib.rules.config.ConfigSkylarkCommon;
+import com.google.devtools.build.lib.rules.core.CoreRules;
import com.google.devtools.build.lib.rules.cpp.CcIncLibraryRule;
import com.google.devtools.build.lib.rules.cpp.CcToolchainAlias;
import com.google.devtools.build.lib.rules.cpp.CcToolchainRule;
@@ -232,29 +230,6 @@ public class BazelRuleClassProvider {
public static final ImmutableSet<String> FEATURE_POLICY_FEATURES =
ImmutableSet.of(ConfigFeatureFlag.POLICY_NAME);
- public static final RuleSet CORE_RULES =
- new RuleSet() {
- @Override
- public void init(Builder builder) {
- builder.addConfigurationOptions(FeaturePolicyOptions.class);
- builder.addConfigurationFragment(new FeaturePolicyLoader(FEATURE_POLICY_FEATURES));
- builder.addDynamicTransitionMaps(BaseRuleClasses.DYNAMIC_TRANSITIONS_MAP);
-
- builder.addRuleDefinition(new BaseRuleClasses.RootRule());
- builder.addRuleDefinition(new BaseRuleClasses.BaseRule());
- builder.addRuleDefinition(new BaseRuleClasses.RuleBase());
- builder.addRuleDefinition(new BaseRuleClasses.MakeVariableExpandingRule());
- builder.addRuleDefinition(new BaseRuleClasses.BinaryBaseRule());
- builder.addRuleDefinition(new BaseRuleClasses.TestBaseRule());
- builder.addRuleDefinition(new BaseRuleClasses.ErrorRule());
- }
-
- @Override
- public ImmutableList<RuleSet> requires() {
- return ImmutableList.of();
- }
- };
-
public static final RuleSet PLATFORM_RULES =
new RuleSet() {
@Override
@@ -273,7 +248,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE);
}
};
@@ -298,7 +273,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE);
}
};
@@ -318,7 +293,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE);
}
};
@@ -333,7 +308,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE);
}
};
@@ -349,7 +324,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE);
}
};
@@ -362,7 +337,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE);
}
};
@@ -378,7 +353,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE);
}
};
@@ -410,7 +385,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE);
}
};
@@ -425,7 +400,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES, CPP_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES);
}
};
@@ -469,7 +444,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES, CPP_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES);
}
};
@@ -490,7 +465,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES, JAVA_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE, JAVA_RULES);
}
};
@@ -537,7 +512,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES, CPP_RULES, JAVA_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES, JAVA_RULES);
}
};
@@ -559,7 +534,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES, CPP_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES);
}
};
@@ -627,7 +602,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES, CPP_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES);
}
};
@@ -653,7 +628,7 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES, CPP_RULES, JAVA_RULES, OBJC_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES, JAVA_RULES, OBJC_RULES);
}
};
@@ -677,14 +652,14 @@ public class BazelRuleClassProvider {
@Override
public ImmutableList<RuleSet> requires() {
- return ImmutableList.of(CORE_RULES, CORE_WORKSPACE_RULES);
+ return ImmutableList.of(CoreRules.INSTANCE, CORE_WORKSPACE_RULES);
}
};
private static final ImmutableSet<RuleSet> RULE_SETS =
ImmutableSet.of(
BAZEL_SETUP,
- CORE_RULES,
+ CoreRules.INSTANCE,
CORE_WORKSPACE_RULES,
GENERIC_RULES,
CONFIG_RULES,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/core/CoreRules.java b/src/main/java/com/google/devtools/build/lib/rules/core/CoreRules.java
new file mode 100644
index 0000000000..9494b4edd5
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/core/CoreRules.java
@@ -0,0 +1,55 @@
+// Copyright 2017 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.rules.core;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.analysis.BaseRuleClasses;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet;
+import com.google.devtools.build.lib.analysis.featurecontrol.FeaturePolicyLoader;
+import com.google.devtools.build.lib.analysis.featurecontrol.FeaturePolicyOptions;
+import com.google.devtools.build.lib.rules.config.ConfigFeatureFlag;
+
+/** A set of basic rules - Bazel won't work correctly without these. */
+public final class CoreRules implements RuleSet {
+ public static final CoreRules INSTANCE = new CoreRules();
+
+ public static final ImmutableSet<String> FEATURE_POLICY_FEATURES =
+ ImmutableSet.of(ConfigFeatureFlag.POLICY_NAME);
+
+ private CoreRules() {
+ // Use the static INSTANCE field instead.
+ }
+
+ @Override
+ public void init(Builder builder) {
+ builder.addConfigurationOptions(FeaturePolicyOptions.class);
+ builder.addConfigurationFragment(new FeaturePolicyLoader(FEATURE_POLICY_FEATURES));
+ builder.addDynamicTransitionMaps(BaseRuleClasses.DYNAMIC_TRANSITIONS_MAP);
+
+ builder.addRuleDefinition(new BaseRuleClasses.RootRule());
+ builder.addRuleDefinition(new BaseRuleClasses.BaseRule());
+ builder.addRuleDefinition(new BaseRuleClasses.RuleBase());
+ builder.addRuleDefinition(new BaseRuleClasses.MakeVariableExpandingRule());
+ builder.addRuleDefinition(new BaseRuleClasses.BinaryBaseRule());
+ builder.addRuleDefinition(new BaseRuleClasses.TestBaseRule());
+ builder.addRuleDefinition(new BaseRuleClasses.ErrorRule());
+ }
+
+ @Override
+ public ImmutableList<RuleSet> requires() {
+ return ImmutableList.of();
+ }
+}
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 151555a905..1f364f2a13 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -354,6 +354,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:clock",
"//src/main/java/com/google/devtools/build/lib:collect",
"//src/main/java/com/google/devtools/build/lib:concurrent",
+ "//src/main/java/com/google/devtools/build/lib:core-rules",
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:io",
"//src/main/java/com/google/devtools/build/lib:java-rules",
@@ -937,6 +938,7 @@ java_test(
"//src/main/java/com/google/devtools/build/lib:bazel-main",
"//src/main/java/com/google/devtools/build/lib:bazel-rules",
"//src/main/java/com/google/devtools/build/lib:build-base",
+ "//src/main/java/com/google/devtools/build/lib:core-rules",
"//src/main/java/com/google/devtools/build/lib:inmemoryfs",
"//src/main/java/com/google/devtools/build/lib:io",
"//src/main/java/com/google/devtools/build/lib:packages-internal",
@@ -1010,6 +1012,7 @@ java_test(
"//src/main/java/com/google/devtools/build/lib:bazel-main",
"//src/main/java/com/google/devtools/build/lib:bazel-rules",
"//src/main/java/com/google/devtools/build/lib:build-base",
+ "//src/main/java/com/google/devtools/build/lib:core-rules",
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:java-compilation",
"//src/main/java/com/google/devtools/build/lib:packages-internal",
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 55cc5e2045..f15e092c9a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -13,7 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.analysis.mock;
-import static com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider.FEATURE_POLICY_FEATURES;
+import static com.google.devtools.build.lib.rules.core.CoreRules.FEATURE_POLICY_FEATURES;
import com.google.common.base.Functions;
import com.google.common.collect.ImmutableList;
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
index c005a6a7b7..976f7d29f0 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProviderTest.java
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.packages.RuleClass;
+import com.google.devtools.build.lib.rules.core.CoreRules;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -81,7 +82,7 @@ public class BazelRuleClassProviderTest {
@Test
public void coreConsistency() {
- checkModule(BazelRuleClassProvider.CORE_RULES);
+ checkModule(CoreRules.INSTANCE);
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
index f9f2664b7e..4852123225 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCommonTest.java
@@ -43,6 +43,7 @@ import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.rules.ToolchainType;
+import com.google.devtools.build.lib.rules.core.CoreRules;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.util.OsUtils;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
@@ -982,7 +983,7 @@ public class CcCommonTest extends BuildViewTestCase {
ConfiguredRuleClassProvider.Builder builder = new ConfiguredRuleClassProvider.Builder();
builder.setToolsRepository("@bazel_tools");
BazelRuleClassProvider.BAZEL_SETUP.init(builder);
- BazelRuleClassProvider.CORE_RULES.init(builder);
+ CoreRules.INSTANCE.init(builder);
BazelRuleClassProvider.CORE_WORKSPACE_RULES.init(builder);
BazelRuleClassProvider.GENERIC_RULES.init(builder);
BazelRuleClassProvider.CPP_RULES.init(builder);