Rename RuleTransitionData to AttributeTransitionData. Rule transitions will use a different data holder. part of work on #7814. Closes #7918. PiperOrigin-RevId: 241541559
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 9fa240c..536cb10 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
@@ -37,6 +37,7 @@ import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault; import com.google.devtools.build.lib.packages.AttributeMap; +import com.google.devtools.build.lib.packages.AttributeTransitionData; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper; import com.google.devtools.build.lib.packages.EnvironmentGroup; @@ -45,7 +46,6 @@ import com.google.devtools.build.lib.packages.PackageGroup; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass; -import com.google.devtools.build.lib.packages.RuleTransitionData; import com.google.devtools.build.lib.packages.RuleTransitionFactory; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.syntax.EvalException; @@ -344,7 +344,7 @@ aspects, attribute.getName(), entry.getKey().getOwningAspect(), propagatingAspects); ConfigurationTransition attributeTransition = - attribute.getTransitionFactory().create(RuleTransitionData.create(attributeMap)); + attribute.getTransitionFactory().create(AttributeTransitionData.create(attributeMap)); partiallyResolvedDeps.put( entry.getKey(), PartiallyResolvedDependency.of(toLabel, attributeTransition, propagatingAspects.build()));
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 37f682a..a669df3 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
@@ -71,6 +71,7 @@ import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.AttributeMap; +import com.google.devtools.build.lib.packages.AttributeTransitionData; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.BuiltinProvider; import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy; @@ -89,7 +90,6 @@ import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleErrorConsumer; -import com.google.devtools.build.lib.packages.RuleTransitionData; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.packages.TargetUtils; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData; @@ -843,7 +843,7 @@ attributeDefinition .getTransitionFactory() .create( - RuleTransitionData.create( + AttributeTransitionData.create( ConfiguredAttributeMapper.of(rule, configConditions))); BuildOptions fromOptions = getConfiguration().getOptions(); List<BuildOptions> splitOptions = transition.split(fromOptions); @@ -1173,7 +1173,7 @@ throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName + " is not a label type attribute"); } - TransitionFactory<RuleTransitionData> transitionFactory = + TransitionFactory<AttributeTransitionData> transitionFactory = attributeDefinition.getTransitionFactory(); if (mode == Mode.HOST) { if (transitionFactory.isSplit()) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java index d9dc590..eb3d662 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java
@@ -27,8 +27,8 @@ import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.AttributeMap; +import com.google.devtools.build.lib.packages.AttributeTransitionData; import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper; -import com.google.devtools.build.lib.packages.RuleTransitionData; import com.google.devtools.build.lib.packages.StructImpl; import com.google.devtools.build.lib.packages.StructProvider; import com.google.devtools.build.lib.skylarkbuildapi.SplitTransitionProviderApi; @@ -52,7 +52,7 @@ * instead of just labels (see {@link SkylarkAttributesCollection#addAttribute}). */ public class StarlarkAttributeTransitionProvider - implements TransitionFactory<RuleTransitionData>, SplitTransitionProviderApi { + implements TransitionFactory<AttributeTransitionData>, SplitTransitionProviderApi { private final StarlarkDefinedConfigTransition starlarkDefinedConfigTransition; StarlarkAttributeTransitionProvider( @@ -66,7 +66,7 @@ } @Override - public SplitTransition create(RuleTransitionData data) { + public SplitTransition create(AttributeTransitionData data) { AttributeMap attributeMap = data.attributes(); Preconditions.checkArgument(attributeMap instanceof ConfiguredAttributeMapper); return new FunctionSplitTransition(
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 47a27c1..a1c80d8 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
@@ -86,11 +86,12 @@ // TODO(https://github.com/bazelbuild/bazel/issues/7814): Remove this, have callers create // factories. @AutoValue - abstract static class StaticTransitionFactory implements TransitionFactory<RuleTransitionData> { + abstract static class StaticTransitionFactory + implements TransitionFactory<AttributeTransitionData> { abstract ConfigurationTransition transition(); @Override - public ConfigurationTransition create(RuleTransitionData unused) { + public ConfigurationTransition create(AttributeTransitionData unused) { return transition(); } @@ -104,7 +105,7 @@ return transition() instanceof SplitTransition; } - static TransitionFactory<RuleTransitionData> of(ConfigurationTransition transition) { + static TransitionFactory<AttributeTransitionData> of(ConfigurationTransition transition) { return new AutoValue_Attribute_StaticTransitionFactory(transition); } } @@ -379,7 +380,7 @@ public static class ImmutableAttributeFactory { private final Type<?> type; private final String doc; - private final TransitionFactory<RuleTransitionData> transitionFactory; + private final TransitionFactory<AttributeTransitionData> transitionFactory; private final RuleClassNamePredicate allowedRuleClassesForLabels; private final RuleClassNamePredicate allowedRuleClassesForLabelsWarning; private final FileTypeSet allowedFileTypesForLabels; @@ -399,7 +400,7 @@ String doc, ImmutableSet<PropertyFlag> propertyFlags, Object value, - TransitionFactory<RuleTransitionData> transitionFactory, + TransitionFactory<AttributeTransitionData> transitionFactory, RuleClassNamePredicate allowedRuleClassesForLabels, RuleClassNamePredicate allowedRuleClassesForLabelsWarning, FileTypeSet allowedFileTypesForLabels, @@ -486,7 +487,8 @@ public static class Builder <TYPE> { private final String name; private final Type<TYPE> type; - private TransitionFactory<RuleTransitionData> transitionFactory = NoTransition.createFactory(); + private TransitionFactory<AttributeTransitionData> transitionFactory = + NoTransition.createFactory(); private RuleClassNamePredicate allowedRuleClassesForLabels = ANY_RULE; private RuleClassNamePredicate allowedRuleClassesForLabelsWarning = NO_RULE; private FileTypeSet allowedFileTypesForLabels; @@ -622,7 +624,7 @@ } /** Defines the configuration transition for this attribute. */ - public Builder<TYPE> cfg(TransitionFactory<RuleTransitionData> transitionFactory) { + public Builder<TYPE> cfg(TransitionFactory<AttributeTransitionData> transitionFactory) { Preconditions.checkNotNull(transitionFactory); Preconditions.checkState( NoTransition.isInstance(this.transitionFactory), @@ -1924,7 +1926,7 @@ // (We assume a hypothetical Type.isValid(Object) predicate.) private final Object defaultValue; - private final TransitionFactory<RuleTransitionData> transitionFactory; + private final TransitionFactory<AttributeTransitionData> transitionFactory; /** * For label or label-list attributes, this predicate returns which rule @@ -1981,7 +1983,7 @@ Type<?> type, Set<PropertyFlag> propertyFlags, Object defaultValue, - TransitionFactory<RuleTransitionData> transitionFactory, + TransitionFactory<AttributeTransitionData> transitionFactory, RuleClassNamePredicate allowedRuleClassesForLabels, RuleClassNamePredicate allowedRuleClassesForLabelsWarning, FileTypeSet allowedFileTypesForLabels, @@ -2143,7 +2145,7 @@ * Returns the configuration transition factory for this attribute for label or label list * attributes. For other attributes it will always return {@code NONE}. */ - public TransitionFactory<RuleTransitionData> getTransitionFactory() { + public TransitionFactory<AttributeTransitionData> getTransitionFactory() { return transitionFactory; }
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleTransitionData.java b/src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java similarity index 84% rename from src/main/java/com/google/devtools/build/lib/packages/RuleTransitionData.java rename to src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java index 552fb1c0..a43c760 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleTransitionData.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AttributeTransitionData.java
@@ -23,15 +23,15 @@ // This class is in lib.packages in order to access AttributeMap, which is not available to // the lib.analysis.config.transitions package. @AutoValue -public abstract class RuleTransitionData { +public abstract class AttributeTransitionData { /** Returns the {@link AttributeMap} which can be used to create a transition. */ public abstract AttributeMap attributes(); // TODO(https://github.com/bazelbuild/bazel/issues/7814): Add further data fields as needed by // transition factory instances. - /** Returns a new {@link RuleTransitionData} instance. */ - public static RuleTransitionData create(AttributeMap attributes) { - return new AutoValue_RuleTransitionData(attributes); + /** Returns a new {@link AttributeTransitionData} instance. */ + public static AttributeTransitionData create(AttributeMap attributes) { + return new AutoValue_AttributeTransitionData(attributes); } }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java index 65f83db..71e9234 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
@@ -26,8 +26,8 @@ import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory; +import com.google.devtools.build.lib.packages.AttributeTransitionData; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; -import com.google.devtools.build.lib.packages.RuleTransitionData; import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher; @@ -48,7 +48,9 @@ */ // TODO(https://github.com/bazelbuild/bazel/pull/7825): Rename to MultiArchSplitTransitionFactory. public class MultiArchSplitTransitionProvider - implements TransitionFactory<RuleTransitionData>, SplitTransitionProviderApi, SkylarkValue { + implements TransitionFactory<AttributeTransitionData>, + SplitTransitionProviderApi, + SkylarkValue { @VisibleForTesting static final String UNSUPPORTED_PLATFORM_TYPE_ERROR_FORMAT = @@ -129,7 +131,7 @@ } @Override - public SplitTransition create(RuleTransitionData data) { + public SplitTransition create(AttributeTransitionData data) { String platformTypeString = data.attributes().get(PlatformRule.PLATFORM_TYPE_ATTR_NAME, STRING); String minimumOsVersionString = data.attributes().get(PlatformRule.MINIMUM_OS_VERSION, STRING); PlatformType platformType;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java index 41d6ce0..1e179b2 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/CircularDependencyTest.java
@@ -32,9 +32,9 @@ import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault; +import com.google.devtools.build.lib.packages.AttributeTransitionData; import com.google.devtools.build.lib.packages.NoSuchTargetException; import com.google.devtools.build.lib.packages.Package; -import com.google.devtools.build.lib.packages.RuleTransitionData; import com.google.devtools.build.lib.testutil.TestRuleClassProvider; import org.junit.Test; import org.junit.runner.RunWith; @@ -269,9 +269,9 @@ .mandatory() .allowedFileTypes() .cfg( - new TransitionFactory<RuleTransitionData>() { + new TransitionFactory<AttributeTransitionData>() { @Override - public SplitTransition create(RuleTransitionData data) { + public SplitTransition create(AttributeTransitionData data) { return (BuildOptions options) -> { String define = data.attributes().get("define", STRING); BuildOptions newOptions = options.clone();
diff --git a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java index b0320d2..82d6b85 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/AttributeTest.java
@@ -283,7 +283,8 @@ Attribute attr = attr("foo", LABEL).cfg(splitTransition).allowedFileTypes().build(); assertThat(attr.hasSplitConfigurationTransition()).isTrue(); ConfigurationTransition transition = - attr.getTransitionFactory().create(RuleTransitionData.create(FakeAttributeMapper.empty())); + attr.getTransitionFactory() + .create(AttributeTransitionData.create(FakeAttributeMapper.empty())); assertThat(transition).isEqualTo(splitTransition); } @@ -294,7 +295,8 @@ attr("foo", LABEL).cfg(splitTransitionProvider).allowedFileTypes().build(); assertThat(attr.hasSplitConfigurationTransition()).isTrue(); ConfigurationTransition transition = - attr.getTransitionFactory().create(RuleTransitionData.create(FakeAttributeMapper.empty())); + attr.getTransitionFactory() + .create(AttributeTransitionData.create(FakeAttributeMapper.empty())); assertThat(transition).isInstanceOf(TestSplitTransition.class); } @@ -314,9 +316,9 @@ } private static class TestSplitTransitionProvider - implements TransitionFactory<RuleTransitionData> { + implements TransitionFactory<AttributeTransitionData> { @Override - public SplitTransition create(RuleTransitionData data) { + public SplitTransition create(AttributeTransitionData data) { return new TestSplitTransition(); }