diff options
author | 2018-01-30 11:04:53 -0800 | |
---|---|---|
committer | 2018-01-30 11:06:58 -0800 | |
commit | be55e1181fd49ef78c24255f66f8d26882730af1 (patch) | |
tree | 606dadfa48c2f3b0065da45d20c382f8ddc1f590 /src/main/java/com/google/devtools/build | |
parent | 34c9b65a873dd9b79bafe3202571e6de81af1b50 (diff) |
Rename Transition to ConfigurationTransition.
PiperOrigin-RevId: 183859414
Diffstat (limited to 'src/main/java/com/google/devtools/build')
20 files changed, 110 insertions, 99 deletions
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 0b27d13785..a3835d836a 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 @@ -45,8 +45,8 @@ import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; 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.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.NoTransition; -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; import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory.CoverageReportActionsWrapper; @@ -1092,7 +1092,8 @@ public class BuildView { return result; } - private Transition getTopLevelTransitionForTarget(Label label, ExtendedEventHandler handler) { + private ConfigurationTransition getTopLevelTransitionForTarget(Label label, + ExtendedEventHandler handler) { Rule rule; try { rule = skyframeExecutor @@ -1114,7 +1115,7 @@ public class BuildView { if (factory == null) { return NoTransition.INSTANCE; } - Transition transition = factory.buildTransitionFor(rule); + ConfigurationTransition transition = factory.buildTransitionFor(rule); return (transition == null) ? NoTransition.INSTANCE : transition; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java b/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java index 318d4f5c4a..5ed5883ccc 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java @@ -16,7 +16,7 @@ package com.google.devtools.build.lib.analysis; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.AspectDescriptor; import java.util.Map; @@ -103,7 +103,7 @@ public abstract class Dependency { * Creates a new {@link Dependency} with the given transition and aspects. */ public static Dependency withTransitionAndAspects( - Label label, Transition transition, AspectCollection aspects) { + Label label, ConfigurationTransition transition, AspectCollection aspects) { return new ConfigurationTransitionDependency(label, transition, aspects); } @@ -141,7 +141,7 @@ public abstract class Dependency { * * @throws IllegalStateException if {@link #hasExplicitConfiguration} returns true. */ - public abstract Transition getTransition(); + public abstract ConfigurationTransition getTransition(); /** * Returns the set of aspects which should be evaluated and combined with the configured target @@ -179,7 +179,7 @@ public abstract class Dependency { } @Override - public Transition getTransition() { + public ConfigurationTransition getTransition() { throw new IllegalStateException( "This dependency has an explicit configuration, not a transition."); } @@ -243,7 +243,7 @@ public abstract class Dependency { } @Override - public Transition getTransition() { + public ConfigurationTransition getTransition() { throw new IllegalStateException( "This dependency has an explicit configuration, not a transition."); } @@ -287,11 +287,11 @@ public abstract class Dependency { * Implementation of a dependency with a given configuration transition. */ private static final class ConfigurationTransitionDependency extends Dependency { - private final Transition transition; + private final ConfigurationTransition transition; private final AspectCollection aspects; public ConfigurationTransitionDependency( - Label label, Transition transition, AspectCollection aspects) { + Label label, ConfigurationTransition transition, AspectCollection aspects) { super(label); this.transition = Preconditions.checkNotNull(transition); this.aspects = Preconditions.checkNotNull(aspects); @@ -309,7 +309,7 @@ public abstract class Dependency { } @Override - public Transition getTransition() { + public ConfigurationTransition getTransition() { return transition; } 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 9290168593..4b44be7b6d 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 @@ -26,10 +26,10 @@ 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; import com.google.devtools.build.lib.analysis.config.TransitionResolver; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.NullTransition; 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; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.events.Location; @@ -718,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( + ConfigurationTransition transition = TransitionResolver.evaluateTransition( ruleConfig, rule, attributeAndOwner.attribute, toTarget, attributeMap); outgoingEdges.put( attributeAndOwner.attribute, 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 1fac30b5f0..ff93d764fd 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,10 +47,10 @@ 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.ConfigurationTransition; 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; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.fileset.FilesetProvider; import com.google.devtools.build.lib.analysis.platform.PlatformInfo; @@ -399,13 +399,13 @@ public final class RuleContext extends TargetContext * Returns a configuration fragment for this this target. */ @Nullable - public <T extends Fragment> T getFragment(Class<T> fragment, Transition transition) { + public <T extends Fragment> T getFragment(Class<T> fragment, ConfigurationTransition transition) { return getFragment(fragment, fragment.getSimpleName(), "", transition); } @Nullable protected <T extends Fragment> T getFragment(Class<T> fragment, String name, - String additionalErrorMessage, Transition transition) { + String additionalErrorMessage, ConfigurationTransition transition) { // TODO(bazel-team): The fragments can also be accessed directly through BuildConfiguration. // Can we lock that down somehow? Preconditions.checkArgument(isLegalFragment(fragment, transition), @@ -423,7 +423,7 @@ public final class RuleContext extends TargetContext } @Nullable - public Fragment getSkylarkFragment(String name, Transition transition) { + public Fragment getSkylarkFragment(String name, ConfigurationTransition transition) { Class<? extends Fragment> fragmentClass = getConfiguration(transition).getSkylarkFragmentByName(name); if (fragmentClass == null) { @@ -437,12 +437,12 @@ public final class RuleContext extends TargetContext transition); } - public ImmutableCollection<String> getSkylarkFragmentNames(Transition transition) { + public ImmutableCollection<String> getSkylarkFragmentNames(ConfigurationTransition transition) { return getConfiguration(transition).getSkylarkFragmentNames(); } public <T extends Fragment> boolean isLegalFragment( - Class<T> fragment, Transition transition) { + Class<T> fragment, ConfigurationTransition transition) { return fragment == universalFragment || fragment == PlatformConfiguration.class || configurationFragmentPolicy.isLegalConfigurationFragment(fragment, transition); @@ -453,7 +453,7 @@ public final class RuleContext extends TargetContext return isLegalFragment(fragment, NoTransition.INSTANCE); } - protected BuildConfiguration getConfiguration(Transition transition) { + protected BuildConfiguration getConfiguration(ConfigurationTransition transition) { return transition.isHostTransition() ? hostConfiguration : getConfiguration(); } @@ -1066,7 +1066,7 @@ public final class RuleContext extends TargetContext throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName + " is not a label type attribute"); } - Transition transition = attributeDefinition.getConfigurationTransition(); + ConfigurationTransition transition = attributeDefinition.getConfigurationTransition(); if (mode == Mode.HOST) { if (!(transition instanceof PatchTransition)) { throw new IllegalStateException(getRule().getLocation() + ": " diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java index f5f489f655..8f6d2b5e66 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java @@ -16,8 +16,8 @@ package com.google.devtools.build.lib.analysis.config; import com.google.devtools.build.lib.analysis.config.transitions.ComposingPatchTransition; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; 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.packages.Rule; import com.google.devtools.build.lib.packages.RuleTransitionFactory; @@ -39,7 +39,7 @@ public class ComposingRuleTransitionFactory implements RuleTransitionFactory { } @Override - public Transition buildTransitionFor(Rule rule) { + public ConfigurationTransition buildTransitionFor(Rule rule) { PatchTransition transition1 = (PatchTransition) rtf1.buildTransitionFor(rule); PatchTransition transition2 = (PatchTransition) rtf2.buildTransitionFor(rule); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java index 57cf02b1f1..fd0a933c91 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java @@ -26,10 +26,10 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import com.google.devtools.build.lib.analysis.Dependency; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; 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; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety; import com.google.devtools.build.lib.events.Event; @@ -182,7 +182,7 @@ public final class ConfigurationResolver { } boolean sameFragments = depFragments.equals(ctgFragments.fragmentClasses()); - Transition transition = dep.getTransition(); + ConfigurationTransition transition = dep.getTransition(); if (sameFragments) { if (transition == NoTransition.INSTANCE) { @@ -299,11 +299,11 @@ public final class ConfigurationResolver { // Treat this as immutable. The only reason this isn't an ImmutableSet is because it // gets bound to a NestedSet.toSet() reference, which returns a Set interface. final Set<Class<? extends BuildConfiguration.Fragment>> fragments; - final Transition transition; + final ConfigurationTransition transition; private final int hashCode; FragmentsAndTransition(Set<Class<? extends BuildConfiguration.Fragment>> fragments, - Transition transition) { + ConfigurationTransition transition) { this.fragments = fragments; this.transition = transition; hashCode = Objects.hash(this.fragments, this.transition); @@ -415,7 +415,7 @@ public final class ConfigurationResolver { */ @VisibleForTesting public static List<BuildOptions> applyTransition(BuildOptions fromOptions, - Transition transition, + ConfigurationTransition transition, Iterable<Class<? extends BuildConfiguration.Fragment>> requiredFragments, RuleClassProvider ruleClassProvider, boolean trimResults) { List<BuildOptions> result; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java index d11e3bd5be..bd053f4fb5 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java @@ -16,7 +16,7 @@ package com.google.devtools.build.lib.analysis.config; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableCollection; import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; @@ -39,9 +39,9 @@ import javax.annotation.Nullable; + "(see <a href=\"../rules.md#fragments\">here</a>).") public class FragmentCollection implements ClassObject { private final RuleContext ruleContext; - private final Transition transition; + private final ConfigurationTransition transition; - public FragmentCollection(RuleContext ruleContext, Transition transition) { + public FragmentCollection(RuleContext ruleContext, ConfigurationTransition transition) { this.ruleContext = ruleContext; this.transition = transition; } @@ -70,7 +70,7 @@ public class FragmentCollection implements ClassObject { return String.format("'%s'", Joiner.on("', '").join(getFieldNames())); } - public static String getConfigurationName(Transition config) { + public static String getConfigurationName(ConfigurationTransition config) { return config.isHostTransition() ? "host" : "target"; } 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 6287e74b57..b78fcebc91 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,11 +18,11 @@ 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.ConfigurationTransition; 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; import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper; import com.google.devtools.build.lib.packages.InputFile; @@ -32,7 +32,7 @@ import com.google.devtools.build.lib.packages.RuleTransitionFactory; import com.google.devtools.build.lib.packages.Target; /** - * Tool for evaluating which {@link Transition}(s) should be applied to given targets. + * Tool for evaluating which {@link ConfigurationTransition}(s) should be applied to given targets. * * <p>For the work of turning these transitions into actual configurations, see {@link * ConfigurationResolver}. @@ -55,8 +55,12 @@ public final class TransitionResolver { * @return the child's configuration, expressed as a diff from the parent's configuration. This * is either a {@link PatchTransition} or {@link SplitTransition}. */ - public static Transition evaluateTransition(BuildConfiguration fromConfig, final Rule fromRule, - final Attribute attribute, final Target toTarget, ConfiguredAttributeMapper attributeMap) { + public static ConfigurationTransition 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. if (usesNullConfiguration(toTarget)) { @@ -89,13 +93,14 @@ public final class TransitionResolver { // The current transition to apply. When multiple transitions are requested, this is a // ComposingSplitTransition, which encapsulates them into a single object so calling code // doesn't need special logic for combinations. - Transition currentTransition = NoTransition.INSTANCE; + ConfigurationTransition currentTransition = NoTransition.INSTANCE; // Apply the parent rule's outgoing transition if it has one. RuleTransitionFactory transitionFactory = fromRule.getRuleClassObject().getOutgoingTransitionFactory(); if (transitionFactory != null) { - Transition transition = transitionFactory.buildTransitionFor(toTarget.getAssociatedRule()); + ConfigurationTransition transition = + transitionFactory.buildTransitionFor(toTarget.getAssociatedRule()); if (transition != null) { currentTransition = composeTransitions(currentTransition, transition); } @@ -121,12 +126,13 @@ public final class TransitionResolver { * 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) { + public static ConfigurationTransition evaluateTopLevelTransition( + TargetAndConfiguration targetAndConfig) { Target target = targetAndConfig.getTarget(); BuildConfiguration fromConfig = targetAndConfig.getConfiguration(); // Top-level transitions (chosen by configuration fragments): - Transition topLevelTransition = fromConfig.topLevelConfigurationHook(target); + ConfigurationTransition topLevelTransition = fromConfig.topLevelConfigurationHook(target); if (topLevelTransition == null) { topLevelTransition = NoTransition.INSTANCE; } @@ -150,7 +156,8 @@ public final class TransitionResolver { * Composes two transitions together efficiently. */ @VisibleForTesting - public static Transition composeTransitions(Transition transition1, Transition transition2) { + public static ConfigurationTransition composeTransitions(ConfigurationTransition transition1, + ConfigurationTransition transition2) { if (isFinal(transition1) || transition2 == NoTransition.INSTANCE) { return transition1; } else if (isFinal(transition2) || transition1 == NoTransition.INSTANCE) { @@ -168,7 +175,7 @@ public final class TransitionResolver { * Returns true if once the given transition is applied to a dep no followup transitions should * be composed after it. */ - private static boolean isFinal(Transition transition) { + private static boolean isFinal(ConfigurationTransition transition) { return (transition == NullTransition.INSTANCE || transition == HostTransition.INSTANCE); } @@ -176,7 +183,8 @@ public final class TransitionResolver { /** * Applies the given split and composes it after an existing transition. */ - private static Transition split(Transition currentTransition, SplitTransition split) { + private static ConfigurationTransition split(ConfigurationTransition currentTransition, + SplitTransition split) { Preconditions.checkState(currentTransition != NullTransition.INSTANCE, "cannot apply splits after null transitions (null transitions are expected to be final)"); Preconditions.checkState(currentTransition != HostTransition.INSTANCE, @@ -190,7 +198,8 @@ public final class TransitionResolver { * @param currentTransition a pre-existing transition to be composed with * @param toTarget rule to examine for transitions */ - private static Transition applyRuleTransition(Transition currentTransition, Target toTarget) { + private static ConfigurationTransition applyRuleTransition( + ConfigurationTransition currentTransition, Target toTarget) { if (isFinal(currentTransition)) { return currentTransition; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java index d36968c21b..1bcbebca68 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java @@ -34,14 +34,15 @@ import java.util.List; * captures all possible combinations. */ public class ComposingSplitTransition implements SplitTransition { - private Transition transition1; - private Transition transition2; + private ConfigurationTransition transition1; + private ConfigurationTransition transition2; /** * Creates a {@link ComposingSplitTransition} that applies the sequence: * {@code fromOptions -> transition1 -> transition2 -> toOptions }. */ - public ComposingSplitTransition(Transition transition1, Transition transition2) { + public ComposingSplitTransition(ConfigurationTransition transition1, + ConfigurationTransition transition2) { this.transition1 = verifySupported(transition1); this.transition2 = verifySupported(transition2); } @@ -59,7 +60,7 @@ public class ComposingSplitTransition implements SplitTransition { * Verifies support for the given transition type. Throws an {@link IllegalArgumentException} if * unsupported. */ - private Transition verifySupported(Transition transition) { + private ConfigurationTransition verifySupported(ConfigurationTransition transition) { Preconditions.checkArgument(transition instanceof PatchTransition || transition instanceof SplitTransition); return transition; @@ -69,7 +70,7 @@ public class ComposingSplitTransition implements SplitTransition { * Applies the given transition over the given {@link BuildOptions}, returns the result. */ // TODO(gregce): move this somewhere more general. This isn't intrinsic to composed splits. - static List<BuildOptions> apply(BuildOptions fromOptions, Transition transition) { + static List<BuildOptions> apply(BuildOptions fromOptions, ConfigurationTransition transition) { if (transition instanceof PatchTransition) { return ImmutableList.<BuildOptions>of(((PatchTransition) transition).apply(fromOptions)); } else if (transition instanceof SplitTransition) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/Transition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransition.java index cf647fd0da..7fb3a66f36 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/Transition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ConfigurationTransition.java @@ -17,7 +17,7 @@ package com.google.devtools.build.lib.analysis.config.transitions; /** * A configuration transition. */ -public interface Transition { +public interface ConfigurationTransition { /** * Does this transition switch to a "host" configuration? */ diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/PatchTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/PatchTransition.java index 3fd096e89d..451148ee60 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/PatchTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/PatchTransition.java @@ -48,7 +48,7 @@ import com.google.devtools.build.lib.analysis.config.BuildOptions; * {@link com.google.devtools.build.lib.analysis.config.BuildOptions} doesn't currently * enforce immutability. So care must be taken not to modify the wrong instance. */ -public interface PatchTransition extends Transition { +public interface PatchTransition extends ConfigurationTransition { /** * Applies the transition. diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/SplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/SplitTransition.java index dd1cea17ee..05ecfaa226 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/SplitTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/SplitTransition.java @@ -25,7 +25,7 @@ import java.util.List; */ @ThreadSafety.Immutable @FunctionalInterface -public interface SplitTransition extends Transition { +public interface SplitTransition extends ConfigurationTransition { /** * Return the list of {@code BuildOptions} after splitting; empty if not applicable. */ diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java index da5dcc5fe9..3036a68d9b 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java @@ -22,7 +22,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import com.google.common.collect.SetMultimap; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy; @@ -428,7 +428,7 @@ public final class AspectDefinition { * * <p>The value is inherited by subclasses. */ - public Builder requiresConfigurationFragments(Transition transition, + public Builder requiresConfigurationFragments(ConfigurationTransition transition, Class<?>... configurationFragments) { configurationFragmentPolicy.requiresConfigurationFragments(transition, ImmutableSet.copyOf(configurationFragments)); @@ -454,15 +454,15 @@ public final class AspectDefinition { * fragments to be present in the given configuration that isn't the aspect's configuration but * is also readable by the aspect. * - * <p>In contrast to {@link #requiresConfigurationFragments(Transition, Class...)}, this method - * takes the Skylark module names of fragments instead of their classes. + * <p>In contrast to {@link #requiresConfigurationFragments(ConfigurationTransition, Class...)}, + * this method takes the Skylark module names of fragments instead of their classes. * * <p>You probably don't want to use this, because aspects generally shouldn't read * configurations other than their own. If you want to declare host config fragments, see * {@link com.google.devtools.build.lib.analysis.config.ConfigAwareAspectBuilder}. */ - public Builder requiresConfigurationFragmentsBySkylarkModuleName(Transition transition, - Collection<String> configurationFragmentNames) { + public Builder requiresConfigurationFragmentsBySkylarkModuleName( + ConfigurationTransition transition, Collection<String> configurationFragmentNames) { configurationFragmentPolicy.requiresConfigurationFragmentsBySkylarkModuleName(transition, configurationFragmentNames); return this; diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java index 22d39ee88f..d6b1cebef1 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java @@ -29,9 +29,9 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Ordering; import com.google.common.collect.Sets; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.NoTransition; import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassNamePredicate; @@ -359,7 +359,7 @@ public final class Attribute implements Comparable<Attribute> { public static class Builder <TYPE> { private final String name; private final Type<TYPE> type; - private Transition configTransition = NoTransition.INSTANCE; + private ConfigurationTransition configTransition = NoTransition.INSTANCE; private RuleClassNamePredicate allowedRuleClassesForLabels = ANY_RULE; private RuleClassNamePredicate allowedRuleClassesForLabelsWarning = NO_RULE; private SplitTransitionProvider splitTransitionProvider; @@ -498,7 +498,7 @@ public final class Attribute implements Comparable<Attribute> { * Defines the configuration transition for this attribute. Defaults to * {@code NONE}. */ - public Builder<TYPE> cfg(Transition configTransition) { + public Builder<TYPE> cfg(ConfigurationTransition configTransition) { Preconditions.checkState(this.configTransition == NoTransition.INSTANCE, "the configuration transition is already set"); if (configTransition instanceof SplitTransition) { @@ -1734,7 +1734,7 @@ public final class Attribute implements Comparable<Attribute> { // (We assume a hypothetical Type.isValid(Object) predicate.) private final Object defaultValue; - private final Transition configTransition; + private final ConfigurationTransition configTransition; private final SplitTransitionProvider splitTransitionProvider; @@ -1789,7 +1789,7 @@ public final class Attribute implements Comparable<Attribute> { Type<?> type, Set<PropertyFlag> propertyFlags, Object defaultValue, - Transition configTransition, + ConfigurationTransition configTransition, SplitTransitionProvider splitTransitionProvider, RuleClassNamePredicate allowedRuleClassesForLabels, RuleClassNamePredicate allowedRuleClassesForLabelsWarning, @@ -1915,7 +1915,7 @@ public final class Attribute implements Comparable<Attribute> { * Returns the configuration transition for this attribute for label or label * list attributes. For other attributes it will always return {@code NONE}. */ - public Transition getConfigurationTransition() { + public ConfigurationTransition getConfigurationTransition() { return configTransition; } diff --git a/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java b/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java index 83d5aa39f3..0dabcab865 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java +++ b/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java @@ -18,8 +18,8 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.SetMultimap; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.NoTransition; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import java.util.Collection; import java.util.Set; @@ -65,13 +65,13 @@ public final class ConfigurationFragmentPolicy { * Sets of configuration fragment classes required by this rule, a set for each configuration. * Duplicate entries will automatically be ignored by the SetMultimap. */ - private final SetMultimap<Transition, Class<?>> requiredConfigurationFragments + private final SetMultimap<ConfigurationTransition, Class<?>> requiredConfigurationFragments = LinkedHashMultimap.create(); /** * Sets of configuration fragment names required by this rule, a set for each configuration. * Duplicate entries will automatically be ignored by the SetMultimap. */ - private final SetMultimap<Transition, String> requiredConfigurationFragmentNames + private final SetMultimap<ConfigurationTransition, String> requiredConfigurationFragmentNames = LinkedHashMultimap.create(); private MissingFragmentPolicy missingFragmentPolicy = MissingFragmentPolicy.FAIL_ANALYSIS; @@ -93,7 +93,7 @@ public final class ConfigurationFragmentPolicy { * * <p>The value is inherited by subclasses. */ - public Builder requiresConfigurationFragments(Transition transition, + public Builder requiresConfigurationFragments(ConfigurationTransition transition, Collection<Class<?>> configurationFragments) { // We can relax this assumption if needed. But it's already sketchy to let a rule see more // than its own configuration. So we don't want to casually proliferate this pattern. @@ -126,13 +126,13 @@ public final class ConfigurationFragmentPolicy { * configuration. Valid transition values are HOST for the host configuration and NONE for * the target configuration. * - * <p>In contrast to {@link #requiresConfigurationFragments(Transition, + * <p>In contrast to {@link #requiresConfigurationFragments(ConfigurationTransition, * Collection)}, this method takes the names of fragments (as determined by * {@link SkylarkModule.Resolver}) instead of their * classes. */ - public Builder requiresConfigurationFragmentsBySkylarkModuleName(Transition transition, - Collection<String> configurationFragmentNames) { + public Builder requiresConfigurationFragmentsBySkylarkModuleName( + ConfigurationTransition transition, Collection<String> configurationFragmentNames) { // We can relax this assumption if needed. But it's already sketchy to let a rule see more // than its own configuration. So we don't want to casually proliferate this pattern. Preconditions.checkArgument( @@ -173,14 +173,14 @@ public final class ConfigurationFragmentPolicy { * A dictionary that maps configurations (NONE for target configuration, HOST for host * configuration) to required configuration fragments. */ - private final ImmutableSetMultimap<Transition, Class<?>> + private final ImmutableSetMultimap<ConfigurationTransition, Class<?>> requiredConfigurationFragments; /** * A dictionary that maps configurations (NONE for target configuration, HOST for host * configuration) to lists of Skylark module names of required configuration fragments. */ - private final ImmutableSetMultimap<Transition, String> + private final ImmutableSetMultimap<ConfigurationTransition, String> requiredConfigurationFragmentNames; /** @@ -189,8 +189,8 @@ public final class ConfigurationFragmentPolicy { private final MissingFragmentPolicy missingFragmentPolicy; private ConfigurationFragmentPolicy( - ImmutableSetMultimap<Transition, Class<?>> requiredConfigurationFragments, - ImmutableSetMultimap<Transition, String> requiredConfigurationFragmentNames, + ImmutableSetMultimap<ConfigurationTransition, Class<?>> requiredConfigurationFragments, + ImmutableSetMultimap<ConfigurationTransition, String> requiredConfigurationFragmentNames, MissingFragmentPolicy missingFragmentPolicy) { this.requiredConfigurationFragments = requiredConfigurationFragments; this.requiredConfigurationFragmentNames = requiredConfigurationFragmentNames; @@ -213,7 +213,7 @@ public final class ConfigurationFragmentPolicy { * specified in the same configuration that was passed. */ public boolean isLegalConfigurationFragment( - Class<?> configurationFragment, Transition config) { + Class<?> configurationFragment, ConfigurationTransition config) { return requiredConfigurationFragments.containsValue(configurationFragment) || hasLegalFragmentName(configurationFragment, config); } @@ -232,7 +232,7 @@ public final class ConfigurationFragmentPolicy { * specified configuration (target or host). */ private boolean hasLegalFragmentName( - Class<?> configurationFragment, Transition transition) { + Class<?> configurationFragment, ConfigurationTransition transition) { return requiredConfigurationFragmentNames .containsEntry(transition, SkylarkModule.Resolver.resolveName(configurationFragment)); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java index a12c08f9c2..2d0cd749d1 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java +++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java @@ -30,7 +30,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Ordering; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.cmdline.PackageIdentifier; @@ -516,14 +516,14 @@ public class RuleClass { * A RuleTransitionFactory which always returns the same transition. */ private static final class FixedTransitionFactory implements RuleTransitionFactory { - private final Transition transition; + private final ConfigurationTransition transition; - private FixedTransitionFactory(Transition transition) { + private FixedTransitionFactory(ConfigurationTransition transition) { this.transition = transition; } @Override - public Transition buildTransitionFor(Rule rule) { + public ConfigurationTransition buildTransitionFor(Rule rule) { return transition; } } @@ -716,7 +716,7 @@ public class RuleClass { * * <p>The value is inherited by subclasses. */ - public Builder requiresConfigurationFragments(Transition transition, + public Builder requiresConfigurationFragments(ConfigurationTransition transition, Class<?>... configurationFragments) { configurationFragmentPolicy.requiresConfigurationFragments( transition, @@ -748,8 +748,8 @@ public class RuleClass { * fragments to be present in the given configuration that isn't the rule's configuration but * is also readable by the rule. * - * <p>In contrast to {@link #requiresConfigurationFragments(Transition, Class...)}, this method - * takes Skylark module names of fragments instead of their classes. + * <p>In contrast to {@link #requiresConfigurationFragments(ConfigurationTransition, Class...)}, + * this method takes Skylark module names of fragments instead of their classes. * * * <p>You probably don't want to use this, because rules generally shouldn't read configurations * other than their own. If you want to declare host config fragments, see @@ -757,8 +757,8 @@ public class RuleClass { * * <p>The value is inherited by subclasses. */ - public Builder requiresConfigurationFragmentsBySkylarkModuleName(Transition transition, - Collection<String> configurationFragmentNames) { + public Builder requiresConfigurationFragmentsBySkylarkModuleName( + ConfigurationTransition transition, Collection<String> configurationFragmentNames) { configurationFragmentPolicy.requiresConfigurationFragmentsBySkylarkModuleName(transition, configurationFragmentNames); return this; @@ -838,7 +838,7 @@ public class RuleClass { * <p>If you need the transition to depend on the rule it's being applied to, use * {@link #cfg(RuleTransitionFactory)}. */ - public Builder cfg(Transition transition) { + public Builder cfg(ConfigurationTransition transition) { Preconditions.checkState(type != RuleClassType.ABSTRACT, "Setting not inherited property (cfg) of abstract rule class '%s'", name); Preconditions.checkState(this.transitionFactory == null, @@ -851,8 +851,8 @@ public class RuleClass { /** * Applies the given transition factory to all incoming edges for this rule class. * - * <p>Unlike{@link #cfg(Transition)}, the factory can examine the rule when deciding what - * transition to use. + * <p>Unlike{@link #cfg(ConfigurationTransition)}, the factory can examine the rule when + * deciding what transition to use. */ public Builder cfg(RuleTransitionFactory transitionFactory) { Preconditions.checkState(type != RuleClassType.ABSTRACT, diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleTransitionFactory.java b/src/main/java/com/google/devtools/build/lib/packages/RuleTransitionFactory.java index 94613ab5dc..7875a34dd0 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleTransitionFactory.java +++ b/src/main/java/com/google/devtools/build/lib/packages/RuleTransitionFactory.java @@ -14,7 +14,7 @@ package com.google.devtools.build.lib.packages; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import javax.annotation.Nullable; /** @@ -28,5 +28,5 @@ public interface RuleTransitionFactory { * If this class determines that no transition should be performed, it should return {@code null}. */ @Nullable - Transition buildTransitionFor(Rule rule); + ConfigurationTransition buildTransitionFor(Rule rule); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java index 3391ccc9f4..35d38c6510 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java @@ -18,7 +18,7 @@ import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; @@ -38,7 +38,7 @@ public class SkylarkDefinedAspect implements SkylarkExportable, SkylarkAspect { private final ImmutableSet<SkylarkProviderIdentifier> provides; private final ImmutableSet<String> paramAttributes; private final ImmutableSet<String> fragments; - private final Transition hostTransition; + private final ConfigurationTransition hostTransition; private final ImmutableSet<String> hostFragments; private final ImmutableList<Label> requiredToolchains; @@ -54,7 +54,7 @@ public class SkylarkDefinedAspect implements SkylarkExportable, SkylarkAspect { ImmutableSet<String> paramAttributes, ImmutableSet<String> fragments, // The host transition is in lib.analysis, so we can't reference it directly here. - Transition hostTransition, + ConfigurationTransition hostTransition, ImmutableSet<String> hostFragments, ImmutableList<Label> requiredToolchains, Environment funcallEnv) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java index 937dee2664..81cc6d308a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java @@ -37,8 +37,8 @@ import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; 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.HostTransition; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; -import com.google.devtools.build.lib.analysis.config.transitions.Transition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.Attribute; @@ -300,7 +300,7 @@ public final class AndroidRuleClasses { ImmutableSet.of("android_binary", "android_library"); @Override - public Transition buildTransitionFor(Rule depRule) { + public ConfigurationTransition buildTransitionFor(Rule depRule) { return keepFilterRuleClasses.contains(depRule.getRuleClass()) ? null : ResourceFilterFactory.REMOVE_DYNAMICALLY_CONFIGURED_RESOURCE_FILTERING_TRANSITION; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index 7c123ff3a0..7ae5ac59e7 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -74,9 +74,9 @@ 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.HostTransition; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; +import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; 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.configuredtargets.MergedConfiguredTarget; import com.google.devtools.build.lib.analysis.configuredtargets.MergedConfiguredTarget.DuplicateException; import com.google.devtools.build.lib.cmdline.Label; @@ -1132,7 +1132,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { // The host configuration inherits the data, not target options. This is so host tools don't // apply LIPO. BuildConfiguration firstTargetConfig = topLevelTargetConfigs.get(0); - Transition dataTransition = + ConfigurationTransition dataTransition = ((ConfiguredRuleClassProvider) ruleClassProvider).getLipoDataTransition(); BuildOptions dataOptions = dataTransition != NoTransition.INSTANCE ? ((PatchTransition) dataTransition).apply(firstTargetConfig.getOptions()) @@ -1649,7 +1649,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { ExtendedEventHandler eventHandler, Label label, BuildConfiguration configuration, - Transition transition) { + ConfigurationTransition transition) { ConfiguredTargetAndTarget configuredTargetAndTarget = Iterables.getFirst( getConfiguredTargetsForTesting( |