aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/config/ConfigRules.java2
2 files changed, 16 insertions, 10 deletions
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 c333d0563b..4821f6f961 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
@@ -32,6 +32,7 @@ import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.analysis.config.ComposingRuleTransitionFactory;
import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
import com.google.devtools.build.lib.analysis.config.DefaultsPackage;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
@@ -413,17 +414,22 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
}
/**
- * Sets the transition factory that produces a trimming transition to be run over all targets
+ * Adds a transition factory that produces a trimming transition to be run over all targets
* after other transitions.
*
- * <p>This is a temporary measure for supporting manual trimming of feature flags, and support
- * for this transition factory will likely be removed at some point in the future (whenever
- * automatic trimming is sufficiently workable).
+ * <p>Transitions are run in the order they're added.
+ *
+ * <p>This is a temporary measure for supporting trimming of test rules and manual trimming of
+ * feature flags, and support for this transition factory will likely be removed at some point
+ * in the future (whenever automatic trimming is sufficiently workable).
*/
- public Builder setTrimmingTransitionFactory(RuleTransitionFactory factory) {
- Preconditions.checkState(
- trimmingTransitionFactory == null, "Trimming transition factory already set");
- trimmingTransitionFactory = Preconditions.checkNotNull(factory);
+ public Builder addTrimmingTransitionFactory(RuleTransitionFactory factory) {
+ if (trimmingTransitionFactory == null) {
+ trimmingTransitionFactory = Preconditions.checkNotNull(factory);
+ } else {
+ trimmingTransitionFactory = new ComposingRuleTransitionFactory(
+ trimmingTransitionFactory, Preconditions.checkNotNull(factory));
+ }
return this;
}
@@ -435,7 +441,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
@VisibleForTesting(/* for testing trimming transition factories without relying on prod use */)
public Builder overrideTrimmingTransitionFactoryForTesting(RuleTransitionFactory factory) {
trimmingTransitionFactory = null;
- return this.setTrimmingTransitionFactory(factory);
+ return this.addTrimmingTransitionFactory(factory);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRules.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRules.java
index 6a5fdaec6a..7531493e77 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRules.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigRules.java
@@ -32,7 +32,7 @@ public final class ConfigRules implements RuleSet {
@Override
public void init(ConfiguredRuleClassProvider.Builder builder) {
- builder.setTrimmingTransitionFactory(
+ builder.addTrimmingTransitionFactory(
new ConfigFeatureFlagTaggedTrimmingTransitionFactory(BaseRuleClasses.TAGGED_TRIMMING_ATTR));
builder.addRuleDefinition(new ConfigRuleClasses.ConfigBaseRule());
builder.addRuleDefinition(new ConfigRuleClasses.ConfigSettingRule());