diff options
author | 2018-01-31 07:58:38 -0800 | |
---|---|---|
committer | 2018-01-31 08:00:33 -0800 | |
commit | a5d00d6db98a09b0a644db77301d9b6ed4f2a2ff (patch) | |
tree | 254a7100bfbb69b43edb2b5eef45bc9bf39e3fa0 /src | |
parent | a88f0613d1403b34a9ac27fbaf840d4438254e89 (diff) |
Move BazelRuleClassProvider.LIPO_DATA_TRANSITION to its own class.
PiperOrigin-RevId: 183990860
Diffstat (limited to 'src')
4 files changed, 45 insertions, 21 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 b9ab60e078..a433568445 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 @@ -115,7 +115,7 @@ 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.DisableLipoTransition; +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; @@ -326,23 +326,6 @@ public class BazelRuleClassProvider { } }; - /** - * Rules defined before this set will fail when trying to declare a data transition. So it's best - * to define this as early as possible. - */ - public static final RuleSet LIPO_DATA_TRANSITION = - new RuleSet() { - @Override - public void init(Builder builder) { - builder.setLipoDataTransition(DisableLipoTransition.INSTANCE); - } - - @Override - public ImmutableList<RuleSet> requires() { - return ImmutableList.of(); - } - }; - public static final RuleSet CPP_RULES = new RuleSet() { @Override @@ -639,7 +622,9 @@ public class BazelRuleClassProvider { private static final ImmutableSet<RuleSet> RULE_SETS = ImmutableSet.of( - LIPO_DATA_TRANSITION, + // Rules defined before LipoDataTransitionRuleSet will fail when trying to declare a data + // transition. + LipoDataTransitionRuleSet.INSTANCE, BAZEL_SETUP, CoreRules.INSTANCE, CoreWorkspaceRules.INSTANCE, diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/LipoDataTransitionRuleSet.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/LipoDataTransitionRuleSet.java new file mode 100644 index 0000000000..30b17dce3d --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/transitions/LipoDataTransitionRuleSet.java @@ -0,0 +1,37 @@ +// 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.cpp.transitions; + +import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.Builder; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet; + +/** Rule set to deal with LIPO data transitions */ +public final class LipoDataTransitionRuleSet implements RuleSet { + public static final LipoDataTransitionRuleSet INSTANCE = new LipoDataTransitionRuleSet(); + + private LipoDataTransitionRuleSet() { + // Use the static INSTANCE field instead. + } + + @Override + public void init(Builder builder) { + builder.setLipoDataTransition(DisableLipoTransition.INSTANCE); + } + + @Override + public ImmutableList<RuleSet> requires() { + return ImmutableList.of(); + } +} 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 0eaae6864b..ba69b6d721 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 @@ -25,6 +25,7 @@ import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.packages.RuleClass; 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.transitions.LipoDataTransitionRuleSet; import com.google.devtools.build.lib.rules.repository.CoreWorkspaceRules; import java.util.HashSet; import java.util.List; @@ -64,7 +65,7 @@ public class BazelRuleClassProviderTest { ConfiguredRuleClassProvider.Builder builder = new ConfiguredRuleClassProvider.Builder(); builder.setToolsRepository(BazelRuleClassProvider.TOOLS_REPOSITORY); Set<RuleSet> result = new HashSet<>(); - result.add(BazelRuleClassProvider.LIPO_DATA_TRANSITION); + result.add(LipoDataTransitionRuleSet.INSTANCE); result.add(BazelRuleClassProvider.BAZEL_SETUP); collectTransitiveClosure(result, top); for (RuleSet module : result) { 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 9bf85024a4..68edd89798 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 @@ -38,6 +38,7 @@ 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.repository.CoreWorkspaceRules; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.util.OsUtils; @@ -968,7 +969,7 @@ public class CcCommonTest extends BuildViewTestCase { public ConfiguredRuleClassProvider createRuleClassProvider() { ConfiguredRuleClassProvider.Builder builder = new ConfiguredRuleClassProvider.Builder(); builder.setToolsRepository("@bazel_tools"); - BazelRuleClassProvider.LIPO_DATA_TRANSITION.init(builder); + LipoDataTransitionRuleSet.INSTANCE.init(builder); BazelRuleClassProvider.BAZEL_SETUP.init(builder); CoreRules.INSTANCE.init(builder); CoreWorkspaceRules.INSTANCE.init(builder); |