diff options
3 files changed, 8 insertions, 57 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java index f26ca9f920..03052fb972 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java @@ -28,8 +28,6 @@ import com.google.devtools.build.lib.analysis.Dependency; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.NoTransition; -import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; -import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety; import com.google.devtools.build.lib.events.Event; @@ -424,16 +422,9 @@ public final class ConfigurationResolver { ConfigurationTransition transition, Iterable<Class<? extends BuildConfiguration.Fragment>> requiredFragments, RuleClassProvider ruleClassProvider, boolean trimResults) { - List<BuildOptions> result; - if (transition instanceof PatchTransition) { - // TODO(bazel-team): safety-check that this never mutates fromOptions. - result = ImmutableList.of(((PatchTransition) transition).patch(fromOptions)); - } else if (transition instanceof SplitTransition) { - return ((SplitTransition) transition).split(fromOptions); - } else { - throw new IllegalStateException(String.format( - "unsupported config transition type: %s", transition.getClass().getName())); - } + + // TODO(bazel-team): safety-check that this never mutates fromOptions. + List<BuildOptions> result = transition.apply(fromOptions); if (!trimResults) { return result; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java index 190b867329..4eb6ae0e89 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java @@ -14,7 +14,6 @@ package com.google.devtools.build.lib.analysis.config.transitions; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; @@ -59,29 +58,19 @@ public class ComposingSplitTransition implements SplitTransition { @AutoCodec.Instantiator public ComposingSplitTransition( ConfigurationTransition transition1, ConfigurationTransition transition2) { - this.transition1 = verifySupported(transition1); - this.transition2 = verifySupported(transition2); + this.transition1 = transition1; + this.transition2 = transition2; } @Override public List<BuildOptions> split(BuildOptions buildOptions) { ImmutableList.Builder<BuildOptions> toOptions = ImmutableList.builder(); - for (BuildOptions transition1Options : apply(buildOptions, transition1)) { - toOptions.addAll(apply(transition1Options, transition2)); + for (BuildOptions transition1Options : transition1.apply(buildOptions)) { + toOptions.addAll(transition2.apply(transition1Options)); } return toOptions.build(); } - /** - * Verifies support for the given transition type. Throws an {@link IllegalArgumentException} if - * unsupported. - */ - private ConfigurationTransition verifySupported(ConfigurationTransition transition) { - Preconditions.checkArgument(transition instanceof PatchTransition - || transition instanceof SplitTransition); - return transition; - } - @Override public int hashCode() { return Objects.hash(transition1, transition2); @@ -111,20 +100,4 @@ public class ComposingSplitTransition implements SplitTransition { public ComposingPatchTransition asPatch() { return new ComposingPatchTransition(this); } - - /** - * Applies the given transition over the given {@link BuildOptions}, returns the result. - */ - // TODO(gregce): move this somewhere more general. This isn't intrinsic to composed splits. - static List<BuildOptions> apply(BuildOptions fromOptions, ConfigurationTransition transition) { - if (transition instanceof PatchTransition) { - return ImmutableList.<BuildOptions>of(((PatchTransition) transition).patch(fromOptions)); - } else if (transition instanceof SplitTransition) { - return ((SplitTransition) transition).split(fromOptions); - } else { - throw new IllegalStateException( - String.format("Unsupported composite transition type: %s", - transition.getClass().getName())); - } - } } diff --git a/src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java index 7d906acd63..8da9e0f565 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java +++ b/src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java @@ -34,8 +34,6 @@ import com.google.devtools.build.lib.analysis.config.FragmentClassSet; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.config.transitions.NoTransition; -import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; -import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -56,7 +54,6 @@ import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.util.OrderedSetMultimap; import java.io.IOException; import java.io.OutputStream; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -153,18 +150,8 @@ public class TransitionsOutputFormatterCallback extends CqueryThreadsafeCallback || attributeAndDep.getValue().getTransition() instanceof NoTransition) { continue; } - List<BuildOptions> toOptions; Dependency dep = attributeAndDep.getValue(); - ConfigurationTransition transition = dep.getTransition(); - if (transition instanceof SplitTransition) { - toOptions = ((SplitTransition) transition).split(fromOptions); - } else if (transition instanceof PatchTransition) { - toOptions = Collections.singletonList(((PatchTransition) transition).patch(fromOptions)); - } else { - throw new IllegalStateException( - "If this error is thrown, cquery needs to be updated to take into account non-Patch" - + " and non-Split Transitions"); - } + List<BuildOptions> toOptions = dep.getTransition().apply(fromOptions); String hostConfigurationChecksum = hostConfiguration.checksum(); addResult( " " |