aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingSplitTransition.java35
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/TransitionsOutputFormatterCallback.java15
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(
" "