aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2017-12-22 10:01:18 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-12-22 10:03:21 -0800
commitb6b2eaae47ef925aba062f5db4fe69c19705e5ae (patch)
treeb8021ef795684849b00574e092ba8cf98f86e769 /src/main/java
parent5892f3a08113f93c5f2570304f13c2047f24f7a5 (diff)
Replace Attribute.Transition with config.transitions.Transition.
PiperOrigin-RevId: 179936355
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD22
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/Dependency.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/ComposingRuleTransitionFactory.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/PatchTransition.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Attribute.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RuleClass.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RuleTransitionFactory.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java5
23 files changed, 78 insertions, 61 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 6418d6d012..5ebf3384f5 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -293,6 +293,26 @@ java_library(
],
)
+# Provides core configuration transition abstractions and Blaze-common (i.e not
+# rule-specific) transitions.
+java_library(
+ name = "config-transitions",
+ srcs = glob([
+ "analysis/config/transitions/*.java",
+ ]) + [
+ "analysis/config/BuildOptions.java",
+ "analysis/config/FragmentOptions.java",
+ ],
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib/cmdline",
+ "//src/main/java/com/google/devtools/build/lib/concurrent",
+ "//src/main/java/com/google/devtools/common/options",
+ "//src/main/java/com/google/devtools/common/options:invocation_policy",
+ "//src/main/protobuf:invocation_policy_java_proto",
+ "//third_party:guava",
+ ],
+)
+
java_library(
name = "syntax",
srcs = glob([
@@ -348,6 +368,7 @@ java_library(
],
deps = [
"//src/main/java/com/google/devtools/build/lib:config-matching-provider",
+ "//src/main/java/com/google/devtools/build/lib:config-transitions",
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:skylarkinterface",
"//src/main/java/com/google/devtools/build/lib:syntax",
@@ -424,6 +445,7 @@ java_library(
"analysis/actions/*.java",
"analysis/buildinfo/*.java",
"analysis/config/*.java",
+ "analysis/config/transitions/*.java",
"analysis/configuredtargets/*.java",
"analysis/constraints/*.java",
"analysis/extra/*.java",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index d8ec317c07..35ed29b55b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -35,12 +35,12 @@ import com.google.devtools.build.lib.analysis.config.DynamicTransitionMapper;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.config.PatchTransition;
import com.google.devtools.build.lib.analysis.config.RunUnder;
+import com.google.devtools.build.lib.analysis.config.transitions.Transition;
import com.google.devtools.build.lib.analysis.constraints.EnvironmentRule;
import com.google.devtools.build.lib.analysis.test.TestConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
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 816dba9d43..222a250b4e 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,6 +45,7 @@ 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.InvalidConfigurationException;
import com.google.devtools.build.lib.analysis.config.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;
import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory.CoverageReportActionsWrapper;
@@ -62,7 +63,6 @@ import com.google.devtools.build.lib.packages.AspectDescriptor;
import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
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 2c0bd9e0f6..beb12bfa35 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
@@ -34,6 +34,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactor
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.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;
@@ -213,7 +214,7 @@ 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<Attribute.Transition, Attribute.Transition> dynamicTransitionMaps
+ private ImmutableMap.Builder<Transition, Transition> dynamicTransitionMaps
= ImmutableMap.builder();
private Class<? extends BuildConfiguration.Fragment> universalFragment;
private PrerequisiteValidator prerequisiteValidator;
@@ -330,7 +331,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
return this;
}
- public Builder addDynamicTransitionMaps(Map<Attribute.Transition, Attribute.Transition> maps) {
+ public Builder addDynamicTransitionMaps(Map<Transition, Transition> maps) {
dynamicTransitionMaps.putAll(maps);
return this;
}
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 a1e974b75b..318d4f5c4a 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,9 +16,9 @@ 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.cmdline.Label;
import com.google.devtools.build.lib.packages.AspectDescriptor;
-import com.google.devtools.build.lib.packages.Attribute;
import java.util.Map;
import java.util.Objects;
import javax.annotation.Nullable;
@@ -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, Attribute.Transition transition, AspectCollection aspects) {
+ Label label, Transition 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 Attribute.Transition getTransition();
+ public abstract Transition 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 Attribute.Transition getTransition() {
+ public Transition getTransition() {
throw new IllegalStateException(
"This dependency has an explicit configuration, not a transition.");
}
@@ -243,7 +243,7 @@ public abstract class Dependency {
}
@Override
- public Attribute.Transition getTransition() {
+ public Transition 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 Attribute.Transition transition;
+ private final Transition transition;
private final AspectCollection aspects;
public ConfigurationTransitionDependency(
- Label label, Attribute.Transition transition, AspectCollection aspects) {
+ Label label, Transition 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 Attribute.Transition getTransition() {
+ public Transition 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 8fbdf4bf32..7b9d60d175 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
@@ -27,6 +27,7 @@ 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.PatchTransition;
import com.google.devtools.build.lib.analysis.config.TransitionResolver;
+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;
@@ -723,7 +724,7 @@ public abstract class DependencyResolver {
if (toTarget == null) {
return; // Skip this round: we still need to Skyframe-evaluate the dep's target.
}
- Attribute.Transition transition = transitionResolver.evaluateTransition(
+ Transition 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 4462ae4bee..6abf4912a1 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,6 +47,7 @@ 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.PatchTransition;
+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;
@@ -389,13 +390,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, Attribute.Transition transition) {
+ public <T extends Fragment> T getFragment(Class<T> fragment, Transition transition) {
return getFragment(fragment, fragment.getSimpleName(), "", transition);
}
@Nullable
protected <T extends Fragment> T getFragment(Class<T> fragment, String name,
- String additionalErrorMessage, Attribute.Transition transition) {
+ String additionalErrorMessage, Transition transition) {
// TODO(bazel-team): The fragments can also be accessed directly through BuildConfiguration.
// Can we lock that down somehow?
Preconditions.checkArgument(isLegalFragment(fragment, transition),
@@ -413,7 +414,7 @@ public final class RuleContext extends TargetContext
}
@Nullable
- public Fragment getSkylarkFragment(String name, Attribute.Transition transition) {
+ public Fragment getSkylarkFragment(String name, Transition transition) {
Class<? extends Fragment> fragmentClass =
getConfiguration(transition).getSkylarkFragmentByName(name);
if (fragmentClass == null) {
@@ -427,12 +428,12 @@ public final class RuleContext extends TargetContext
transition);
}
- public ImmutableCollection<String> getSkylarkFragmentNames(Attribute.Transition transition) {
+ public ImmutableCollection<String> getSkylarkFragmentNames(Transition transition) {
return getConfiguration(transition).getSkylarkFragmentNames();
}
public <T extends Fragment> boolean isLegalFragment(
- Class<T> fragment, Attribute.Transition transition) {
+ Class<T> fragment, Transition transition) {
return fragment == universalFragment
|| fragment == PlatformConfiguration.class
|| configurationFragmentPolicy.isLegalConfigurationFragment(fragment, transition);
@@ -443,7 +444,7 @@ public final class RuleContext extends TargetContext
return isLegalFragment(fragment, ConfigurationTransition.NONE);
}
- protected BuildConfiguration getConfiguration(Attribute.Transition transition) {
+ protected BuildConfiguration getConfiguration(Transition transition) {
return transition.isHostTransition() ? hostConfiguration : getConfiguration();
}
@@ -1056,7 +1057,7 @@ public final class RuleContext extends TargetContext
throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not a label type attribute");
}
- Attribute.Transition transition = attributeDefinition.getConfigurationTransition();
+ Transition 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 d8e1c55332..a6a54a28a6 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
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.analysis.config;
-import com.google.devtools.build.lib.packages.Attribute;
+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;
@@ -37,7 +37,7 @@ public class ComposingRuleTransitionFactory implements RuleTransitionFactory {
}
@Override
- public Attribute.Transition buildTransitionFor(Rule rule) {
+ public Transition 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/ComposingSplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java
index 3241edccff..b984ee4d55 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java
@@ -16,9 +16,9 @@ package com.google.devtools.build.lib.analysis.config;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.config.transitions.Transition;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
import java.util.List;
/**
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 c23d7a8b74..9a16f0b2db 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,6 +26,7 @@ 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.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;
@@ -179,7 +180,7 @@ public final class ConfigurationResolver {
}
boolean sameFragments = depFragments.equals(ctgFragments);
- Attribute.Transition transition = dep.getTransition();
+ Transition transition = dep.getTransition();
if (sameFragments) {
if (transition == Attribute.ConfigurationTransition.NONE) {
@@ -291,11 +292,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 Attribute.Transition transition;
+ final Transition transition;
private final int hashCode;
FragmentsAndTransition(Set<Class<? extends BuildConfiguration.Fragment>> fragments,
- Attribute.Transition transition) {
+ Transition transition) {
this.fragments = fragments;
this.transition = transition;
hashCode = Objects.hash(this.fragments, this.transition);
@@ -407,7 +408,7 @@ public final class ConfigurationResolver {
*/
@VisibleForTesting
public static List<BuildOptions> applyTransition(BuildOptions fromOptions,
- Attribute.Transition transition,
+ Transition 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/DynamicTransitionMapper.java b/src/main/java/com/google/devtools/build/lib/analysis/config/DynamicTransitionMapper.java
index 5166cb677c..0ccb19a40a 100644
--- 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
@@ -14,8 +14,8 @@
package com.google.devtools.build.lib.analysis.config;
import com.google.common.collect.ImmutableMap;
+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.Attribute.Transition;
import com.google.devtools.build.lib.packages.RuleClass;
/**
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 cdadf22a85..d0a779c1c7 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,12 +16,11 @@ 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.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.ClassObject;
-
import javax.annotation.Nullable;
/**
@@ -40,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 Attribute.Transition transition;
+ private final Transition transition;
- public FragmentCollection(RuleContext ruleContext, Attribute.Transition transition) {
+ public FragmentCollection(RuleContext ruleContext, Transition transition) {
this.ruleContext = ruleContext;
this.transition = transition;
}
@@ -71,7 +70,7 @@ public class FragmentCollection implements ClassObject {
return String.format("'%s'", Joiner.on("', '").join(getKeys()));
}
- public static String getConfigurationName(Attribute.Transition config) {
+ public static String getConfigurationName(Transition config) {
return config.isHostTransition() ? "host" : "target";
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/PatchTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/PatchTransition.java
index 80091e05b9..fea95bac6a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/PatchTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/PatchTransition.java
@@ -13,7 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.analysis.config;
-import com.google.devtools.build.lib.packages.Attribute;
+import com.google.devtools.build.lib.analysis.config.transitions.Transition;
/**
* Interface for a configuration transition.
@@ -48,7 +48,7 @@ import com.google.devtools.build.lib.packages.Attribute;
* {@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 Attribute.Transition {
+public interface PatchTransition extends Transition {
/**
* Applies the transition.
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 e9c4b9bd7d..b84c5dbfbd 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
@@ -17,10 +17,10 @@ package com.google.devtools.build.lib.analysis.config;
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.Transition;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.packages.InputFile;
import com.google.devtools.build.lib.packages.PackageGroup;
@@ -29,7 +29,7 @@ import com.google.devtools.build.lib.packages.RuleTransitionFactory;
import com.google.devtools.build.lib.packages.Target;
/**
- * Tool for evaluating which {@link Attribute.Transition}(s) should be applied to given targets.
+ * Tool for evaluating which {@link Transition}(s) should be applied to given targets.
*
* <p>For the work of turning these transitions into actual configurations, see {@link
* ConfigurationResolver}.
@@ -130,7 +130,7 @@ 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 Attribute.Transition evaluateTopLevelTransition(
+ public static Transition evaluateTopLevelTransition(
TargetAndConfiguration targetAndConfig, DynamicTransitionMapper dynamicTransitionMapper) {
Target target = targetAndConfig.getTarget();
BuildConfiguration fromConfig = targetAndConfig.getConfiguration();
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 773001e004..da5dcc5fe9 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,9 +22,9 @@ 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.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.syntax.Type.LabelClass;
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 3f68f6beb0..b736613863 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,6 +29,7 @@ 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.Transition;
import com.google.devtools.build.lib.concurrent.ThreadSafety;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.Location;
@@ -147,18 +148,6 @@ public final class Attribute implements Comparable<Attribute> {
}
/**
- * A configuration transition.
- */
- public interface Transition {
- /**
- * Does this transition switch to a "host" configuration?
- */
- default boolean isHostTransition() {
- return false;
- }
- }
-
- /**
* A configuration split transition; this should be used to transition to multiple configurations
* simultaneously. Note that the corresponding rule implementations must have special support to
* handle this.
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 ee44b6427b..fdc6061a99 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.Transition;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import java.util.Collection;
import java.util.Set;
@@ -93,7 +93,7 @@ public final class ConfigurationFragmentPolicy {
*
* <p>The value is inherited by subclasses.
*/
- public Builder requiresConfigurationFragments(Attribute.Transition transition,
+ public Builder requiresConfigurationFragments(Transition 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.
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 e76339dc7b..a12c08f9c2 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,6 +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.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -38,7 +39,6 @@ import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.events.NullEventHandler;
import com.google.devtools.build.lib.packages.Attribute.SkylarkComputedDefaultTemplate;
import com.google.devtools.build.lib.packages.Attribute.SkylarkComputedDefaultTemplate.CannotPrecomputeDefaultsException;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.packages.BuildType.SelectorList;
import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy;
import com.google.devtools.build.lib.packages.RuleFactory.AttributeValues;
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 215461fa3d..94613ab5dc 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.packages.Attribute.Transition;
+import com.google.devtools.build.lib.analysis.config.transitions.Transition;
import javax.annotation.Nullable;
/**
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 15851545ad..3391ccc9f4 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,6 +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.cmdline.Label;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
@@ -37,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 Attribute.Transition hostTransition;
+ private final Transition hostTransition;
private final ImmutableSet<String> hostFragments;
private final ImmutableList<Label> requiredToolchains;
@@ -53,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.
- Attribute.Transition hostTransition,
+ Transition 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 f57d4891eb..6a8a0a9eb2 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,6 +37,7 @@ 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.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;
@@ -301,7 +302,7 @@ public final class AndroidRuleClasses {
ImmutableSet.of("android_binary", "android_library");
@Override
- public Attribute.Transition buildTransitionFor(Rule depRule) {
+ public Transition 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/rules/cpp/CppRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppRuleClasses.java
index af37c28c56..90cca62ef2 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
@@ -34,11 +34,11 @@ 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.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;
import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
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;
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 6e5bb27b1a..c2295c4b60 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
@@ -73,6 +73,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigurationResolver;
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.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;
@@ -1120,7 +1121,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);
- Attribute.Transition dataTransition =
+ Transition dataTransition =
((ConfiguredRuleClassProvider) ruleClassProvider)
.getDynamicTransitionMapper()
.map(Attribute.ConfigurationTransition.DATA);
@@ -1604,7 +1605,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory {
ExtendedEventHandler eventHandler,
Label label,
BuildConfiguration configuration,
- Attribute.Transition transition) {
+ Transition transition) {
return Iterables.getFirst(
getConfiguredTargets(
eventHandler,