Remove ConfigurationCollectionFactory as part of the static config cleanup.
PiperOrigin-RevId: 165578449
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
deleted file mode 100644
index 8d93d05..0000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationCollectionFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2014 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-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.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
-import com.google.devtools.build.lib.analysis.config.PackageProviderForConfigurations;
-import com.google.devtools.build.lib.events.EventHandler;
-import javax.annotation.Nullable;
-
-/**
- * A factory for configuration collection creation.
- */
-public interface ConfigurationCollectionFactory {
- /**
- * Creates the top-level configuration for a build.
- *
- * <p>Also it may create a set of BuildConfigurations and define a transition table over them. All
- * configurations during a build should be accessible from this top-level configuration via
- * configuration transitions.
- *
- * @param cache a cache for BuildConfigurations
- * @param loadedPackageProvider the package provider
- * @param buildOptions top-level build options representing the command-line
- * @param errorEventListener the event listener for errors
- * @param mainRepositoryName the workspace name of the main repository
- * @return the top-level configuration
- * @throws InvalidConfigurationException
- */
- @Nullable
- BuildConfiguration createConfigurations(
- Cache<String, BuildConfiguration> cache,
- PackageProviderForConfigurations loadedPackageProvider,
- BuildOptions buildOptions,
- EventHandler errorEventListener,
- String mainRepositoryName)
- throws InvalidConfigurationException, InterruptedException;
-}
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 f46145a..b929b99 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
@@ -213,7 +213,6 @@
private final Map<Class<? extends RuleDefinition>, RuleClass> ruleMap = new HashMap<>();
private final Digraph<Class<? extends RuleDefinition>> dependencyGraph =
new Digraph<>();
- private ConfigurationCollectionFactory configurationCollectionFactory;
private ImmutableMap.Builder<Attribute.Transition, Attribute.Transition> dynamicTransitionMaps
= ImmutableMap.builder();
private Class<? extends BuildConfiguration.Fragment> universalFragment;
@@ -325,11 +324,6 @@
return this;
}
- public Builder setConfigurationCollectionFactory(ConfigurationCollectionFactory factory) {
- this.configurationCollectionFactory = factory;
- return this;
- }
-
public Builder addDynamicTransitionMaps(Map<Attribute.Transition, Attribute.Transition> maps) {
dynamicTransitionMaps.putAll(maps);
return this;
@@ -443,7 +437,6 @@
ImmutableList.copyOf(buildInfoFactories),
ImmutableList.copyOf(configurationOptions),
ImmutableList.copyOf(configurationFragmentFactories),
- configurationCollectionFactory,
new DynamicTransitionMapper(dynamicTransitionMaps.build()),
universalFragment,
prerequisiteValidator,
@@ -548,11 +541,6 @@
private final ImmutableList<ConfigurationFragmentFactory> configurationFragmentFactories;
/**
- * The factory that creates the configuration collection.
- */
- private final ConfigurationCollectionFactory configurationCollectionFactory;
-
- /**
* The dynamic configuration transition mapper.
*/
private final DynamicTransitionMapper dynamicTransitionMapper;
@@ -582,7 +570,6 @@
ImmutableList<BuildInfoFactory> buildInfoFactories,
ImmutableList<Class<? extends FragmentOptions>> configurationOptions,
ImmutableList<ConfigurationFragmentFactory> configurationFragments,
- ConfigurationCollectionFactory configurationCollectionFactory,
DynamicTransitionMapper dynamicTransitionMapper,
Class<? extends BuildConfiguration.Fragment> universalFragment,
PrerequisiteValidator prerequisiteValidator,
@@ -600,7 +587,6 @@
this.buildInfoFactories = buildInfoFactories;
this.configurationOptions = configurationOptions;
this.configurationFragmentFactories = configurationFragments;
- this.configurationCollectionFactory = configurationCollectionFactory;
this.dynamicTransitionMapper = dynamicTransitionMapper;
this.universalFragment = universalFragment;
this.prerequisiteValidator = prerequisiteValidator;
@@ -674,13 +660,6 @@
}
/**
- * Returns the configuration collection creator.
- */
- public ConfigurationCollectionFactory getConfigurationCollectionFactory() {
- return configurationCollectionFactory;
- }
-
- /**
* Returns the dynamic configuration transition mapper.
*/
public DynamicTransitionMapper getDynamicTransitionMapper() {
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
deleted file mode 100644
index d740102..0000000
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2014 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.bazel.rules;
-
-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.ListMultimap;
-import com.google.common.collect.Table;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
-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.BuildConfigurationCollection.ConfigurationHolder;
-import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection.Transitions;
-import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
-import com.google.devtools.build.lib.analysis.config.PackageProviderForConfigurations;
-import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
-import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
-import com.google.devtools.build.lib.packages.Attribute.Transition;
-import com.google.devtools.build.lib.rules.cpp.CppRuleClasses.LipoTransition;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
-import javax.annotation.Nullable;
-
-/**
- * Configuration collection used by the rules Bazel knows for statically configured builds.
- *
- * <p>Dynamically configured builds should never touch this file.
- */
-public class BazelConfigurationCollection implements ConfigurationCollectionFactory {
- @Override
- @Nullable
- public BuildConfiguration createConfigurations(
- Cache<String, BuildConfiguration> cache,
- PackageProviderForConfigurations packageProvider,
- BuildOptions buildOptions,
- EventHandler eventHandler,
- String mainRepositoryName)
- throws InvalidConfigurationException, InterruptedException {
- // Target configuration
- // Dead code: being removed. The original value used a class that's already been deleted.
- BuildConfiguration targetConfiguration = null;
- if (targetConfiguration == null) {
- return null;
- }
-
- BuildConfiguration dataConfiguration = targetConfiguration;
-
- // Host configuration
- // Note that this passes in the dataConfiguration, not the target
- // configuration. This is intentional.
- BuildConfiguration hostConfiguration = getHostConfigurationFromRequest(
- packageProvider, dataConfiguration, buildOptions, cache, mainRepositoryName);
- if (hostConfiguration == null) {
- return null;
- }
-
- ListMultimap<SplitTransition<?>, BuildConfiguration> splitTransitionsTable =
- ArrayListMultimap.create();
- for (SplitTransition<BuildOptions> transition : buildOptions.getPotentialSplitTransitions()) {
- for (BuildOptions splitOptions : transition.split(buildOptions)) {
- // Dead code: being removed. The original value used a class that's already been deleted.
- BuildConfiguration splitConfig = null;
- splitTransitionsTable.put(transition, splitConfig);
- }
- }
- if (packageProvider.valuesMissing()) {
- return null;
- }
- BuildConfiguration result = setupTransitions(
- targetConfiguration, dataConfiguration, hostConfiguration, splitTransitionsTable);
- result.reportInvalidOptions(eventHandler);
- return result;
- }
-
- private static class BazelTransitions extends BuildConfigurationCollection.Transitions {
- public BazelTransitions(BuildConfiguration configuration,
- Map<? extends Transition, ConfigurationHolder> transitionTable,
- ListMultimap<? extends SplitTransition<?>, BuildConfiguration> splitTransitionTable) {
- super(configuration, transitionTable, splitTransitionTable);
- }
-
- @Override
- @Deprecated
- public Transition getDynamicTransition(Transition configurationTransition) {
- // Keep this interface for now because some other dead code is still calling it.
- throw new UnsupportedOperationException(
- "This interface is no longer supported and will be removed soon.");
- }
- }
-
- /**
- * Gets the correct host configuration for this build. The behavior depends on the value of the
- * --distinct_host_configuration flag.
- *
- * <p>With --distinct_host_configuration=false, we use identical configurations for the host and
- * target, and you can ignore everything below. But please note: if you're cross-compiling for k8
- * on a piii machine, your build will fail. This is a stopgap measure.
- *
- * <p>Currently, every build is (in effect) a cross-compile, in the strict sense that host and
- * target configurations are unequal, thus we do not issue a "cross-compiling" warning. (Perhaps
- * we should?) *
- *
- * @param requestConfig the requested target (not host!) configuration for this build.
- * @param buildOptions the configuration options used for the target configuration
- */
- @Nullable
- private static BuildConfiguration getHostConfigurationFromRequest(
- PackageProviderForConfigurations loadedPackageProvider,
- BuildConfiguration requestConfig,
- BuildOptions buildOptions,
- Cache<String, BuildConfiguration> cache,
- String repositoryName)
- throws InvalidConfigurationException, InterruptedException {
- BuildConfiguration.Options commonOptions = buildOptions.get(BuildConfiguration.Options.class);
- if (!commonOptions.useDistinctHostConfiguration) {
- return requestConfig;
- } else {
- // Dead code: being removed. The original value used a class that's already been deleted.
- BuildConfiguration hostConfig = null;
- if (hostConfig == null) {
- return null;
- }
- return hostConfig;
- }
- }
-
- static BuildConfiguration setupTransitions(BuildConfiguration targetConfiguration,
- BuildConfiguration dataConfiguration, BuildConfiguration hostConfiguration,
- ListMultimap<SplitTransition<?>, BuildConfiguration> splitTransitionsTable) {
- Set<BuildConfiguration> allConfigurations = new LinkedHashSet<>();
- allConfigurations.add(targetConfiguration);
- allConfigurations.add(dataConfiguration);
- allConfigurations.add(hostConfiguration);
- allConfigurations.addAll(splitTransitionsTable.values());
-
- Table<BuildConfiguration, Transition, ConfigurationHolder> transitionBuilder =
- HashBasedTable.create();
- for (BuildConfiguration from : allConfigurations) {
- for (ConfigurationTransition transition : ConfigurationTransition.values()) {
- BuildConfiguration to;
- if (transition == ConfigurationTransition.HOST) {
- to = hostConfiguration;
- } else if (transition == ConfigurationTransition.DATA && from == targetConfiguration) {
- to = dataConfiguration;
- } else {
- to = from;
- }
- transitionBuilder.put(from, transition, new ConfigurationHolder(to));
- }
- }
-
- // TODO(bazel-team): This makes LIPO totally not work. Just a band-aid until we get around to
- // implementing a way for the C++ rules to contribute this transition to the configuration
- // collection.
- for (BuildConfiguration config : allConfigurations) {
- transitionBuilder.put(config, LipoTransition.LIPO_COLLECTOR,
- new ConfigurationHolder(config));
- transitionBuilder.put(config, LipoTransition.TARGET_CONFIG_FOR_LIPO,
- new ConfigurationHolder(config.isHostConfiguration() ? null : config));
- }
-
- for (BuildConfiguration config : allConfigurations) {
- // We allow host configurations to be shared between target configurations. In that case, the
- // transitions may already be set.
- // TODO(bazel-team): Check that the transitions are identical, or even better, change the
- // code to set the host configuration transitions before we even create the target
- // configuration.
- if (config.isHostConfiguration() && config.getTransitions() != null) {
- continue;
- }
- boolean isSplitConfig = splitTransitionsTable.values().contains(config);
- // When --experimental_multi_cpu is set, we create multiple target configurations that only
- // differ by --cpu. We may therefore end up with multiple identical split configurations, if
- // the split transition overwrites the cpu, which it usually does.
- if (isSplitConfig && config.getTransitions() != null) {
- continue;
- }
- Transitions outgoingTransitions =
- new BazelTransitions(
- config,
- transitionBuilder.row(config),
- // Split transitions must not have their own split transitions because then they
- // would be applied twice due to a quirk in DependencyResolver. See the comment in
- // DependencyResolver.resolveLateBoundAttributes().
- isSplitConfig
- ? ImmutableListMultimap.<SplitTransition<?>, BuildConfiguration>of()
- : splitTransitionsTable);
- config.setConfigurationTransitions(outgoingTransitions);
- }
-
- return targetConfiguration;
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index 87de50c..520272e 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -209,7 +209,6 @@
public void init(Builder builder) {
builder
.setProductName("bazel")
- .setConfigurationCollectionFactory(new BazelConfigurationCollection())
.setPrelude("//tools/build_rules:prelude_bazel")
.setNativeLauncherLabel("//tools/launcher:launcher")
.setRunfilesPrefix(Label.DEFAULT_REPOSITORY_DIRECTORY)
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 b6b6565..266b320 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
@@ -19,7 +19,6 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.MutableClassToInstanceMap;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -40,13 +39,11 @@
private final BlazeDirectories directories;
private final ConfiguredRuleClassProvider ruleClassProvider;
- private final ConfigurationCollectionFactory collectionFactory;
public BuildConfigurationFunction(BlazeDirectories directories,
RuleClassProvider ruleClassProvider) {
this.directories = directories;
this.ruleClassProvider = (ConfiguredRuleClassProvider) ruleClassProvider;
- collectionFactory = this.ruleClassProvider.getConfigurationCollectionFactory();
}
@Override
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
index 5131112..ad149ea 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BazelAnalysisMock.java
@@ -19,14 +19,12 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.PlatformConfigurationLoader;
import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
import com.google.devtools.build.lib.analysis.featurecontrol.FeaturePolicyLoader;
import com.google.devtools.build.lib.analysis.util.AnalysisMock;
import com.google.devtools.build.lib.bazel.rules.BazelConfiguration;
-import com.google.devtools.build.lib.bazel.rules.BazelConfigurationCollection;
import com.google.devtools.build.lib.bazel.rules.python.BazelPythonConfiguration;
import com.google.devtools.build.lib.packages.util.BazelMockCcSupport;
import com.google.devtools.build.lib.packages.util.MockCcSupport;
@@ -255,11 +253,6 @@
}
@Override
- public ConfigurationCollectionFactory createConfigurationCollectionFactory() {
- return new BazelConfigurationCollection();
- }
-
- @Override
public ConfiguredRuleClassProvider createRuleClassProvider() {
return TestRuleClassProvider.getRuleClassProvider();
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
index 4c1d1d5..ba14b25 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisMock.java
@@ -15,7 +15,6 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
import com.google.devtools.build.lib.bazel.rules.android.AndroidNdkRepositoryFunction;
@@ -98,8 +97,6 @@
*/
public abstract void setupMockWorkspaceFiles(Path embeddedBinariesRoot) throws IOException;
- public abstract ConfigurationCollectionFactory createConfigurationCollectionFactory();
-
/** Returns the default factories for configuration fragments used in tests. */
public abstract List<ConfigurationFragmentFactory> getDefaultConfigurationFragmentFactories();
@@ -155,11 +152,6 @@
}
@Override
- public ConfigurationCollectionFactory createConfigurationCollectionFactory() {
- return delegate.createConfigurationCollectionFactory();
- }
-
- @Override
public List<ConfigurationFragmentFactory> getDefaultConfigurationFragmentFactories() {
return delegate.getDefaultConfigurationFragmentFactories();
}
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
index 3d6288d..5e99114 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
@@ -22,7 +22,6 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -47,7 +46,6 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import org.mockito.Mockito;
/** Tests the handling of rc-options in {@link BlazeCommandDispatcher}. */
@RunWith(JUnit4.class)
@@ -155,8 +153,6 @@
builder.addConfigurationOptions(MockFragmentOptions.class);
// The tools repository is needed for createGlobals
builder.setToolsRepository(TestConstants.TOOLS_REPOSITORY);
- builder.setConfigurationCollectionFactory(
- Mockito.mock(ConfigurationCollectionFactory.class));
}
})
.build();
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
index 8d8e8d6..b254c4e 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
@@ -19,7 +19,6 @@
import com.google.common.collect.ImmutableList;
import com.google.common.util.concurrent.SettableFuture;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
-import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -52,7 +51,6 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import org.mockito.Mockito;
/** Tests of CommandEnvironment's command-interrupting exit functionality. */
@RunWith(JUnit4.class)
@@ -364,9 +362,6 @@
public void initializeRuleClasses(ConfiguredRuleClassProvider.Builder builder) {
// Can't create a Skylark environment without a tools repository!
builder.setToolsRepository(TestConstants.TOOLS_REPOSITORY);
- // Can't create a runtime without a configuration collection factory!
- builder.setConfigurationCollectionFactory(
- Mockito.mock(ConfigurationCollectionFactory.class));
// Can't create a defaults package without the base options in there!
builder.addConfigurationOptions(BuildConfiguration.Options.class);
}