diff options
author | gregce <gregce@google.com> | 2018-01-30 06:57:42 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-30 06:59:52 -0800 |
commit | c13c91dc350c0061ef0fc401febc8459396264ef (patch) | |
tree | 62d64a658b93cc9bac0a577cf11b646b84a1aa09 /src/main/java/com/google/devtools/build | |
parent | ad835fb69aab2af390dfcd699c26ed3aeca1cd50 (diff) |
Remove DynamicTransitionMapper, ConfigurationTransitionProxy.
PiperOrigin-RevId: 183826311
Diffstat (limited to 'src/main/java/com/google/devtools/build')
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; } |