aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
diff options
context:
space:
mode:
authorGravatar mstaib <mstaib@google.com>2018-04-19 14:16:41 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-19 14:18:37 -0700
commit4a07a47456d6db3879d768321cbd32a7a769df37 (patch)
tree6fe66409ec4820632994746de606e53ef28669a8 /src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
parentb6d8ec02cf8c76b409a467ad3dfdb0b685ef2943 (diff)
Add the capability to register a trimming RuleTransitionFactory.
This RuleTransitionFactory will be applied to all targets after other transitions, and is intended to be used to manually trim the configuration based on tagging of that target. This is a stopgap feature until automatic trimming of configuration can be implemented. RELNOTES: None. PiperOrigin-RevId: 193573013
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index 17ffe47c77..f22cf53280 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -26,6 +26,7 @@ import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictEx
import com.google.devtools.build.lib.analysis.AspectResolver;
import com.google.devtools.build.lib.analysis.CachingAnalysisEnvironment;
import com.google.devtools.build.lib.analysis.ConfiguredAspect;
+import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.Dependency;
@@ -55,6 +56,7 @@ import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.RawAttributeMapper;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClassProvider;
+import com.google.devtools.build.lib.packages.RuleTransitionFactory;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.skyframe.AspectFunction.AspectCreationException;
@@ -239,7 +241,8 @@ public final class ConfiguredTargetFunction implements SkyFunction {
resolver,
ctgValue,
transitivePackagesForPackageRootResolution,
- transitiveLoadingRootCauses);
+ transitiveLoadingRootCauses,
+ ((ConfiguredRuleClassProvider) ruleClassProvider).getTrimmingTransitionFactory());
if (env.valuesMissing()) {
return null;
}
@@ -429,7 +432,8 @@ public final class ConfiguredTargetFunction implements SkyFunction {
? ImmutableSet.of()
: toolchainContext.getResolvedToolchainLabels(),
transitiveLoadingRootCauses,
- defaultBuildOptions);
+ defaultBuildOptions,
+ ((ConfiguredRuleClassProvider) ruleClassProvider).getTrimmingTransitionFactory());
} catch (EvalException e) {
// EvalException can only be thrown by computed Skylark attributes in the current rule.
env.getListener().handle(Event.error(e.getLocation(), e.getMessage()));
@@ -506,7 +510,8 @@ public final class ConfiguredTargetFunction implements SkyFunction {
SkyframeDependencyResolver resolver,
TargetAndConfiguration ctgValue,
@Nullable NestedSetBuilder<Package> transitivePackagesForPackageRootResolution,
- NestedSetBuilder<Label> transitiveLoadingRootCauses)
+ NestedSetBuilder<Label> transitiveLoadingRootCauses,
+ @Nullable RuleTransitionFactory trimmingTransitionFactory)
throws DependencyEvaluationException, InterruptedException {
if (!(target instanceof Rule)) {
return NO_CONFIG_CONDITIONS;
@@ -533,7 +538,7 @@ public final class ConfiguredTargetFunction implements SkyFunction {
Collection<Dependency> configValueNames;
try {
configValueNames = resolver.resolveRuleLabels(
- ctgValue, configLabelMap, transitiveLoadingRootCauses);
+ ctgValue, configLabelMap, transitiveLoadingRootCauses, trimmingTransitionFactory);
} catch (InconsistentAspectOrderException e) {
throw new DependencyEvaluationException(e);
}