Skip to content

Commit

Permalink
Rename RuleTransitionData to AttributeTransitionData.
Browse files Browse the repository at this point in the history
Rule transitions will use a different data holder.

part of work on #7814.

Closes #7918.

PiperOrigin-RevId: 241541559
  • Loading branch information
katre authored and copybara-github committed Apr 2, 2019
1 parent 800b103 commit 2c0dece
Show file tree
Hide file tree
Showing 8 changed files with 38 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -344,7 +344,7 @@ public final OrderedSetMultimap<DependencyKind, Dependency> dependentNodeMap(
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()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -843,7 +843,7 @@ public List<ConfiguredTargetAndData> getPrerequisiteConfiguredTargetAndTargets(
attributeDefinition
.getTransitionFactory()
.create(
RuleTransitionData.create(
AttributeTransitionData.create(
ConfiguredAttributeMapper.of(rule, configConditions)));
BuildOptions fromOptions = getConfiguration().getOptions();
List<BuildOptions> splitOptions = transition.split(fromOptions);
Expand Down Expand Up @@ -1173,7 +1173,7 @@ private void checkAttribute(String attributeName, Mode mode) {
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()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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(
Expand All @@ -66,7 +66,7 @@ public StarlarkDefinedConfigTransition getStarlarkDefinedConfigTransitionForTest
}

@Override
public SplitTransition create(RuleTransitionData data) {
public SplitTransition create(AttributeTransitionData data) {
AttributeMap attributeMap = data.attributes();
Preconditions.checkArgument(attributeMap instanceof ConfiguredAttributeMapper);
return new FunctionSplitTransition(
Expand Down
22 changes: 12 additions & 10 deletions src/main/java/com/google/devtools/build/lib/packages/Attribute.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,12 @@ public final class Attribute implements Comparable<Attribute> {
// 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();
}

Expand All @@ -104,7 +105,7 @@ public boolean isSplit() {
return transition() instanceof SplitTransition;
}

static TransitionFactory<RuleTransitionData> of(ConfigurationTransition transition) {
static TransitionFactory<AttributeTransitionData> of(ConfigurationTransition transition) {
return new AutoValue_Attribute_StaticTransitionFactory(transition);
}
}
Expand Down Expand Up @@ -379,7 +380,7 @@ public static <TYPE> Attribute.Builder<TYPE> attr(String name, Type<TYPE> type)
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;
Expand All @@ -399,7 +400,7 @@ public static class ImmutableAttributeFactory {
String doc,
ImmutableSet<PropertyFlag> propertyFlags,
Object value,
TransitionFactory<RuleTransitionData> transitionFactory,
TransitionFactory<AttributeTransitionData> transitionFactory,
RuleClassNamePredicate allowedRuleClassesForLabels,
RuleClassNamePredicate allowedRuleClassesForLabelsWarning,
FileTypeSet allowedFileTypesForLabels,
Expand Down Expand Up @@ -486,7 +487,8 @@ public Attribute build(String name) {
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;
Expand Down Expand Up @@ -622,7 +624,7 @@ public Builder<TYPE> hasAnalysisTestTransition() {
}

/** 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),
Expand Down Expand Up @@ -1924,7 +1926,7 @@ public static LabelListLateBoundDefault<Void> fromRuleAndAttributesOnly(
// (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
Expand Down Expand Up @@ -1981,7 +1983,7 @@ public static LabelListLateBoundDefault<Void> fromRuleAndAttributesOnly(
Type<?> type,
Set<PropertyFlag> propertyFlags,
Object defaultValue,
TransitionFactory<RuleTransitionData> transitionFactory,
TransitionFactory<AttributeTransitionData> transitionFactory,
RuleClassNamePredicate allowedRuleClassesForLabels,
RuleClassNamePredicate allowedRuleClassesForLabelsWarning,
FileTypeSet allowedFileTypesForLabels,
Expand Down Expand Up @@ -2143,7 +2145,7 @@ public boolean hasAnalysisTestTransition() {
* 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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 =
Expand Down Expand Up @@ -129,7 +131,7 @@ public static void validateMinimumOs(RuleContext ruleContext) throws RuleErrorEx
}

@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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -269,9 +269,9 @@ public void testAspectCycle() throws Exception {
.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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -283,7 +283,8 @@ public void testSplitTransition() throws Exception {
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);
}

Expand All @@ -294,7 +295,8 @@ public void testSplitTransitionProvider() throws Exception {
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);
}

Expand All @@ -314,9 +316,9 @@ public List<BuildOptions> split(BuildOptions buildOptions) {
}

private static class TestSplitTransitionProvider
implements TransitionFactory<RuleTransitionData> {
implements TransitionFactory<AttributeTransitionData> {
@Override
public SplitTransition create(RuleTransitionData data) {
public SplitTransition create(AttributeTransitionData data) {
return new TestSplitTransition();
}

Expand Down

0 comments on commit 2c0dece

Please sign in to comment.