aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2018-01-30 06:57:42 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-30 06:59:52 -0800
commitc13c91dc350c0061ef0fc401febc8459396264ef (patch)
tree62d64a658b93cc9bac0a577cf11b646b84a1aa09 /src/main
parentad835fb69aab2af390dfcd699c26ed3aeca1cd50 (diff)
Remove DynamicTransitionMapper, ConfigurationTransitionProxy.
PiperOrigin-RevId: 183826311
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java67
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java62
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransitionProxy.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java4
12 files changed, 25 insertions, 207 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
index d0254c33fd..4b61384684 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
@@ -214,8 +214,7 @@ public final class AnalysisUtils {
targetAndConfig.getConfiguration(),
Dependency.withTransitionAndAspects(
targetAndConfig.getLabel(),
- TransitionResolver.evaluateTopLevelTransition(
- targetAndConfig, ruleClassProvider.getDynamicTransitionMapper()),
+ TransitionResolver.evaluateTopLevelTransition(targetAndConfig),
// TODO(bazel-team): support top-level aspects
AspectCollection.EMPTY));
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 744430f4d9..0b27d13785 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -46,7 +46,6 @@ import com.google.devtools.build.lib.analysis.config.ConfigurationResolver;
import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
import com.google.devtools.build.lib.analysis.config.transitions.NoTransition;
-import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
import com.google.devtools.build.lib.analysis.config.transitions.Transition;
import com.google.devtools.build.lib.analysis.constraints.TopLevelConstraintSemantics;
import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory;
@@ -985,7 +984,6 @@ public class BuildView {
class SilentDependencyResolver extends DependencyResolver {
private SilentDependencyResolver() {
- super(ruleClassProvider.getDynamicTransitionMapper());
}
@Override
@@ -1116,12 +1114,7 @@ public class BuildView {
if (factory == null) {
return NoTransition.INSTANCE;
}
-
- // dynamicTransitionMapper is only needed because of ConfigurationTransitionProxy.DATA:
- // this is C++-specific but non-C++ rules declare it. So they can't directly provide the
- // C++-specific patch transition that implements it.
- PatchTransition transition = (PatchTransition)
- ruleClassProvider.getDynamicTransitionMapper().map(factory.buildTransitionFor(rule));
+ Transition transition = factory.buildTransitionFor(rule);
return (transition == null) ? NoTransition.INSTANCE : transition;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
index 5275dc9eef..6a389b128d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -32,10 +32,8 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
import com.google.devtools.build.lib.analysis.config.DefaultsPackage;
-import com.google.devtools.build.lib.analysis.config.DynamicTransitionMapper;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
-import com.google.devtools.build.lib.analysis.config.transitions.Transition;
import com.google.devtools.build.lib.analysis.skylark.SkylarkModules;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
@@ -228,8 +226,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
private final Map<Class<? extends RuleDefinition>, RuleClass> ruleMap = new HashMap<>();
private final Digraph<Class<? extends RuleDefinition>> dependencyGraph =
new Digraph<>();
- private ImmutableMap.Builder<Transition, Transition> dynamicTransitionMaps
- = ImmutableMap.builder();
private PatchTransition lipoDataTransition;
private Class<? extends BuildConfiguration.Fragment> universalFragment;
private PrerequisiteValidator prerequisiteValidator;
@@ -347,11 +343,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
return this;
}
- public Builder addDynamicTransitionMaps(Map<Transition, Transition> maps) {
- dynamicTransitionMaps.putAll(maps);
- return this;
- }
-
public Builder setUniversalConfigurationFragment(
Class<? extends BuildConfiguration.Fragment> fragment) {
this.universalFragment = fragment;
@@ -487,7 +478,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
ImmutableList.copyOf(buildInfoFactories),
ImmutableList.copyOf(configurationOptions),
ImmutableList.copyOf(configurationFragmentFactories),
- new DynamicTransitionMapper(dynamicTransitionMaps.build()),
lipoDataTransition,
universalFragment,
prerequisiteValidator,
@@ -590,11 +580,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
/** The set of configuration fragment factories. */
private final ImmutableList<ConfigurationFragmentFactory> configurationFragmentFactories;
- /**
- * The dynamic configuration transition mapper.
- */
- private final DynamicTransitionMapper dynamicTransitionMapper;
-
private final PatchTransition lipoDataTransition;
/**
@@ -625,7 +610,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
ImmutableList<BuildInfoFactory> buildInfoFactories,
ImmutableList<Class<? extends FragmentOptions>> configurationOptions,
ImmutableList<ConfigurationFragmentFactory> configurationFragments,
- DynamicTransitionMapper dynamicTransitionMapper,
PatchTransition lipoDataTransition,
Class<? extends BuildConfiguration.Fragment> universalFragment,
PrerequisiteValidator prerequisiteValidator,
@@ -643,7 +627,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
this.buildInfoFactories = buildInfoFactories;
this.configurationOptions = configurationOptions;
this.configurationFragmentFactories = configurationFragments;
- this.dynamicTransitionMapper = dynamicTransitionMapper;
this.lipoDataTransition = lipoDataTransition;
this.universalFragment = universalFragment;
this.prerequisiteValidator = prerequisiteValidator;
@@ -727,13 +710,6 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
}
/**
- * Returns the dynamic configuration transition mapper.
- */
- public DynamicTransitionMapper getDynamicTransitionMapper() {
- return dynamicTransitionMapper;
- }
-
- /**
* Returns the configuration fragment that should be available to all rules even when they
* don't explicitly require it.
*/
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index ea542dfffa..9290168593 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -22,7 +22,6 @@ import com.google.devtools.build.lib.analysis.AspectCollection.AspectCycleOnPath
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
-import com.google.devtools.build.lib.analysis.config.DynamicTransitionMapper;
import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -66,12 +65,6 @@ import javax.annotation.Nullable;
* <p>Includes logic to derive the right configurations depending on transition type.
*/
public abstract class DependencyResolver {
- private final TransitionResolver transitionResolver;
-
- protected DependencyResolver(DynamicTransitionMapper transitionMapper) {
- this.transitionResolver = new TransitionResolver(transitionMapper);
- }
-
/**
* Returns ids for dependent nodes of a given node, sorted by attribute. Note that some
* dependencies do not have a corresponding attribute here, and we use the null attribute to
@@ -725,7 +718,7 @@ public abstract class DependencyResolver {
if (toTarget == null) {
return; // Skip this round: we still need to Skyframe-evaluate the dep's target.
}
- Transition transition = transitionResolver.evaluateTransition(
+ Transition transition = TransitionResolver.evaluateTransition(
ruleConfig, rule, attributeAndOwner.attribute, toTarget, attributeMap);
outgoingEdges.put(
attributeAndOwner.attribute,
@@ -752,7 +745,7 @@ public abstract class DependencyResolver {
}
outgoingEdges.put(
attributeAndOwner.attribute,
- transitionResolver.usesNullConfiguration(toTarget)
+ TransitionResolver.usesNullConfiguration(toTarget)
? Dependency.withNullConfiguration(depLabel)
: Dependency.withTransitionAndAspects(depLabel, new FixedTransition(
config.getOptions()), requiredAspects(attributeAndOwner, toTarget)));
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index a371d00318..1fac30b5f0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -47,7 +47,6 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.FragmentCollection;
-import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransitionProxy;
import com.google.devtools.build.lib.analysis.config.transitions.NoTransition;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition;
@@ -1081,7 +1080,7 @@ public final class RuleContext extends TargetContext
+ " is not configured for the target configuration");
}
} else if (mode == Mode.DATA) {
- if (transition != disableLipoTransition && transition != ConfigurationTransitionProxy.DATA) {
+ if (transition != disableLipoTransition) {
throw new IllegalStateException(getRule().getLocation() + ": "
+ getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not configured for the data configuration");
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java b/src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java
deleted file mode 100644
index d08a0dbc7d..0000000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// 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.analysis.config;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransitionProxy;
-import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
-import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition;
-import com.google.devtools.build.lib.analysis.config.transitions.Transition;
-
-/**
- * Maps non-{@link PatchTransition} declarations to their implementable equivalents.
- *
- * <p>Blaze applies configuration transitions by executing {@link PatchTransition} instances. But
- * for legacy reasons, {@link ConfigurationTransitionProxy#DATA} (which is used for C++/LIPO logic)
- * is an implementation-free enum.
- *
- * <p>We should ultimately restrict that logic just to the C++ rule definitions and remove this
- * interface. But {@link ConfigurationTransitionProxy#DATA} is used everywhere, including in
- * non-C++ rules and in {@code lib.packages} code, which lacks acccess to C++ configuration logic.
- */
-public final class DynamicTransitionMapper {
- private final ImmutableMap<Transition, Transition> map;
-
- /**
- * Creates a new mapper with the given mapping. Any transition not in this mapping triggers
- * an {@link IllegalArgumentException}.
- */
- public DynamicTransitionMapper(ImmutableMap<Transition, Transition> map) {
- this.map = map;
- }
-
- /**
- * Given an input transition, returns the equivalent transition Blaze's implementation logic knows
- * how to apply.
- *
- * <p>When the input is a {@link PatchTransition}, this just returns the input. This is because
- * that's the kind of transition that Blaze natively applies. For this reason, all inputs should
- * ideally be {@link PatchTransition}s.
- *
- * <p>Non-{@link PatchTransition} inputs that aren't mapped here throw an
- * {@link IllegalArgumentException}.
- */
- public Transition map(Transition fromTransition) {
- if (fromTransition instanceof PatchTransition
- || fromTransition instanceof SplitTransition
- || fromTransition == null) {
- return fromTransition;
- }
- Transition toTransition = map.get(fromTransition);
- if (toTransition == null) {
- throw new IllegalArgumentException("No dynamic mapping for " + fromTransition.toString());
- }
- return toTransition;
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
index 9fc95970fd..6287e74b57 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
@@ -18,7 +18,6 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.config.transitions.ComposingSplitTransition;
-import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransitionProxy;
import com.google.devtools.build.lib.analysis.config.transitions.NoTransition;
import com.google.devtools.build.lib.analysis.config.transitions.NullTransition;
import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
@@ -44,16 +43,6 @@ import com.google.devtools.build.lib.packages.Target;
* transitions.
*/
public final class TransitionResolver {
- private final DynamicTransitionMapper transitionMapper;
-
- /**
- * Instantiates this resolver with a helper class that maps non-{@link PatchTransition}s to
- * {@link PatchTransition}s.
- */
- public TransitionResolver(DynamicTransitionMapper transitionMapper) {
- this.transitionMapper = transitionMapper;
- }
-
/**
* Given a parent rule and configuration depending on a child through an attribute, determines
* the configuration the child should take.
@@ -64,10 +53,9 @@ public final class TransitionResolver {
* @param toTarget the child target (which may or may not be a rule)
*
* @return the child's configuration, expressed as a diff from the parent's configuration. This
- * is usually a {@PatchTransition} but exceptions apply (e.g.
- * {@link ConfigurationTransitionProxy}).
+ * is either a {@link PatchTransition} or {@link SplitTransition}.
*/
- public Transition evaluateTransition(BuildConfiguration fromConfig, final Rule fromRule,
+ public static Transition evaluateTransition(BuildConfiguration fromConfig, final Rule fromRule,
final Attribute attribute, final Target toTarget, ConfiguredAttributeMapper attributeMap) {
// I. Input files and package groups have no configurations. We don't want to duplicate them.
@@ -126,15 +114,14 @@ public final class TransitionResolver {
// IV. Applies any rule transitions associated with the dep target, composes their transitions
// with a passed-in existing transition, and returns the composed result.
- return applyRuleTransition(currentTransition, toTarget, transitionMapper);
+ return applyRuleTransition(currentTransition, toTarget);
}
/**
* Same as evaluateTransition except does not check for transitions coming from parents and
* enables support for rule-triggered top-level configuration hooks.
*/
- public static Transition evaluateTopLevelTransition(
- TargetAndConfiguration targetAndConfig, DynamicTransitionMapper dynamicTransitionMapper) {
+ public static Transition evaluateTopLevelTransition(TargetAndConfiguration targetAndConfig) {
Target target = targetAndConfig.getTarget();
BuildConfiguration fromConfig = targetAndConfig.getConfiguration();
@@ -148,7 +135,7 @@ public final class TransitionResolver {
if (target.getAssociatedRule() == null) {
return topLevelTransition;
}
- return applyRuleTransition(topLevelTransition, target, dynamicTransitionMapper);
+ return applyRuleTransition(topLevelTransition, target);
}
/**
@@ -163,27 +150,18 @@ public final class TransitionResolver {
* Composes two transitions together efficiently.
*/
@VisibleForTesting
- public Transition composeTransitions(Transition transition1, Transition transition2) {
- if (isFinal(transition1)) {
+ public static Transition composeTransitions(Transition transition1, Transition transition2) {
+ if (isFinal(transition1) || transition2 == NoTransition.INSTANCE) {
return transition1;
- } else if (transition2 == NoTransition.INSTANCE) {
- return transition1;
- } else if (transition2 == NullTransition.INSTANCE) {
- // A NULL transition can just replace earlier transitions: no need to compose them.
- return NullTransition.INSTANCE;
- } else if (transition2.isHostTransition()) {
- // A HOST transition can just replace earlier transitions: no need to compose them.
- // But it also improves performance: host transitions are common, and
- // ConfiguredTargetFunction has special optimized logic to handle them. If they were buried
- // in the last segment of a ComposingSplitTransition, those optimizations wouldn't trigger.
- return HostTransition.INSTANCE;
+ } else if (isFinal(transition2) || transition1 == NoTransition.INSTANCE) {
+ // When the second transition is a HOST transition, there's no need to compose. But this also
+ // improves performance: host transitions are common, and ConfiguredTargetFunction has special
+ // optimized logic to handle them. If they were buried in the last segment of a
+ // ComposingSplitTransition, those optimizations wouldn't trigger.
+ return transition2;
+ } else {
+ return new ComposingSplitTransition(transition1, transition2);
}
-
- // TODO(gregce): remove the below conversion when all transitions are patch transitions.
- Transition dynamicTransition = transitionMapper.map(transition2);
- return transition1 == NoTransition.INSTANCE
- ? dynamicTransition
- : new ComposingSplitTransition(transition1, dynamicTransition);
}
/**
@@ -211,12 +189,8 @@ public final class TransitionResolver {
/**
* @param currentTransition a pre-existing transition to be composed with
* @param toTarget rule to examine for transitions
- * @param transitionMapper only needed because of ConfigurationTransitionProxy.DATA: this is
- * C++-specific but non-C++ rules declare it. So they can't directly provide the C++-specific
- * patch transition that implements it.
*/
- private static Transition applyRuleTransition(
- Transition currentTransition, Target toTarget, DynamicTransitionMapper transitionMapper) {
+ private static Transition applyRuleTransition(Transition currentTransition, Target toTarget) {
if (isFinal(currentTransition)) {
return currentTransition;
}
@@ -224,8 +198,8 @@ public final class TransitionResolver {
RuleTransitionFactory transitionFactory =
associatedRule.getRuleClassObject().getTransitionFactory();
if (transitionFactory != null) {
- PatchTransition ruleClassTransition = (PatchTransition)
- transitionMapper.map(transitionFactory.buildTransitionFor(associatedRule));
+ PatchTransition ruleClassTransition =
+ (PatchTransition) transitionFactory.buildTransitionFor(associatedRule);
if (ruleClassTransition != null) {
if (currentTransition == NoTransition.INSTANCE) {
return ruleClassTransition;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransitionProxy.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransitionProxy.java
deleted file mode 100644
index 81baf16503..0000000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransitionProxy.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.analysis.config.transitions;
-
-/**
- * Declaration how the configuration should change when following a label or label list attribute.
- *
- * <p>Do not add to this. This is a legacy interface from when Blaze had limited support for
- * transitions. Use {@link PatchTransition} or {@link SplitTransition} instead.
- */
-@Deprecated
-public enum ConfigurationTransitionProxy implements Transition {
- /** Transition from the target configuration to the data configuration. */
- // TODO(bazel-team): Move this elsewhere.
- DATA,
-}
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 3bc6c97f32..b9ab60e078 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
@@ -112,7 +112,6 @@ 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.CppRuleClasses;
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;
@@ -351,9 +350,7 @@ public class BazelRuleClassProvider {
builder.addSkylarkAccessibleTopLevels("cc_common", CcModule.INSTANCE);
builder.addConfig(CppOptions.class, new CppConfigurationLoader(CpuTransformer.IDENTITY));
-
builder.addBuildInfoFactory(new CppBuildInfo());
- builder.addDynamicTransitionMaps(CppRuleClasses.DYNAMIC_TRANSITIONS_MAP);
builder.addRuleDefinition(new CcToolchainRule());
builder.addRuleDefinition(new CcToolchainSuiteRule());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
index fc471e7411..b4ce785afc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
@@ -30,18 +30,13 @@ import static com.google.devtools.build.lib.rules.cpp.CppFileTypes.PIC_OBJECT_FI
import static com.google.devtools.build.lib.rules.cpp.CppFileTypes.SHARED_LIBRARY;
import static com.google.devtools.build.lib.rules.cpp.CppFileTypes.VERSIONED_SHARED_LIBRARY;
-import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.LanguageDependentFragment.LibraryLanguage;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransitionProxy;
-import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition;
-import com.google.devtools.build.lib.analysis.config.transitions.Transition;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.RuleTransitionFactory;
-import com.google.devtools.build.lib.rules.cpp.transitions.DisableLipoTransition;
import com.google.devtools.build.lib.rules.cpp.transitions.EnableLipoTransition;
import com.google.devtools.build.lib.util.FileTypeSet;
import com.google.devtools.build.lib.util.OsUtils;
@@ -65,17 +60,6 @@ public class CppRuleClasses {
cppConfig.isLipoOptimization() ? cppConfig.getLipoContextLabel() : null);
/**
- * Declares the implementations for C++ transition enums.
- *
- * <p>New transitions should extend {@link PatchTransition}, which avoids the need for this map.
- */
- public static final ImmutableMap<Transition, Transition> DYNAMIC_TRANSITIONS_MAP =
- ImmutableMap.of(
- ConfigurationTransitionProxy.DATA, DisableLipoTransition.INSTANCE
- );
-
-
- /**
* Rule transition factory that enables LIPO on the LIPO context binary (i.e. applies a DATA ->
* TARGET transition).
*/
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
index f20c99ab6b..8d9c1512f2 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
@@ -575,7 +575,7 @@ public final class SkyframeBuildView {
}
SkyframeDependencyResolver createDependencyResolver(Environment env) {
- return new SkyframeDependencyResolver(env, ruleClassProvider.getDynamicTransitionMapper());
+ return new SkyframeDependencyResolver(env);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
index e627332dab..8b3d23daf5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
@@ -18,7 +18,6 @@ import com.google.devtools.build.lib.analysis.DependencyResolver;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.DynamicTransitionMapper;
import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
import com.google.devtools.build.lib.cmdline.Label;
@@ -45,8 +44,7 @@ public final class SkyframeDependencyResolver extends DependencyResolver {
private final Environment env;
- public SkyframeDependencyResolver(Environment env, DynamicTransitionMapper transitionMapper) {
- super(transitionMapper);
+ public SkyframeDependencyResolver(Environment env) {
this.env = env;
}