From 4a07a47456d6db3879d768321cbd32a7a769df37 Mon Sep 17 00:00:00 2001 From: mstaib Date: Thu, 19 Apr 2018 14:16:41 -0700 Subject: 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 --- .../google/devtools/build/lib/skyframe/AspectFunction.java | 4 +++- .../build/lib/skyframe/ConfiguredTargetFunction.java | 13 +++++++++---- .../build/lib/skyframe/PostConfiguredTargetFunction.java | 4 +++- 3 files changed, 15 insertions(+), 6 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/skyframe') diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java index 6e8e6033ff..29ffee6abf 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java @@ -27,6 +27,7 @@ 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.ConfiguredAspectFactory; +import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.DependencyResolver.InconsistentAspectOrderException; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; @@ -393,7 +394,8 @@ public final class AspectFunction implements SkyFunction { resolver, originalTargetAndAspectConfiguration, transitivePackagesForPackageRootResolution, - transitiveRootCauses); + transitiveRootCauses, + ((ConfiguredRuleClassProvider) ruleClassProvider).getTrimmingTransitionFactory()); if (configConditions == null) { // Those targets haven't yet been resolved. return null; 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 transitivePackagesForPackageRootResolution, - NestedSetBuilder