aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2017-07-10 22:32:54 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-07-11 10:56:09 +0200
commitcac6839ea63ddc3e370f785804a4349ce60f80fc (patch)
tree9a3fecc953cf28b4c2897287e093718acab8fcdd
parent0e0d5e21b491e595f05468fc6a12254ad76830ac (diff)
Remove dynamic configs dep on the static transition table.
PiperOrigin-RevId: 161432622
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java6
5 files changed, 17 insertions, 36 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
index ae209c9495..7915bcecb3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
@@ -15,7 +15,6 @@ package com.google.devtools.build.lib.analysis;
import com.google.common.cache.Cache;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigurationFactory;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -52,16 +51,4 @@ public interface ConfigurationCollectionFactory {
EventHandler errorEventListener,
String mainRepositoryName)
throws InvalidConfigurationException, InterruptedException;
-
- /**
- * Returns the module the given configuration should use for choosing dynamic transitions.
- *
- * <p>We can presumably factor away this method once static global configurations are properly
- * deprecated. But for now we retain the
- * {@link com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection.Transitions}
- * interface since that's the same place where static transition logic is determined and
- * {@link BuildConfigurationCollection.Transitions#configurationHook}
- * is still used.
- */
- BuildConfigurationCollection.Transitions getDynamicTransitionLogic(BuildConfiguration config);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
index a2f31e394a..4c6b78b345 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
@@ -1614,7 +1614,6 @@ public final class BuildConfiguration implements BuildEvent {
options,
mainRepositoryName.strippedName(),
dynamicTransitionMapper);
- newConfig.setConfigurationTransitions(this.transitions);
return newConfig;
}
@@ -1711,8 +1710,11 @@ public final class BuildConfiguration implements BuildEvent {
}
/**
- * Returns all configurations that can be reached from this configuration through any kind of
- * configuration transition.
+ * For static configurations, returns all configurations that can be reached from this one through
+ * any kind of configuration transition.
+ *
+ * <p>For dynamic configurations, returns the current configuration (since configurations aren't
+ * reached through other configurations).
*/
public synchronized Collection<BuildConfiguration> getAllReachableConfigurations() {
if (allReachableConfigurations == null) {
@@ -1723,11 +1725,10 @@ public final class BuildConfiguration implements BuildEvent {
return allReachableConfigurations;
}
- /**
- * Returns all configurations that can be reached from this configuration through any kind of
- * configuration transition.
- */
private Set<BuildConfiguration> computeAllReachableConfigurations() {
+ if (useDynamicConfigurations()) {
+ return ImmutableSet.of(this);
+ }
Set<BuildConfiguration> result = new LinkedHashSet<>();
Queue<BuildConfiguration> queue = new LinkedList<>();
queue.add(this);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
index 1137280bde..439cc3619c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
@@ -25,7 +25,6 @@ import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.util.Preconditions;
-
import java.io.PrintStream;
import java.io.Serializable;
import java.util.Collection;
@@ -98,8 +97,11 @@ public final class BuildConfigurationCollection {
}
/**
- * Returns all configurations that can be reached from the target configuration through any kind
- * of configuration transition.
+ * For static configurations, returns all configurations that can be reached from the target
+ * configurations through any kind of configuration transition.
+ *
+ * <p>For dynamic configurations, returns the target configurations (since configurations aren't
+ * reached through other configurations).
*/
public Collection<BuildConfiguration> getAllConfigurations() {
Set<BuildConfiguration> result = new LinkedHashSet<>();
@@ -172,6 +174,10 @@ public final class BuildConfigurationCollection {
public Transitions(BuildConfiguration configuration,
Map<? extends Transition, ConfigurationHolder> transitionTable,
ListMultimap<? extends SplitTransition<?>, BuildConfiguration> splitTransitionTable) {
+ Preconditions.checkState(!configuration.useDynamicConfigurations(),
+ "Dynamic configurations don't use this class and static configurations are going away. "
+ + "Anything added here is dead code. Contact Blaze developers if you need help.");
+
this.configuration = configuration;
this.transitionTable = ImmutableMap.copyOf(transitionTable);
// Do not remove <SplitTransition<?>, BuildConfiguration>:
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
index cf84854868..330e641499 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
@@ -18,7 +18,6 @@ import com.google.common.cache.Cache;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.ImmutableListMultimap;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Table;
import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
@@ -108,12 +107,6 @@ public class BazelConfigurationCollection implements ConfigurationCollectionFact
}
}
- @Override
- public Transitions getDynamicTransitionLogic(BuildConfiguration config) {
- return new BazelTransitions(config, ImmutableMap.<Transition, ConfigurationHolder>of(),
- ImmutableListMultimap.<SplitTransition<?>, BuildConfiguration>of());
- }
-
/**
* Gets the correct host configuration for this build. The behavior depends on the value of the
* --distinct_host_configuration flag.
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
index be1354bf79..b6b6565dec 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationFunction.java
@@ -81,12 +81,6 @@ public class BuildConfigurationFunction implements SkyFunction {
key.getBuildOptions(),
workspaceNameValue.getName(),
ruleClassProvider.getDynamicTransitionMapper());
- // Unlike static configurations, dynamic configurations don't need to embed transition logic
- // in the configuration itself. However we still use this interface to supply
- // BuildConfigurationCollection.Transitions.configurationHook. Once we remove that dependency
- // we can remove the below completely.
- config.setConfigurationTransitions(collectionFactory.getDynamicTransitionLogic(config));
-
return new BuildConfigurationValue(config);
}