diff options
author | 2018-02-05 09:39:32 -0800 | |
---|---|---|
committer | 2018-02-05 09:41:16 -0800 | |
commit | 6d032941384ec7b7baf040e47680712e26fa3857 (patch) | |
tree | 34094a79b39cc6a0ed54c7d49d1fbf247abcdd33 /src | |
parent | 73fcc7a72d70245280f63d171c654babf1cc579a (diff) |
Simplify RuleClassProviders by making most RuleSets have their own class.
PiperOrigin-RevId: 184540561
Diffstat (limited to 'src')
10 files changed, 446 insertions, 303 deletions
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 20ce7e1d10..1671176a71 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 @@ -21,12 +21,8 @@ import com.google.common.collect.ImmutableSet; 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; -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.bazel.rules.BazelToolchainType.BazelToolchainTypeRule; -import com.google.devtools.build.lib.bazel.rules.CcToolchainType.CcToolchainTypeRule; import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryRule; import com.google.devtools.build.lib.bazel.rules.android.AndroidSdkRepositoryRule; import com.google.devtools.build.lib.bazel.rules.android.BazelAarImportRule; @@ -34,24 +30,9 @@ import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidBinaryRule; import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidLibraryRule; import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidLocalTestRule; import com.google.devtools.build.lib.bazel.rules.android.BazelAndroidSemantics; -import com.google.devtools.build.lib.bazel.rules.common.BazelFilegroupRule; -import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcBinaryRule; -import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcImportRule; -import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcIncLibraryRule; -import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcLibraryRule; -import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcTestRule; -import com.google.devtools.build.lib.bazel.rules.cpp.BazelCppRuleClasses; import com.google.devtools.build.lib.bazel.rules.cpp.BazelCppSemantics; import com.google.devtools.build.lib.bazel.rules.cpp.proto.BazelCcProtoAspect; import com.google.devtools.build.lib.bazel.rules.genrule.BazelGenRuleRule; -import com.google.devtools.build.lib.bazel.rules.java.BazelJavaBinaryRule; -import com.google.devtools.build.lib.bazel.rules.java.BazelJavaBuildInfoFactory; -import com.google.devtools.build.lib.bazel.rules.java.BazelJavaImportRule; -import com.google.devtools.build.lib.bazel.rules.java.BazelJavaLibraryRule; -import com.google.devtools.build.lib.bazel.rules.java.BazelJavaPluginRule; -import com.google.devtools.build.lib.bazel.rules.java.BazelJavaRuleClasses; -import com.google.devtools.build.lib.bazel.rules.java.BazelJavaSemantics; -import com.google.devtools.build.lib.bazel.rules.java.BazelJavaTestRule; import com.google.devtools.build.lib.bazel.rules.java.proto.BazelJavaLiteProtoAspect; import com.google.devtools.build.lib.bazel.rules.java.proto.BazelJavaLiteProtoLibraryRule; import com.google.devtools.build.lib.bazel.rules.java.proto.BazelJavaProtoAspect; @@ -76,7 +57,6 @@ import com.google.devtools.build.lib.bazel.rules.workspace.NewGitRepositoryRule; import com.google.devtools.build.lib.bazel.rules.workspace.NewHttpArchiveRule; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault; -import com.google.devtools.build.lib.rules.Alias.AliasRule; import com.google.devtools.build.lib.rules.android.AarImportBaseRule; import com.google.devtools.build.lib.rules.android.AndroidConfiguration; import com.google.devtools.build.lib.rules.android.AndroidDeviceRule; @@ -93,76 +73,17 @@ import com.google.devtools.build.lib.rules.android.AndroidSkylarkCommon; import com.google.devtools.build.lib.rules.android.ApkInfo; import com.google.devtools.build.lib.rules.android.DeviceBrokerInfo; import com.google.devtools.build.lib.rules.android.DexArchiveAspect; -import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions; -import com.google.devtools.build.lib.rules.apple.AppleConfiguration; -import com.google.devtools.build.lib.rules.apple.AppleToolchain; -import com.google.devtools.build.lib.rules.apple.XcodeConfigAlias.XcodeConfigAliasRule; -import com.google.devtools.build.lib.rules.apple.XcodeConfigRule; -import com.google.devtools.build.lib.rules.apple.XcodeVersionRule; -import com.google.devtools.build.lib.rules.apple.cpp.AppleCcToolchainRule; -import com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions; -import com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration; import com.google.devtools.build.lib.rules.config.ConfigRules; import com.google.devtools.build.lib.rules.core.CoreRules; -import com.google.devtools.build.lib.rules.cpp.CcImportRule; -import com.google.devtools.build.lib.rules.cpp.CcIncLibraryRule; -import com.google.devtools.build.lib.rules.cpp.CcModule; -import com.google.devtools.build.lib.rules.cpp.CcToolchainAlias; -import com.google.devtools.build.lib.rules.cpp.CcToolchainRule; -import com.google.devtools.build.lib.rules.cpp.CcToolchainSuiteRule; -import com.google.devtools.build.lib.rules.cpp.CppBuildInfo; -import com.google.devtools.build.lib.rules.cpp.CppConfigurationLoader; -import com.google.devtools.build.lib.rules.cpp.CppOptions; -import com.google.devtools.build.lib.rules.cpp.CpuTransformer; import com.google.devtools.build.lib.rules.cpp.proto.CcProtoAspect; import com.google.devtools.build.lib.rules.cpp.proto.CcProtoLibraryRule; import com.google.devtools.build.lib.rules.cpp.transitions.LipoDataTransitionRuleSet; -import com.google.devtools.build.lib.rules.extra.ActionListenerRule; -import com.google.devtools.build.lib.rules.extra.ExtraActionRule; -import com.google.devtools.build.lib.rules.genquery.GenQueryRule; import com.google.devtools.build.lib.rules.genrule.GenRuleBaseRule; -import com.google.devtools.build.lib.rules.java.JavaConfigurationLoader; -import com.google.devtools.build.lib.rules.java.JavaImportBaseRule; -import com.google.devtools.build.lib.rules.java.JavaInfo; -import com.google.devtools.build.lib.rules.java.JavaOptions; -import com.google.devtools.build.lib.rules.java.JavaPackageConfigurationRule; -import com.google.devtools.build.lib.rules.java.JavaRuleClasses.IjarBaseRule; -import com.google.devtools.build.lib.rules.java.JavaRuntimeAlias; -import com.google.devtools.build.lib.rules.java.JavaRuntimeRule; -import com.google.devtools.build.lib.rules.java.JavaRuntimeSuiteRule; import com.google.devtools.build.lib.rules.java.JavaSemantics; -import com.google.devtools.build.lib.rules.java.JavaSkylarkCommon; -import com.google.devtools.build.lib.rules.java.JavaToolchainAlias; -import com.google.devtools.build.lib.rules.java.JavaToolchainRule; -import com.google.devtools.build.lib.rules.java.ProguardLibraryRule; -import com.google.devtools.build.lib.rules.java.proto.JavaProtoSkylarkCommon; -import com.google.devtools.build.lib.rules.objc.AppleBinaryRule; -import com.google.devtools.build.lib.rules.objc.AppleSkylarkCommon; -import com.google.devtools.build.lib.rules.objc.AppleStaticLibraryRule; -import com.google.devtools.build.lib.rules.objc.AppleStubBinaryRule; -import com.google.devtools.build.lib.rules.objc.IosDeviceRule; import com.google.devtools.build.lib.rules.objc.J2ObjcAspect; -import com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions; -import com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration; import com.google.devtools.build.lib.rules.objc.J2ObjcLibraryBaseRule; import com.google.devtools.build.lib.rules.objc.J2ObjcLibraryRule; -import com.google.devtools.build.lib.rules.objc.ObjcBuildInfoFactory; -import com.google.devtools.build.lib.rules.objc.ObjcBundleLibraryRule; -import com.google.devtools.build.lib.rules.objc.ObjcBundleRule; -import com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions; -import com.google.devtools.build.lib.rules.objc.ObjcConfigurationLoader; -import com.google.devtools.build.lib.rules.objc.ObjcFrameworkRule; -import com.google.devtools.build.lib.rules.objc.ObjcImportRule; -import com.google.devtools.build.lib.rules.objc.ObjcLibraryRule; -import com.google.devtools.build.lib.rules.objc.ObjcProtoAspect; -import com.google.devtools.build.lib.rules.objc.ObjcProtoLibraryRule; -import com.google.devtools.build.lib.rules.objc.ObjcRuleClasses; -import com.google.devtools.build.lib.rules.platform.ConstraintSettingRule; -import com.google.devtools.build.lib.rules.platform.ConstraintValueRule; -import com.google.devtools.build.lib.rules.platform.PlatformBaseRule; -import com.google.devtools.build.lib.rules.platform.PlatformCommon; -import com.google.devtools.build.lib.rules.platform.PlatformRule; -import com.google.devtools.build.lib.rules.platform.ToolchainRule; +import com.google.devtools.build.lib.rules.platform.PlatformRules; import com.google.devtools.build.lib.rules.proto.BazelProtoLibraryRule; import com.google.devtools.build.lib.rules.proto.ProtoConfiguration; import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainRule; @@ -170,7 +91,6 @@ import com.google.devtools.build.lib.rules.python.PythonConfigurationLoader; import com.google.devtools.build.lib.rules.python.PythonOptions; import com.google.devtools.build.lib.rules.repository.CoreWorkspaceRules; import com.google.devtools.build.lib.rules.repository.NewLocalRepositoryRule; -import com.google.devtools.build.lib.rules.test.TestSuiteRule; import com.google.devtools.build.lib.rules.test.TestingSupportRules; import com.google.devtools.build.lib.util.ResourceFileLoader; import java.io.IOException; @@ -234,67 +154,6 @@ public class BazelRuleClassProvider { } }; - public static final RuleSet PLATFORM_RULES = - new RuleSet() { - @Override - public void init(Builder builder) { - builder.addConfigurationOptions(PlatformOptions.class); - builder.addConfigurationFragment(new PlatformConfigurationLoader()); - - builder.addRuleDefinition(new PlatformBaseRule()); - builder.addRuleDefinition(new ConstraintSettingRule()); - builder.addRuleDefinition(new ConstraintValueRule()); - builder.addRuleDefinition(new PlatformRule()); - - builder.addRuleDefinition(new ToolchainRule()); - - builder.addSkylarkAccessibleTopLevels("platform_common", new PlatformCommon()); - } - - @Override - public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE); - } - }; - - public static final RuleSet GENERIC_RULES = - new RuleSet() { - @Override - public void init(Builder builder) { - builder.addRuleDefinition(new EnvironmentRule()); - - builder.addRuleDefinition(new AliasRule()); - builder.addRuleDefinition(new BazelFilegroupRule()); - builder.addRuleDefinition(new TestSuiteRule()); - builder.addRuleDefinition(new GenQueryRule()); - - try { - builder.addWorkspaceFilePrefix( - ResourceFileLoader.loadResource(BazelRuleClassProvider.class, "tools.WORKSPACE") - // Hackily select the java_toolchain based on the host JDK version. JDK 8 and - // 9 host_javabases require different toolchains, e.g. to use --patch-module - // instead of -Xbootclasspath/p:. - .replace( - "%java_toolchain%", - isJdk8OrEarlier() - ? "@bazel_tools//tools/jdk:toolchain_jdk8" - : "@bazel_tools//tools/jdk:toolchain_jdk9")); - - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - @Override - public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE); - } - }; - - private static boolean isJdk8OrEarlier() { - return Double.parseDouble(System.getProperty("java.class.version")) <= 52.0; - } - public static final RuleSet PROTO_RULES = new RuleSet() { @Override @@ -327,41 +186,6 @@ public class BazelRuleClassProvider { } }; - public static final RuleSet CPP_RULES = - new RuleSet() { - @Override - public void init(Builder builder) { - builder.addSkylarkAccessibleTopLevels("cc_common", CcModule.INSTANCE); - - builder.addConfig(CppOptions.class, new CppConfigurationLoader(CpuTransformer.IDENTITY)); - builder.addBuildInfoFactory(new CppBuildInfo()); - - builder.addRuleDefinition(new CcToolchainRule()); - builder.addRuleDefinition(new CcToolchainSuiteRule()); - builder.addRuleDefinition(new CcToolchainAlias.CcToolchainAliasRule()); - builder.addRuleDefinition(new CcIncLibraryRule()); - builder.addRuleDefinition(new CcImportRule()); - builder.addRuleDefinition(new CcToolchainTypeRule()); - builder.addRuleDefinition(new BazelCppRuleClasses.CcLinkingRule()); - builder.addRuleDefinition(new BazelCppRuleClasses.CcDeclRule()); - builder.addRuleDefinition(new BazelCppRuleClasses.CcBaseRule()); - builder.addRuleDefinition( - new BazelCppRuleClasses.CcRule(TOOLS_REPOSITORY + "//tools/def_parser:def_parser")); - builder.addRuleDefinition(new BazelCppRuleClasses.CcBinaryBaseRule()); - builder.addRuleDefinition(new BazelCcBinaryRule()); - builder.addRuleDefinition(new BazelCcTestRule()); - builder.addRuleDefinition(new BazelCppRuleClasses.CcLibraryBaseRule()); - builder.addRuleDefinition(new BazelCcLibraryRule()); - builder.addRuleDefinition(new BazelCcIncLibraryRule()); - builder.addRuleDefinition(new BazelCcImportRule()); - } - - @Override - public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE, PLATFORM_RULES); - } - }; - public static final RuleSet CPP_PROTO_RULES = new RuleSet() { @Override @@ -373,56 +197,7 @@ public class BazelRuleClassProvider { @Override public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES); - } - }; - - public static final RuleSet JAVA_RULES = - new RuleSet() { - @Override - public void init(Builder builder) { - builder.addConfigurationOptions(JavaOptions.class); - builder.addConfigurationFragment(new JavaConfigurationLoader()); - - builder.addBuildInfoFactory(new BazelJavaBuildInfoFactory()); - - builder.addRuleDefinition(new BazelJavaRuleClasses.BaseJavaBinaryRule()); - builder.addRuleDefinition(new IjarBaseRule()); - builder.addRuleDefinition(new BazelJavaRuleClasses.JavaBaseRule()); - builder.addRuleDefinition(new ProguardLibraryRule()); - builder.addRuleDefinition(new JavaImportBaseRule()); - builder.addRuleDefinition(new BazelJavaRuleClasses.JavaRule()); - builder.addRuleDefinition(new BazelJavaBinaryRule()); - builder.addRuleDefinition(new BazelJavaLibraryRule()); - builder.addRuleDefinition(new BazelJavaImportRule()); - builder.addRuleDefinition(new BazelJavaTestRule()); - builder.addRuleDefinition(new BazelJavaPluginRule()); - builder.addRuleDefinition(new JavaToolchainRule()); - builder.addRuleDefinition(new JavaPackageConfigurationRule()); - builder.addRuleDefinition(new JavaRuntimeRule()); - builder.addRuleDefinition(new JavaRuntimeSuiteRule()); - builder.addRuleDefinition(new JavaRuntimeAlias.JavaRuntimeAliasRule()); - builder.addRuleDefinition(new JavaToolchainAlias.JavaToolchainAliasRule()); - - builder.addRuleDefinition(new ExtraActionRule()); - builder.addRuleDefinition(new ActionListenerRule()); - - builder.addSkylarkAccessibleTopLevels("java_common", - new JavaSkylarkCommon(BazelJavaSemantics.INSTANCE)); - builder.addSkylarkAccessibleTopLevels("JavaInfo", JavaInfo.PROVIDER); - builder.addSkylarkAccessibleTopLevels("java_proto_common", JavaProtoSkylarkCommon.class); - - try { - builder.addWorkspaceFilePrefix( - ResourceFileLoader.loadResource(BazelJavaRuleClasses.class, "jdk.WORKSPACE")); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - @Override - public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES); + return ImmutableList.of(CoreRules.INSTANCE, CcRules.INSTANCE); } }; @@ -442,7 +217,7 @@ public class BazelRuleClassProvider { @Override public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE, JAVA_RULES); + return ImmutableList.of(CoreRules.INSTANCE, JavaRules.INSTANCE); } }; @@ -495,7 +270,7 @@ public class BazelRuleClassProvider { @Override public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES, JAVA_RULES); + return ImmutableList.of(CoreRules.INSTANCE, CcRules.INSTANCE, JavaRules.INSTANCE); } }; @@ -517,67 +292,7 @@ public class BazelRuleClassProvider { @Override public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES); - } - }; - - public static final RuleSet OBJC_RULES = - new RuleSet() { - @Override - public void init(Builder builder) { - String toolsRepository = checkNotNull(builder.getToolsRepository()); - - // objc_proto_library should go into a separate RuleSet! - // TODO(ulfjack): Depending on objcProtoAspect from here is a layering violation. - ObjcProtoAspect objcProtoAspect = new ObjcProtoAspect(); - - builder.addBuildInfoFactory(new ObjcBuildInfoFactory()); - builder.addSkylarkAccessibleTopLevels( - "apple_common", new AppleSkylarkCommon(objcProtoAspect)); - - builder.addConfig(ObjcCommandLineOptions.class, new ObjcConfigurationLoader()); - builder.addConfig(AppleCommandLineOptions.class, new AppleConfiguration.Loader()); - builder.addConfig(SwiftCommandLineOptions.class, new SwiftConfiguration.Loader()); - // j2objc shouldn't be here! - builder.addConfig(J2ObjcCommandLineOptions.class, new J2ObjcConfiguration.Loader()); - - builder.addNativeAspectClass(objcProtoAspect); - builder.addRuleDefinition(new AppleBinaryRule(objcProtoAspect)); - builder.addRuleDefinition(new AppleStaticLibraryRule(objcProtoAspect)); - builder.addRuleDefinition(new AppleStubBinaryRule()); - builder.addRuleDefinition(new ObjcProtoLibraryRule(objcProtoAspect)); - - builder.addRuleDefinition(new AppleCcToolchainRule()); - builder.addRuleDefinition(new AppleToolchain.RequiresXcodeConfigRule(toolsRepository)); - builder.addRuleDefinition(new IosDeviceRule()); - builder.addRuleDefinition(new ObjcBundleRule()); - builder.addRuleDefinition(new ObjcBundleLibraryRule()); - builder.addRuleDefinition(new ObjcFrameworkRule()); - builder.addRuleDefinition(new ObjcImportRule()); - builder.addRuleDefinition(new ObjcLibraryRule()); - builder.addRuleDefinition(new ObjcRuleClasses.CoptsRule()); - builder.addRuleDefinition(new ObjcRuleClasses.BundlingRule()); - builder.addRuleDefinition(new ObjcRuleClasses.DylibDependingRule(objcProtoAspect)); - builder.addRuleDefinition(new ObjcRuleClasses.CompilingRule()); - builder.addRuleDefinition(new ObjcRuleClasses.LinkingRule(objcProtoAspect)); - builder.addRuleDefinition(new ObjcRuleClasses.PlatformRule()); - builder.addRuleDefinition(new ObjcRuleClasses.MultiArchPlatformRule(objcProtoAspect)); - builder.addRuleDefinition(new ObjcRuleClasses.ResourcesRule()); - builder.addRuleDefinition(new ObjcRuleClasses.AlwaysLinkRule()); - builder.addRuleDefinition(new ObjcRuleClasses.SdkFrameworksDependerRule()); - builder.addRuleDefinition(new ObjcRuleClasses.CompileDependencyRule()); - builder.addRuleDefinition(new ObjcRuleClasses.ResourceToolsRule()); - builder.addRuleDefinition(new ObjcRuleClasses.XcrunRule()); - builder.addRuleDefinition(new ObjcRuleClasses.LibtoolRule()); - builder.addRuleDefinition(new ObjcRuleClasses.CrosstoolRule()); - builder.addRuleDefinition(new XcodeConfigRule()); - builder.addRuleDefinition(new XcodeConfigAliasRule()); - builder.addRuleDefinition(new XcodeVersionRule()); - } - - @Override - public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES); + return ImmutableList.of(CoreRules.INSTANCE, CcRules.INSTANCE); } }; @@ -595,7 +310,8 @@ public class BazelRuleClassProvider { @Override public ImmutableList<RuleSet> requires() { - return ImmutableList.of(CoreRules.INSTANCE, CPP_RULES, JAVA_RULES, OBJC_RULES); + return ImmutableList.of(CoreRules.INSTANCE, CcRules.INSTANCE, JavaRules.INSTANCE, + ObjcRules.INSTANCE); } }; @@ -631,18 +347,18 @@ public class BazelRuleClassProvider { BAZEL_SETUP, CoreRules.INSTANCE, CoreWorkspaceRules.INSTANCE, - GENERIC_RULES, + GenericRules.INSTANCE, ConfigRules.INSTANCE, - PLATFORM_RULES, + PlatformRules.INSTANCE, PROTO_RULES, SH_RULES, - CPP_RULES, + CcRules.INSTANCE, CPP_PROTO_RULES, - JAVA_RULES, + JavaRules.INSTANCE, JAVA_PROTO_RULES, ANDROID_RULES, PYTHON_RULES, - OBJC_RULES, + ObjcRules.INSTANCE, J2OBJC_RULES, TestingSupportRules.INSTANCE, VARIOUS_WORKSPACE_RULES, diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java new file mode 100644 index 0000000000..6d606d483a --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/CcRules.java @@ -0,0 +1,80 @@ +// Copyright 2018 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.bazel.rules; + +import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet; +import com.google.devtools.build.lib.bazel.rules.CcToolchainType.CcToolchainTypeRule; +import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcBinaryRule; +import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcImportRule; +import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcIncLibraryRule; +import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcLibraryRule; +import com.google.devtools.build.lib.bazel.rules.cpp.BazelCcTestRule; +import com.google.devtools.build.lib.bazel.rules.cpp.BazelCppRuleClasses; +import com.google.devtools.build.lib.rules.core.CoreRules; +import com.google.devtools.build.lib.rules.cpp.CcImportRule; +import com.google.devtools.build.lib.rules.cpp.CcIncLibraryRule; +import com.google.devtools.build.lib.rules.cpp.CcModule; +import com.google.devtools.build.lib.rules.cpp.CcToolchainAlias.CcToolchainAliasRule; +import com.google.devtools.build.lib.rules.cpp.CcToolchainRule; +import com.google.devtools.build.lib.rules.cpp.CcToolchainSuiteRule; +import com.google.devtools.build.lib.rules.cpp.CppBuildInfo; +import com.google.devtools.build.lib.rules.cpp.CppConfigurationLoader; +import com.google.devtools.build.lib.rules.cpp.CppOptions; +import com.google.devtools.build.lib.rules.cpp.CpuTransformer; +import com.google.devtools.build.lib.rules.platform.PlatformRules; + +/** + * Rules for C++ support in Bazel. + */ +public class CcRules implements RuleSet { + public static final CcRules INSTANCE = new CcRules(); + + private CcRules() { + // Use the static INSTANCE field instead. + } + + @Override + public void init(Builder builder) { + builder.addSkylarkAccessibleTopLevels("cc_common", CcModule.INSTANCE); + + builder.addConfig(CppOptions.class, new CppConfigurationLoader(CpuTransformer.IDENTITY)); + builder.addBuildInfoFactory(new CppBuildInfo()); + + builder.addRuleDefinition(new CcToolchainRule()); + builder.addRuleDefinition(new CcToolchainSuiteRule()); + builder.addRuleDefinition(new CcToolchainAliasRule()); + builder.addRuleDefinition(new CcIncLibraryRule()); + builder.addRuleDefinition(new CcImportRule()); + builder.addRuleDefinition(new CcToolchainTypeRule()); + builder.addRuleDefinition(new BazelCppRuleClasses.CcLinkingRule()); + builder.addRuleDefinition(new BazelCppRuleClasses.CcDeclRule()); + builder.addRuleDefinition(new BazelCppRuleClasses.CcBaseRule()); + builder.addRuleDefinition(new BazelCppRuleClasses.CcRule( + BazelRuleClassProvider.TOOLS_REPOSITORY + "//tools/def_parser:def_parser")); + builder.addRuleDefinition(new BazelCppRuleClasses.CcBinaryBaseRule()); + builder.addRuleDefinition(new BazelCcBinaryRule()); + builder.addRuleDefinition(new BazelCcTestRule()); + builder.addRuleDefinition(new BazelCppRuleClasses.CcLibraryBaseRule()); + builder.addRuleDefinition(new BazelCcLibraryRule()); + builder.addRuleDefinition(new BazelCcIncLibraryRule()); + builder.addRuleDefinition(new BazelCcImportRule()); + } + + @Override + public ImmutableList<RuleSet> requires() { + return ImmutableList.of(CoreRules.INSTANCE, PlatformRules.INSTANCE); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/GenericRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/GenericRules.java new file mode 100644 index 0000000000..321f4256f7 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/GenericRules.java @@ -0,0 +1,72 @@ +// Copyright 2018 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.bazel.rules; + +import com.google.common.collect.ImmutableList; +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.constraints.EnvironmentRule; +import com.google.devtools.build.lib.bazel.rules.common.BazelFilegroupRule; +import com.google.devtools.build.lib.rules.Alias.AliasRule; +import com.google.devtools.build.lib.rules.core.CoreRules; +import com.google.devtools.build.lib.rules.genquery.GenQueryRule; +import com.google.devtools.build.lib.rules.test.TestSuiteRule; +import com.google.devtools.build.lib.util.ResourceFileLoader; +import java.io.IOException; + +/** + * A set of generic rules that provide miscellaneous capabilities to Bazel. + */ +public class GenericRules implements RuleSet { + public static final GenericRules INSTANCE = new GenericRules(); + + private GenericRules() { + // Use the static INSTANCE field instead. + } + + @Override + public void init(Builder builder) { + builder.addRuleDefinition(new EnvironmentRule()); + + builder.addRuleDefinition(new AliasRule()); + builder.addRuleDefinition(new BazelFilegroupRule()); + builder.addRuleDefinition(new TestSuiteRule()); + builder.addRuleDefinition(new GenQueryRule()); + + try { + builder.addWorkspaceFilePrefix( + ResourceFileLoader.loadResource(BazelRuleClassProvider.class, "tools.WORKSPACE") + // Hackily select the java_toolchain based on the host JDK version. JDK 8 and + // 9 host_javabases require different toolchains, e.g. to use --patch-module + // instead of -Xbootclasspath/p:. + .replace( + "%java_toolchain%", + isJdk8OrEarlier() + ? "@bazel_tools//tools/jdk:toolchain_jdk8" + : "@bazel_tools//tools/jdk:toolchain_jdk9")); + + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public ImmutableList<RuleSet> requires() { + return ImmutableList.of(CoreRules.INSTANCE); + } + + private static boolean isJdk8OrEarlier() { + return Double.parseDouble(System.getProperty("java.class.version")) <= 52.0; + } +} diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java new file mode 100644 index 0000000000..aeecf0a21f --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java @@ -0,0 +1,102 @@ +// Copyright 2018 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.bazel.rules; + +import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaBinaryRule; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaBuildInfoFactory; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaImportRule; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaLibraryRule; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaPluginRule; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaRuleClasses; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaSemantics; +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaTestRule; +import com.google.devtools.build.lib.rules.core.CoreRules; +import com.google.devtools.build.lib.rules.extra.ActionListenerRule; +import com.google.devtools.build.lib.rules.extra.ExtraActionRule; +import com.google.devtools.build.lib.rules.java.JavaConfigurationLoader; +import com.google.devtools.build.lib.rules.java.JavaImportBaseRule; +import com.google.devtools.build.lib.rules.java.JavaInfo; +import com.google.devtools.build.lib.rules.java.JavaOptions; +import com.google.devtools.build.lib.rules.java.JavaPackageConfigurationRule; +import com.google.devtools.build.lib.rules.java.JavaRuleClasses.IjarBaseRule; +import com.google.devtools.build.lib.rules.java.JavaRuntimeAlias; +import com.google.devtools.build.lib.rules.java.JavaRuntimeRule; +import com.google.devtools.build.lib.rules.java.JavaRuntimeSuiteRule; +import com.google.devtools.build.lib.rules.java.JavaSkylarkCommon; +import com.google.devtools.build.lib.rules.java.JavaToolchainAlias; +import com.google.devtools.build.lib.rules.java.JavaToolchainRule; +import com.google.devtools.build.lib.rules.java.ProguardLibraryRule; +import com.google.devtools.build.lib.rules.java.proto.JavaProtoSkylarkCommon; +import com.google.devtools.build.lib.util.ResourceFileLoader; +import java.io.IOException; + +/** + * Rules for Java support in Bazel. + */ +public class JavaRules implements RuleSet { + public static final JavaRules INSTANCE = new JavaRules(); + + private JavaRules() { + // Use the static INSTANCE field instead. + } + + @Override + public void init(Builder builder) { + builder.addConfigurationOptions(JavaOptions.class); + builder.addConfigurationFragment(new JavaConfigurationLoader()); + + builder.addBuildInfoFactory(new BazelJavaBuildInfoFactory()); + + builder.addRuleDefinition(new BazelJavaRuleClasses.BaseJavaBinaryRule()); + builder.addRuleDefinition(new IjarBaseRule()); + builder.addRuleDefinition(new BazelJavaRuleClasses.JavaBaseRule()); + builder.addRuleDefinition(new ProguardLibraryRule()); + builder.addRuleDefinition(new JavaImportBaseRule()); + builder.addRuleDefinition(new BazelJavaRuleClasses.JavaRule()); + builder.addRuleDefinition(new BazelJavaBinaryRule()); + builder.addRuleDefinition(new BazelJavaLibraryRule()); + builder.addRuleDefinition(new BazelJavaImportRule()); + builder.addRuleDefinition(new BazelJavaTestRule()); + builder.addRuleDefinition(new BazelJavaPluginRule()); + builder.addRuleDefinition(new JavaToolchainRule()); + builder.addRuleDefinition(new JavaPackageConfigurationRule()); + builder.addRuleDefinition(new JavaRuntimeRule()); + builder.addRuleDefinition(new JavaRuntimeSuiteRule()); + builder.addRuleDefinition(new JavaRuntimeAlias.JavaRuntimeAliasRule()); + builder.addRuleDefinition(new JavaToolchainAlias.JavaToolchainAliasRule()); + + builder.addRuleDefinition(new ExtraActionRule()); + builder.addRuleDefinition(new ActionListenerRule()); + + builder.addSkylarkAccessibleTopLevels("java_common", + new JavaSkylarkCommon(BazelJavaSemantics.INSTANCE)); + builder.addSkylarkAccessibleTopLevels("JavaInfo", JavaInfo.PROVIDER); + builder.addSkylarkAccessibleTopLevels("java_proto_common", JavaProtoSkylarkCommon.class); + + try { + builder.addWorkspaceFilePrefix( + ResourceFileLoader.loadResource(BazelJavaRuleClasses.class, "jdk.WORKSPACE")); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + @Override + public ImmutableList<RuleSet> requires() { + return ImmutableList.of(CoreRules.INSTANCE, CcRules.INSTANCE); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java new file mode 100644 index 0000000000..505bbecb43 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ObjcRules.java @@ -0,0 +1,116 @@ +// Copyright 2018 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.bazel.rules; + +import static com.google.common.base.Preconditions.checkNotNull; + +import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet; +import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions; +import com.google.devtools.build.lib.rules.apple.AppleConfiguration; +import com.google.devtools.build.lib.rules.apple.AppleToolchain; +import com.google.devtools.build.lib.rules.apple.XcodeConfigAlias.XcodeConfigAliasRule; +import com.google.devtools.build.lib.rules.apple.XcodeConfigRule; +import com.google.devtools.build.lib.rules.apple.XcodeVersionRule; +import com.google.devtools.build.lib.rules.apple.cpp.AppleCcToolchainRule; +import com.google.devtools.build.lib.rules.apple.swift.SwiftCommandLineOptions; +import com.google.devtools.build.lib.rules.apple.swift.SwiftConfiguration; +import com.google.devtools.build.lib.rules.core.CoreRules; +import com.google.devtools.build.lib.rules.objc.AppleBinaryRule; +import com.google.devtools.build.lib.rules.objc.AppleSkylarkCommon; +import com.google.devtools.build.lib.rules.objc.AppleStaticLibraryRule; +import com.google.devtools.build.lib.rules.objc.AppleStubBinaryRule; +import com.google.devtools.build.lib.rules.objc.IosDeviceRule; +import com.google.devtools.build.lib.rules.objc.J2ObjcCommandLineOptions; +import com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration; +import com.google.devtools.build.lib.rules.objc.ObjcBuildInfoFactory; +import com.google.devtools.build.lib.rules.objc.ObjcBundleLibraryRule; +import com.google.devtools.build.lib.rules.objc.ObjcBundleRule; +import com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions; +import com.google.devtools.build.lib.rules.objc.ObjcConfigurationLoader; +import com.google.devtools.build.lib.rules.objc.ObjcFrameworkRule; +import com.google.devtools.build.lib.rules.objc.ObjcImportRule; +import com.google.devtools.build.lib.rules.objc.ObjcLibraryRule; +import com.google.devtools.build.lib.rules.objc.ObjcProtoAspect; +import com.google.devtools.build.lib.rules.objc.ObjcProtoLibraryRule; +import com.google.devtools.build.lib.rules.objc.ObjcRuleClasses; + +/** + * Rules for Objective-C support in Bazel. + */ +public class ObjcRules implements RuleSet { + public static final ObjcRules INSTANCE = new ObjcRules(); + + protected ObjcRules() { + // Use the static INSTANCE field instead. + } + + @Override + public void init(Builder builder) { + String toolsRepository = checkNotNull(builder.getToolsRepository()); + + // objc_proto_library should go into a separate RuleSet! + // TODO(ulfjack): Depending on objcProtoAspect from here is a layering violation. + ObjcProtoAspect objcProtoAspect = new ObjcProtoAspect(); + + builder.addBuildInfoFactory(new ObjcBuildInfoFactory()); + builder.addSkylarkAccessibleTopLevels( + "apple_common", new AppleSkylarkCommon(objcProtoAspect)); + + builder.addConfig(ObjcCommandLineOptions.class, new ObjcConfigurationLoader()); + builder.addConfig(AppleCommandLineOptions.class, new AppleConfiguration.Loader()); + builder.addConfig(SwiftCommandLineOptions.class, new SwiftConfiguration.Loader()); + // j2objc shouldn't be here! + builder.addConfig(J2ObjcCommandLineOptions.class, new J2ObjcConfiguration.Loader()); + + builder.addNativeAspectClass(objcProtoAspect); + builder.addRuleDefinition(new AppleBinaryRule(objcProtoAspect)); + builder.addRuleDefinition(new AppleStaticLibraryRule(objcProtoAspect)); + builder.addRuleDefinition(new AppleStubBinaryRule()); + builder.addRuleDefinition(new ObjcProtoLibraryRule(objcProtoAspect)); + + builder.addRuleDefinition(new AppleCcToolchainRule()); + builder.addRuleDefinition(new AppleToolchain.RequiresXcodeConfigRule(toolsRepository)); + builder.addRuleDefinition(new IosDeviceRule()); + builder.addRuleDefinition(new ObjcBundleRule()); + builder.addRuleDefinition(new ObjcBundleLibraryRule()); + builder.addRuleDefinition(new ObjcFrameworkRule()); + builder.addRuleDefinition(new ObjcImportRule()); + builder.addRuleDefinition(new ObjcLibraryRule()); + builder.addRuleDefinition(new ObjcRuleClasses.CoptsRule()); + builder.addRuleDefinition(new ObjcRuleClasses.BundlingRule()); + builder.addRuleDefinition(new ObjcRuleClasses.DylibDependingRule(objcProtoAspect)); + builder.addRuleDefinition(new ObjcRuleClasses.CompilingRule()); + builder.addRuleDefinition(new ObjcRuleClasses.LinkingRule(objcProtoAspect)); + builder.addRuleDefinition(new ObjcRuleClasses.PlatformRule()); + builder.addRuleDefinition(new ObjcRuleClasses.MultiArchPlatformRule(objcProtoAspect)); + builder.addRuleDefinition(new ObjcRuleClasses.ResourcesRule()); + builder.addRuleDefinition(new ObjcRuleClasses.AlwaysLinkRule()); + builder.addRuleDefinition(new ObjcRuleClasses.SdkFrameworksDependerRule()); + builder.addRuleDefinition(new ObjcRuleClasses.CompileDependencyRule()); + builder.addRuleDefinition(new ObjcRuleClasses.ResourceToolsRule()); + builder.addRuleDefinition(new ObjcRuleClasses.XcrunRule()); + builder.addRuleDefinition(new ObjcRuleClasses.LibtoolRule()); + builder.addRuleDefinition(new ObjcRuleClasses.CrosstoolRule()); + builder.addRuleDefinition(new XcodeConfigRule()); + builder.addRuleDefinition(new XcodeConfigAliasRule()); + builder.addRuleDefinition(new XcodeVersionRule()); + } + + @Override + public ImmutableList<RuleSet> requires() { + return ImmutableList.of(CoreRules.INSTANCE, CcRules.INSTANCE); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/BUILD b/src/main/java/com/google/devtools/build/lib/rules/platform/BUILD index 9908d64d28..c564fce0de 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/platform/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/platform/BUILD @@ -15,6 +15,7 @@ java_library( ]), deps = [ "//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:packages", "//src/main/java/com/google/devtools/build/lib:skylarkinterface", "//src/main/java/com/google/devtools/build/lib/analysis/platform", diff --git a/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRules.java b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRules.java new file mode 100644 index 0000000000..6eaa8859ed --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/rules/platform/PlatformRules.java @@ -0,0 +1,52 @@ +// Copyright 2018 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.platform; + +import com.google.common.collect.ImmutableList; +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.PlatformConfigurationLoader; +import com.google.devtools.build.lib.analysis.PlatformOptions; +import com.google.devtools.build.lib.rules.core.CoreRules; + +/** + * Rules for supporting different platforms in Bazel. + */ +public class PlatformRules implements RuleSet { + public static final PlatformRules INSTANCE = new PlatformRules(); + + protected PlatformRules() { + // Use the static INSTANCE field instead. + } + + @Override + public void init(Builder builder) { + builder.addConfigurationOptions(PlatformOptions.class); + builder.addConfigurationFragment(new PlatformConfigurationLoader()); + + builder.addRuleDefinition(new PlatformBaseRule()); + builder.addRuleDefinition(new ConstraintSettingRule()); + builder.addRuleDefinition(new ConstraintValueRule()); + builder.addRuleDefinition(new PlatformRule()); + + builder.addRuleDefinition(new ToolchainRule()); + + builder.addSkylarkAccessibleTopLevels("platform_common", new PlatformCommon()); + } + + @Override + public ImmutableList<RuleSet> requires() { + return ImmutableList.of(CoreRules.INSTANCE); + } +} 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 ba69b6d721..502a048cbb 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 @@ -96,7 +96,7 @@ public class BazelRuleClassProviderTest { @Test public void genericConsistency() { - checkModule(BazelRuleClassProvider.GENERIC_RULES); + checkModule(GenericRules.INSTANCE); } @Test @@ -116,12 +116,12 @@ public class BazelRuleClassProviderTest { @Test public void cppConsistency() { - checkModule(BazelRuleClassProvider.CPP_RULES); + checkModule(CcRules.INSTANCE); } @Test public void javaConsistency() { - checkModule(BazelRuleClassProvider.JAVA_RULES); + checkModule(JavaRules.INSTANCE); } @Test @@ -136,7 +136,7 @@ public class BazelRuleClassProviderTest { @Test public void objcConsistency() { - checkModule(BazelRuleClassProvider.OBJC_RULES); + checkModule(ObjcRules.INSTANCE); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD b/src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD index 3aeeecd08a..73fb388424 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD @@ -30,6 +30,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/rules/cpp", + "//src/main/java/com/google/devtools/build/lib/rules/platform", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs", 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 68edd89798..644761235e 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 @@ -33,12 +33,15 @@ import com.google.devtools.build.lib.analysis.mock.BazelAnalysisMock; import com.google.devtools.build.lib.analysis.util.AnalysisMock; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.bazel.rules.BazelRuleClassProvider; +import com.google.devtools.build.lib.bazel.rules.CcRules; +import com.google.devtools.build.lib.bazel.rules.GenericRules; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.rules.ToolchainType; import com.google.devtools.build.lib.rules.core.CoreRules; import com.google.devtools.build.lib.rules.cpp.transitions.LipoDataTransitionRuleSet; +import com.google.devtools.build.lib.rules.platform.PlatformRules; import com.google.devtools.build.lib.rules.repository.CoreWorkspaceRules; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.util.OsUtils; @@ -973,9 +976,9 @@ public class CcCommonTest extends BuildViewTestCase { BazelRuleClassProvider.BAZEL_SETUP.init(builder); CoreRules.INSTANCE.init(builder); CoreWorkspaceRules.INSTANCE.init(builder); - BazelRuleClassProvider.PLATFORM_RULES.init(builder); - BazelRuleClassProvider.GENERIC_RULES.init(builder); - BazelRuleClassProvider.CPP_RULES.init(builder); + PlatformRules.INSTANCE.init(builder); + GenericRules.INSTANCE.init(builder); + CcRules.INSTANCE.init(builder); return builder.build(); } |