aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
diff options
context:
space:
mode:
authorGravatar lberki <lberki@google.com>2018-04-06 01:52:58 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-06 01:54:28 -0700
commit78651d4a407fd6114d7d1129a26d5500fdeb21f2 (patch)
treeee22d1d982268b975ab094998703c6e447d83cd1 /src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
parent24f19ec2679dd93b1ac5b06e46f3b35807d6e217 (diff)
Move shell executable to its own configuration fragment.
RELNOTES: None. PiperOrigin-RevId: 191861074
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java17
1 files changed, 9 insertions, 8 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 c8c477524f..043bee78a1 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
@@ -184,7 +184,7 @@ public final class RuleContext extends TargetContext
private final BuildConfiguration hostConfiguration;
private final PatchTransition disableLipoTransition;
private final ConfigurationFragmentPolicy configurationFragmentPolicy;
- private final Class<? extends BuildConfiguration.Fragment> universalFragment;
+ private final ImmutableList<Class<? extends BuildConfiguration.Fragment>> universalFragments;
private final ErrorReporter reporter;
@Nullable private final ToolchainContext toolchainContext;
@@ -199,7 +199,7 @@ public final class RuleContext extends TargetContext
ListMultimap<String, ConfiguredTargetAndData> targetMap,
ListMultimap<String, ConfiguredFilesetEntry> filesetEntryMap,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
- Class<? extends BuildConfiguration.Fragment> universalFragment,
+ ImmutableList<Class<? extends BuildConfiguration.Fragment>> universalFragments,
String ruleClassNameForLogging,
ImmutableMap<String, Attribute> aspectAttributes,
@Nullable ToolchainContext toolchainContext) {
@@ -214,7 +214,7 @@ public final class RuleContext extends TargetContext
.map(a -> a.getDescriptor())
.collect(ImmutableList.toImmutableList());
this.configurationFragmentPolicy = builder.configurationFragmentPolicy;
- this.universalFragment = universalFragment;
+ this.universalFragments = universalFragments;
this.targetMap = targetMap;
this.filesetEntryMap = filesetEntryMap;
this.configConditions = configConditions;
@@ -452,7 +452,7 @@ public final class RuleContext extends TargetContext
public <T extends Fragment> boolean isLegalFragment(
Class<T> fragment, ConfigurationTransition transition) {
- return fragment == universalFragment
+ return universalFragments.contains(fragment)
|| fragment == PlatformConfiguration.class
|| configurationFragmentPolicy.isLegalConfigurationFragment(fragment, transition);
}
@@ -1405,7 +1405,7 @@ public final class RuleContext extends TargetContext
private final AnalysisEnvironment env;
private final Rule rule;
private final ConfigurationFragmentPolicy configurationFragmentPolicy;
- private Class<? extends BuildConfiguration.Fragment> universalFragment;
+ private ImmutableList<Class<? extends BuildConfiguration.Fragment>> universalFragments;
private final BuildConfiguration configuration;
private final BuildConfiguration hostConfiguration;
private PatchTransition disableLipoTransition;
@@ -1453,7 +1453,7 @@ public final class RuleContext extends TargetContext
targetMap,
filesetEntryMap,
configConditions,
- universalFragment,
+ universalFragments,
getRuleClassNameForLogging(),
aspectAttributes != null ? aspectAttributes : ImmutableMap.<String, Attribute>of(),
toolchainContext);
@@ -1498,12 +1498,13 @@ public final class RuleContext extends TargetContext
/**
* Sets the fragment that can be legally accessed even when not explicitly declared.
*/
- Builder setUniversalFragment(Class<? extends BuildConfiguration.Fragment> fragment) {
+ Builder setUniversalFragments(
+ ImmutableList<Class<? extends BuildConfiguration.Fragment>> fragments) {
// TODO(bazel-team): Add this directly to ConfigurationFragmentPolicy, so we
// don't need separate logic specifically for checking this fragment. The challenge is
// that we need RuleClassProvider to figure out what this fragment is, and not every
// call state that creates ConfigurationFragmentPolicy has access to that.
- this.universalFragment = fragment;
+ this.universalFragments = fragments;
return this;
}