aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java36
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/FragmentCollection.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java27
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java5
6 files changed, 49 insertions, 45 deletions
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 b5d083486a..4462ae4bee 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
@@ -389,21 +389,21 @@ public final class RuleContext extends TargetContext
* Returns a configuration fragment for this this target.
*/
@Nullable
- public <T extends Fragment> T getFragment(Class<T> fragment, ConfigurationTransition config) {
- return getFragment(fragment, fragment.getSimpleName(), "", config);
+ public <T extends Fragment> T getFragment(Class<T> fragment, Attribute.Transition transition) {
+ return getFragment(fragment, fragment.getSimpleName(), "", transition);
}
@Nullable
protected <T extends Fragment> T getFragment(Class<T> fragment, String name,
- String additionalErrorMessage, ConfigurationTransition config) {
+ String additionalErrorMessage, Attribute.Transition transition) {
// TODO(bazel-team): The fragments can also be accessed directly through BuildConfiguration.
// Can we lock that down somehow?
- Preconditions.checkArgument(isLegalFragment(fragment, config),
+ Preconditions.checkArgument(isLegalFragment(fragment, transition),
"%s has to declare '%s' as a required fragment "
+ "in %s configuration in order to access it.%s",
- getRuleClassNameForLogging(), name, FragmentCollection.getConfigurationName(config),
+ getRuleClassNameForLogging(), name, FragmentCollection.getConfigurationName(transition),
additionalErrorMessage);
- return getConfiguration(config).getFragment(fragment);
+ return getConfiguration(transition).getFragment(fragment);
}
@Nullable
@@ -413,9 +413,9 @@ public final class RuleContext extends TargetContext
}
@Nullable
- public Fragment getSkylarkFragment(String name, ConfigurationTransition config) {
+ public Fragment getSkylarkFragment(String name, Attribute.Transition transition) {
Class<? extends Fragment> fragmentClass =
- getConfiguration(config).getSkylarkFragmentByName(name);
+ getConfiguration(transition).getSkylarkFragmentByName(name);
if (fragmentClass == null) {
return null;
}
@@ -423,19 +423,19 @@ public final class RuleContext extends TargetContext
String.format(
" Please update the '%1$sfragments' argument of the rule definition "
+ "(for example: %1$sfragments = [\"%2$s\"])",
- (config == ConfigurationTransition.HOST) ? "host_" : "", name),
- config);
+ (transition.isHostTransition()) ? "host_" : "", name),
+ transition);
}
- public ImmutableCollection<String> getSkylarkFragmentNames(ConfigurationTransition config) {
- return getConfiguration(config).getSkylarkFragmentNames();
+ public ImmutableCollection<String> getSkylarkFragmentNames(Attribute.Transition transition) {
+ return getConfiguration(transition).getSkylarkFragmentNames();
}
public <T extends Fragment> boolean isLegalFragment(
- Class<T> fragment, ConfigurationTransition config) {
+ Class<T> fragment, Attribute.Transition transition) {
return fragment == universalFragment
|| fragment == PlatformConfiguration.class
- || configurationFragmentPolicy.isLegalConfigurationFragment(fragment, config);
+ || configurationFragmentPolicy.isLegalConfigurationFragment(fragment, transition);
}
public <T extends Fragment> boolean isLegalFragment(Class<T> fragment) {
@@ -443,8 +443,8 @@ public final class RuleContext extends TargetContext
return isLegalFragment(fragment, ConfigurationTransition.NONE);
}
- protected BuildConfiguration getConfiguration(ConfigurationTransition config) {
- return config.equals(ConfigurationTransition.HOST) ? hostConfiguration : getConfiguration();
+ protected BuildConfiguration getConfiguration(Attribute.Transition transition) {
+ return transition.isHostTransition() ? hostConfiguration : getConfiguration();
}
@Override
@@ -1058,7 +1058,7 @@ public final class RuleContext extends TargetContext
}
Attribute.Transition transition = attributeDefinition.getConfigurationTransition();
if (mode == Mode.HOST) {
- if (!(transition instanceof PatchTransition) && transition != ConfigurationTransition.HOST) {
+ if (!(transition instanceof PatchTransition)) {
throw new IllegalStateException(getRule().getLocation() + ": "
+ getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not configured for the host configuration");
@@ -1098,7 +1098,7 @@ public final class RuleContext extends TargetContext
throw new IllegalStateException(getRuleClassNameForLogging() + " attribute " + attributeName
+ " is not a label type attribute");
}
- if (attributeDefinition.getConfigurationTransition() == ConfigurationTransition.HOST) {
+ if (attributeDefinition.getConfigurationTransition().isHostTransition()) {
return Mode.HOST;
} else if (attributeDefinition.getConfigurationTransition() == ConfigurationTransition.NONE) {
return Mode.TARGET;
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 0853001052..cdadf22a85 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
@@ -17,7 +17,7 @@ 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.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
+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;
@@ -40,22 +40,22 @@ import javax.annotation.Nullable;
+ "(see <a href=\"../rules.md#fragments\">here</a>).")
public class FragmentCollection implements ClassObject {
private final RuleContext ruleContext;
- private final ConfigurationTransition config;
+ private final Attribute.Transition transition;
- public FragmentCollection(RuleContext ruleContext, ConfigurationTransition config) {
+ public FragmentCollection(RuleContext ruleContext, Attribute.Transition transition) {
this.ruleContext = ruleContext;
- this.config = config;
+ this.transition = transition;
}
@Override
@Nullable
public Object getValue(String name) {
- return ruleContext.getSkylarkFragment(name, config);
+ return ruleContext.getSkylarkFragment(name, transition);
}
@Override
public ImmutableCollection<String> getKeys() {
- return ruleContext.getSkylarkFragmentNames(config);
+ return ruleContext.getSkylarkFragmentNames(transition);
}
@Override
@@ -64,19 +64,19 @@ public class FragmentCollection implements ClassObject {
return String.format(
"There is no configuration fragment named '%s' in %s configuration. "
+ "Available fragments: %s",
- name, getConfigurationName(config), printKeys());
+ name, getConfigurationName(transition), printKeys());
}
private String printKeys() {
return String.format("'%s'", Joiner.on("', '").join(getKeys()));
}
- public static String getConfigurationName(ConfigurationTransition config) {
- return (config == ConfigurationTransition.HOST) ? "host" : "target";
+ public static String getConfigurationName(Attribute.Transition config) {
+ return config.isHostTransition() ? "host" : "target";
}
@Override
public String toString() {
- return getConfigurationName(config) + ": [ " + printKeys() + "]";
+ return getConfigurationName(transition) + ": [ " + printKeys() + "]";
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 7910b80410..1bcc46c5ed 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -36,6 +36,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.FragmentCollection;
+import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
@@ -225,7 +226,7 @@ public final class SkylarkRuleContext implements SkylarkValue {
this.ruleContext = Preconditions.checkNotNull(ruleContext);
this.ruleLabelCanonicalName = ruleContext.getLabel().getCanonicalForm();
this.fragments = new FragmentCollection(ruleContext, ConfigurationTransition.NONE);
- this.hostFragments = new FragmentCollection(ruleContext, ConfigurationTransition.HOST);
+ this.hostFragments = new FragmentCollection(ruleContext, HostTransition.INSTANCE);
this.aspectDescriptor = aspectDescriptor;
this.skylarkSemantics = skylarkSemantics;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
index 5127120ab0..a15300cbce 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectDefinitionTest.java
@@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.ConfigAwareAspectBuilder;
+import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.AdvertisedProviderSet;
import com.google.devtools.build.lib.packages.AspectDefinition;
@@ -298,7 +299,7 @@ public class AspectDefinitionTest {
assertThat(requiresFragments.getConfigurationFragmentPolicy()).isNotNull();
assertThat(
requiresFragments.getConfigurationFragmentPolicy()
- .isLegalConfigurationFragment(TestFragment.class, ConfigurationTransition.HOST))
+ .isLegalConfigurationFragment(TestFragment.class, HostTransition.INSTANCE))
.isTrue();
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java b/src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java
index df6541a461..a8f8e97dec 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/DependencyTest.java
@@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.common.testing.EqualsTester;
import com.google.common.testing.NullPointerTester;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
import com.google.devtools.build.lib.analysis.util.TestAspects;
import com.google.devtools.build.lib.cmdline.Label;
@@ -179,13 +180,13 @@ public class DependencyTest extends AnalysisTestCase {
ImmutableSet.of(simpleAspect, attributeAspect));
Dependency hostDep =
Dependency.withTransitionAndAspects(
- Label.parseAbsolute("//a"), ConfigurationTransition.HOST, twoAspects);
+ Label.parseAbsolute("//a"), HostTransition.INSTANCE, twoAspects);
assertThat(hostDep.getLabel()).isEqualTo(Label.parseAbsolute("//a"));
assertThat(hostDep.hasExplicitConfiguration()).isFalse();
assertThat(hostDep.getAspects().getAllAspects())
.containsExactlyElementsIn(twoAspects.getAllAspects());
- assertThat(hostDep.getTransition()).isEqualTo(ConfigurationTransition.HOST);
+ assertThat(hostDep.getTransition().isHostTransition()).isTrue();
try {
hostDep.getConfiguration();
@@ -216,7 +217,7 @@ public class DependencyTest extends AnalysisTestCase {
update();
Dependency dep =
Dependency.withTransitionAndAspects(
- Label.parseAbsolute("//a"), ConfigurationTransition.HOST,
+ Label.parseAbsolute("//a"), HostTransition.INSTANCE,
AspectCollection.EMPTY);
// Here we're also checking that this doesn't throw an exception. No boom? OK. Good.
assertThat(dep.getAspects().getAllAspects()).isEmpty();
@@ -355,25 +356,25 @@ public class DependencyTest extends AnalysisTestCase {
Dependency.withConfiguredAspects(b, target, noAspects, noAspectsMap))
.addEqualityGroup(
// base set but with transition HOST
- Dependency.withTransitionAndAspects(a, ConfigurationTransition.HOST, twoAspects),
+ Dependency.withTransitionAndAspects(a, HostTransition.INSTANCE, twoAspects),
Dependency.withTransitionAndAspects(
- aExplicit, ConfigurationTransition.HOST, twoAspects),
- Dependency.withTransitionAndAspects(a, ConfigurationTransition.HOST, inverseAspects),
+ aExplicit, HostTransition.INSTANCE, twoAspects),
+ Dependency.withTransitionAndAspects(a, HostTransition.INSTANCE, inverseAspects),
Dependency.withTransitionAndAspects(
- aExplicit, ConfigurationTransition.HOST, inverseAspects))
+ aExplicit, HostTransition.INSTANCE, inverseAspects))
.addEqualityGroup(
// base set but with transition HOST and different aspects
- Dependency.withTransitionAndAspects(a, ConfigurationTransition.HOST, differentAspects),
+ Dependency.withTransitionAndAspects(a, HostTransition.INSTANCE, differentAspects),
Dependency.withTransitionAndAspects(
- aExplicit, ConfigurationTransition.HOST, differentAspects))
+ aExplicit, HostTransition.INSTANCE, differentAspects))
.addEqualityGroup(
// base set but with transition HOST and label //b
- Dependency.withTransitionAndAspects(b, ConfigurationTransition.HOST, twoAspects),
- Dependency.withTransitionAndAspects(b, ConfigurationTransition.HOST, inverseAspects))
+ Dependency.withTransitionAndAspects(b, HostTransition.INSTANCE, twoAspects),
+ Dependency.withTransitionAndAspects(b, HostTransition.INSTANCE, inverseAspects))
.addEqualityGroup(
// inverse of base set: transition HOST, label //b, different aspects
- Dependency.withTransitionAndAspects(b, ConfigurationTransition.HOST, differentAspects),
- Dependency.withTransitionAndAspects(b, ConfigurationTransition.HOST, differentAspects))
+ Dependency.withTransitionAndAspects(b, HostTransition.INSTANCE, differentAspects),
+ Dependency.withTransitionAndAspects(b, HostTransition.INSTANCE, differentAspects))
.addEqualityGroup(
// base set but with transition NONE
Dependency.withTransitionAndAspects(a, ConfigurationTransition.NONE, twoAspects),
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
index a5353e1df2..832299702b 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkDefinedAspectsTest.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredAspect;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.OutputGroupInfo;
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
+import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.TargetParsingException;
@@ -215,7 +216,7 @@ public class SkylarkDefinedAspectsTest extends AnalysisTestCase {
.isTrue();
assertThat(
aspectDefinition.getConfigurationFragmentPolicy()
- .isLegalConfigurationFragment(Jvm.class, ConfigurationTransition.HOST))
+ .isLegalConfigurationFragment(Jvm.class, HostTransition.INSTANCE))
.isFalse();
assertThat(
aspectDefinition.getConfigurationFragmentPolicy()
@@ -223,7 +224,7 @@ public class SkylarkDefinedAspectsTest extends AnalysisTestCase {
.isFalse();
assertThat(
aspectDefinition.getConfigurationFragmentPolicy()
- .isLegalConfigurationFragment(CppConfiguration.class, ConfigurationTransition.HOST))
+ .isLegalConfigurationFragment(CppConfiguration.class, HostTransition.INSTANCE))
.isTrue();
}