Remove the unnecessary `BuildConfigurationValue` wrapper around `BuildConfiguration`.
Instead, have `BuildConfiguration` implement `SkyValue` directly, and rename it to `BuildConfigurationValue`. Its `equals` and `hashCode` methods are removed - they were incomplete (notably, they did not consider the repository name). This was covered up by the fact that the wrapping `SkyValue` did not implement equality, preventing false change pruning.
`BuildConfigurationValue.Key` is promoted to a top-level class `BuildConfigurationKey`.
PiperOrigin-RevId: 406166220
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index ccf94eb..4606aad 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -308,7 +308,7 @@
"//src/main/java/com/google/devtools/build/lib/skyframe:action_execution_inactivity_watchdog",
"//src/main/java/com/google/devtools/build/lib/skyframe:actiongraph/v2/aquery_output_handler",
"//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator",
- "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/java/com/google/devtools/build/lib/skyframe:builder",
"//src/main/java/com/google/devtools/build/lib/skyframe:configuration_phase_started_event",
"//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key",
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Action.java b/src/main/java/com/google/devtools/build/lib/actions/Action.java
index 1a4adb1..b286e9d 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Action.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Action.java
@@ -65,10 +65,10 @@
* <li>As much as possible, make the cache key computation obvious - fully hash every field
* (except input contents, but including input and output names if they appear in the command
* line) in the class, and avoid referencing anything that isn't needed for action execution,
- * such as {@link com.google.devtools.build.lib.analysis.config.BuildConfiguration} objects or
- * even fragments thereof; if the action has a command line, err on the side of hashing the
- * entire command line, even if that seems expensive. It's always safe to hash too much - the
- * negative effect on incremental build times is usually negligible.
+ * such as {@link com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}
+ * objects or even fragments thereof; if the action has a command line, err on the side of
+ * hashing the entire command line, even if that seems expensive. It's always safe to hash too
+ * much - the negative effect on incremental build times is usually negligible.
* <li>Add test coverage for the cache key computation; use {@link
* com.google.devtools.build.lib.analysis.util.ActionTester} to generate as many combinations
* of field values as possible; add test coverage every time you add another field.
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInput.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInput.java
index 88a3f2e..573326a 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ActionInput.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInput.java
@@ -46,7 +46,7 @@
/**
* Returns if this input's file system path includes a digest of its content. See {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths}.
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#useContentBasedOutputPaths}.
*/
default boolean contentBasedPath() {
return false;
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
index e6c55fe..e5e927c 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java
@@ -383,7 +383,7 @@
/**
* Content-based output paths are experimental. Only derived artifacts that are explicitly opted
* in by their creating rules should use them and only when {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths}
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#useContentBasedOutputPaths}
* is on.
*/
private final boolean contentBasedPath;
@@ -397,7 +397,7 @@
/**
* Same as {@link #create(ArtifactRoot, PathFragment, ActionLookupKey)} but includes the option
* to use a content-based path for this artifact (see {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths}).
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#useContentBasedOutputPaths}).
*/
public static DerivedArtifact create(
ArtifactRoot root, PathFragment execPath, ActionLookupKey owner, boolean contentBasedPath) {
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
index 8cd3a5f..6c53018 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
@@ -216,7 +216,7 @@
/**
* Same as {@link #getDerivedArtifact(PathFragment, ArtifactRoot, ArtifactOwner)} but includes the
* option to use a content-based path for this artifact (see {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths}).
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#useContentBasedOutputPaths}).
*/
public Artifact.DerivedArtifact getDerivedArtifact(
PathFragment rootRelativePath,
diff --git a/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationEvent.java b/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationEvent.java
index d072222..af4234e 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationEvent.java
@@ -25,7 +25,7 @@
/**
* Encapsulation of {@link BuildEvent} info associated with a {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration}.
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}.
*/
@AutoCodec
public class BuildConfigurationEvent implements BuildEvent {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
index 300fe53..a13e10f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java
@@ -25,7 +25,7 @@
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.MiddlemanFactory;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.lib.vfs.Root;
@@ -67,7 +67,7 @@
/**
* Same as {@link #getDerivedArtifact(PathFragment, ArtifactRoot)} but includes the option to use
* a content-based path for this artifact (see {@link
- * BuildConfiguration#useContentBasedOutputPaths()}).
+ * BuildConfigurationValue#useContentBasedOutputPaths()}).
*/
Artifact.DerivedArtifact getDerivedArtifact(
PathFragment rootRelativePath, ArtifactRoot root, boolean contentBasedPath);
@@ -178,8 +178,8 @@
* @param stamp whether stamping is enabled
* @param config the current build configuration.
*/
- ImmutableList<Artifact> getBuildInfo(boolean stamp, BuildInfoKey key, BuildConfiguration config)
- throws InterruptedException;
+ ImmutableList<Artifact> getBuildInfo(
+ boolean stamp, BuildInfoKey key, BuildConfigurationValue config) throws InterruptedException;
/**
* Returns the set of orphan Artifacts (i.e. Artifacts without generating action). Should only be
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java
index a02d4ce..0938064 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java
@@ -25,7 +25,7 @@
/**
* Options that affect the <i>mechanism</i> of analysis. These are distinct from {@link
* com.google.devtools.build.lib.analysis.config.BuildOptions}, which affect the <i>value</i> of a
- * BuildConfiguration.
+ * BuildConfigurationValue.
*/
public class AnalysisOptions extends OptionsBase {
@Option(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisRootCauseEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisRootCauseEvent.java
index 7be2f31..a796ea9 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisRootCauseEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisRootCauseEvent.java
@@ -16,7 +16,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil;
@@ -35,12 +35,12 @@
* cause. It also allows UIs to collate errors by root cause.
*/
public class AnalysisRootCauseEvent implements BuildEventWithConfiguration {
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private final Label label;
private final String errorMessage;
public AnalysisRootCauseEvent(
- @Nullable BuildConfiguration configuration, Label label, String errorMessage) {
+ @Nullable BuildConfigurationValue configuration, Label label, String errorMessage) {
this.configuration = configuration;
this.label = label;
this.errorMessage = errorMessage;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
index 872956f..9f79dc3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java
@@ -19,8 +19,8 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;
-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.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ConfigurationResolver;
import com.google.devtools.build.lib.analysis.config.ConfigurationResolver.TopLevelTargetsAndConfigsResult;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -56,7 +56,7 @@
* it returns the value of the stamp attribute, or of the stamp option if the attribute value is
* -1.
*/
- public static boolean isStampingEnabled(RuleContext ruleContext, BuildConfiguration config) {
+ public static boolean isStampingEnabled(RuleContext ruleContext, BuildConfigurationValue config) {
if (config.isToolConfiguration()) {
return false;
}
@@ -180,7 +180,7 @@
// We use a hash set here to remove duplicate nodes; this can happen for input files and package
// groups.
LinkedHashSet<TargetAndConfiguration> nodes = new LinkedHashSet<>(targets.size());
- for (BuildConfiguration config : configurations.getTargetConfigurations()) {
+ for (BuildConfigurationValue config : configurations.getTargetConfigurations()) {
for (Target target : targets) {
nodes.add(new TargetAndConfiguration(target, config));
}
@@ -188,16 +188,17 @@
// We'll get the configs from ConfigurationsCollector#getConfigurations, which gets
// configurations for deps including transitions.
- Multimap<BuildConfiguration, DependencyKey> asDeps = targetsToDeps(nodes, ruleClassProvider);
+ Multimap<BuildConfigurationValue, DependencyKey> asDeps =
+ targetsToDeps(nodes, ruleClassProvider);
return ConfigurationResolver.getConfigurationsFromExecutor(
nodes, asDeps, eventHandler, configurationsCollector);
}
@VisibleForTesting
- public static Multimap<BuildConfiguration, DependencyKey> targetsToDeps(
+ public static Multimap<BuildConfigurationValue, DependencyKey> targetsToDeps(
Collection<TargetAndConfiguration> nodes, ConfiguredRuleClassProvider ruleClassProvider) {
- Multimap<BuildConfiguration, DependencyKey> asDeps = ArrayListMultimap.create();
+ Multimap<BuildConfigurationValue, DependencyKey> asDeps = ArrayListMultimap.create();
for (TargetAndConfiguration targetAndConfig : nodes) {
ConfigurationTransition transition =
TransitionResolver.evaluateTransition(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java
index f5796fa..740a074 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java
@@ -14,7 +14,7 @@
package com.google.devtools.build.lib.analysis;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil;
@@ -30,10 +30,10 @@
public class AspectConfiguredEvent implements BuildEventWithConfiguration {
private final Label target;
private final String aspect;
- private final Collection<BuildConfiguration> configurations;
+ private final Collection<BuildConfigurationValue> configurations;
AspectConfiguredEvent(
- Label target, String aspect, Collection<BuildConfiguration> configurations) {
+ Label target, String aspect, Collection<BuildConfigurationValue> configurations) {
this.configurations = configurations;
this.target = target;
this.aspect = aspect;
@@ -42,7 +42,7 @@
@Override
public Collection<BuildEvent> getConfigurations() {
ImmutableList.Builder<BuildEvent> builder = new ImmutableList.Builder<>();
- for (BuildConfiguration config : configurations) {
+ for (BuildConfigurationValue config : configurations) {
if (config != null) {
builder.add(config.toBuildEvent());
} else {
@@ -60,7 +60,7 @@
@Override
public Collection<BuildEventId> getChildrenEvents() {
ImmutableList.Builder<BuildEventId> childrenBuilder = ImmutableList.builder();
- for (BuildConfiguration config : configurations) {
+ for (BuildConfigurationValue config : configurations) {
if (config != null) {
childrenBuilder.add(BuildEventIdUtil.targetCompleted(target, config.getEventId()));
} else {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
index 9a29547..4098ab5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -408,7 +408,7 @@
"//src/main/java/com/google/devtools/build/lib/shell",
"//src/main/java/com/google/devtools/build/lib/skyframe:aspect_creation_exception",
"//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator",
- "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/java/com/google/devtools/build/lib/skyframe:build_info_collection_value",
"//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_and_data",
"//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key",
@@ -614,7 +614,7 @@
"//src/main/java/com/google/devtools/build/lib/pkgcache",
"//src/main/java/com/google/devtools/build/lib/profiler",
"//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator",
- "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key",
"//src/main/java/com/google/devtools/build/lib/skyframe:coverage_report_value",
"//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster",
@@ -683,7 +683,7 @@
":config/config_matching_provider",
":transitive_info_collection",
"//src/main/java/com/google/devtools/build/lib/cmdline",
- "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/java/net/starlark/java/eval",
"//third_party:guava",
"//third_party:jsr305",
@@ -1512,7 +1512,7 @@
java_library(
name = "config/build_configuration",
srcs = [
- "config/BuildConfiguration.java",
+ "config/BuildConfigurationValue.java",
"config/OutputDirectories.java",
],
deps = [
@@ -1533,12 +1533,14 @@
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/events",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/starlarkbuildapi",
"//src/main/java/com/google/devtools/build/lib/util",
"//src/main/java/com/google/devtools/build/lib/util:os",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+ "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
"//src/main/java/net/starlark/java/annot",
"//src/main/protobuf:failure_details_java_proto",
"//third_party:guava",
@@ -2072,7 +2074,7 @@
"//src/main/java/com/google/devtools/build/lib/events",
"//src/main/java/com/google/devtools/build/lib/packages",
"//src/main/java/com/google/devtools/build/lib/pkgcache",
- "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/protobuf:failure_details_java_proto",
"//third_party:auto_value",
"//third_party:guava",
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index 861206b..1b7fb7e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -29,7 +29,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.config.RunUnder;
import com.google.devtools.build.lib.analysis.constraints.ConstraintConstants;
@@ -121,7 +121,7 @@
@SerializationConstant @AutoCodec.VisibleForSerialization @VisibleForTesting
static final LabelListLateBoundDefault<?> ACTION_LISTENER =
LabelListLateBoundDefault.fromTargetConfiguration(
- BuildConfiguration.class,
+ BuildConfigurationValue.class,
(rule, attributes, configuration) -> configuration.getActionListeners());
public static final String DEFAULT_COVERAGE_SUPPORT_VALUE = "//tools/test:coverage_support";
@@ -152,13 +152,13 @@
TestConfiguration.class, defaultValue, COVERAGE_REPORT_GENERATOR_CONFIGURATION_RESOLVER);
}
- public static LabelLateBoundDefault<BuildConfiguration> getCoverageOutputGeneratorLabel() {
+ public static LabelLateBoundDefault<BuildConfigurationValue> getCoverageOutputGeneratorLabel() {
return LabelLateBoundDefault.fromTargetConfiguration(
- BuildConfiguration.class, null, COVERAGE_OUTPUT_GENERATOR_RESOLVER);
+ BuildConfigurationValue.class, null, COVERAGE_OUTPUT_GENERATOR_RESOLVER);
}
@SerializationConstant @AutoCodec.VisibleForSerialization
- static final Resolver<BuildConfiguration, Label> COVERAGE_OUTPUT_GENERATOR_RESOLVER =
+ static final Resolver<BuildConfigurationValue, Label> COVERAGE_OUTPUT_GENERATOR_RESOLVER =
(rule, attributes, configuration) -> {
if (configuration.isCodeCoverageEnabled()) {
return Label.parseAbsoluteUnchecked(DEFAULT_COVERAGE_OUTPUT_GENERATOR_VALUE);
@@ -172,7 +172,7 @@
@SerializationConstant @AutoCodec.VisibleForSerialization
public static final LabelLateBoundDefault<?> RUN_UNDER =
LabelLateBoundDefault.fromTargetConfiguration(
- BuildConfiguration.class,
+ BuildConfigurationValue.class,
null,
(rule, attributes, configuration) -> {
RunUnder runUnder = configuration.getRunUnder();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index ea261a9..749a8d0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -36,8 +36,8 @@
import com.google.devtools.build.lib.actions.ArtifactFactory;
import com.google.devtools.build.lib.actions.PackageRoots;
import com.google.devtools.build.lib.actions.TotalAndConfiguredTargetOnlyMetric;
-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.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigurationResolver.TopLevelTargetsAndConfigsResult;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -75,7 +75,7 @@
import com.google.devtools.build.lib.skyframe.AspectKeyCreator;
import com.google.devtools.build.lib.skyframe.AspectKeyCreator.AspectKey;
import com.google.devtools.build.lib.skyframe.AspectKeyCreator.TopLevelAspectsKey;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.skyframe.CoverageReportValue;
import com.google.devtools.build.lib.skyframe.PrepareAnalysisPhaseValue;
@@ -117,7 +117,7 @@
* build.
*
* <p>Targets are implemented by the {@link Target} hierarchy in the {@code lib.packages} code.
- * Configurations are implemented by {@link BuildConfiguration}. The pair of these together is
+ * Configurations are implemented by {@link BuildConfigurationValue}. The pair of these together is
* represented by an instance of class {@link ConfiguredTarget}; this is the root of a hierarchy
* with different implementations for each kind of target: source file, derived file, rules, etc.
*
@@ -255,7 +255,7 @@
new MakeEnvironmentEvent(
configurations.getTargetConfigurations().get(0).getMakeEnvironment()));
}
- for (BuildConfiguration targetConfig : configurations.getTargetConfigurations()) {
+ for (BuildConfigurationValue targetConfig : configurations.getTargetConfigurations()) {
eventBus.post(targetConfig.toBuildEvent());
}
@@ -263,7 +263,7 @@
topLevelTargetsWithConfigsResult.getTargetsAndConfigs();
// Report the generated association of targets to configurations
- Multimap<Label, BuildConfiguration> byLabel = ArrayListMultimap.create();
+ Multimap<Label, BuildConfigurationValue> byLabel = ArrayListMultimap.create();
for (TargetAndConfiguration pair : topLevelTargetsWithConfigs) {
byLabel.put(pair.getLabel(), pair.getConfiguration());
}
@@ -332,12 +332,12 @@
}
}
- Multimap<Pair<Label, String>, BuildConfiguration> aspectConfigurations =
+ Multimap<Pair<Label, String>, BuildConfigurationValue> aspectConfigurations =
ArrayListMultimap.create();
ImmutableList<AspectClass> aspectClasses = aspectClassesBuilder.build();
ImmutableList.Builder<TopLevelAspectsKey> aspectsKeys = ImmutableList.builder();
for (TargetAndConfiguration targetSpec : topLevelTargetsWithConfigs) {
- BuildConfiguration configuration = targetSpec.getConfiguration();
+ BuildConfigurationValue configuration = targetSpec.getConfiguration();
for (AspectClass aspectClass : aspectClasses) {
aspectConfigurations.put(
Pair.of(targetSpec.getLabel(), aspectClass.getName()), configuration);
@@ -360,13 +360,12 @@
getArtifactFactory().noteAnalysisStarting();
SkyframeAnalysisResult skyframeAnalysisResult;
try {
- Supplier<Map<BuildConfigurationValue.Key, BuildConfiguration>> configurationLookupSupplier =
+ Supplier<Map<BuildConfigurationKey, BuildConfigurationValue>> configurationLookupSupplier =
() -> {
- Map<BuildConfigurationValue.Key, BuildConfiguration> result = new HashMap<>();
+ Map<BuildConfigurationKey, BuildConfigurationValue> result = new HashMap<>();
for (TargetAndConfiguration node : topLevelTargetsWithConfigs) {
if (node.getConfiguration() != null) {
- result.put(
- BuildConfigurationValue.key(node.getConfiguration()), node.getConfiguration());
+ result.put(node.getConfiguration().getKey(), node.getConfiguration());
}
}
return result;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
index aa53a09..f43bbdf 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java
@@ -29,7 +29,7 @@
import com.google.devtools.build.lib.actions.MiddlemanFactory;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.Target;
@@ -379,7 +379,7 @@
@Override
public ImmutableList<Artifact> getBuildInfo(
- boolean stamp, BuildInfoKey key, BuildConfiguration config) throws InterruptedException {
+ boolean stamp, BuildInfoKey key, BuildConfigurationValue config) throws InterruptedException {
BuildInfoCollectionValue collectionValue =
(BuildInfoCollectionValue) skyframeEnv.getValue(BuildInfoCollectionValue.key(key, config));
if (collectionValue == null) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
index 2bf73e6..428e764 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
@@ -19,7 +19,7 @@
import com.google.common.collect.Streams;
import com.google.devtools.build.lib.analysis.MakeVariableSupplier.MapBackedMakeVariableSupplier;
import com.google.devtools.build.lib.analysis.MakeVariableSupplier.TemplateVariableInfoBackedMakeVariableSupplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException;
import com.google.devtools.build.lib.analysis.stringtemplate.TemplateContext;
import com.google.devtools.build.lib.packages.Package;
@@ -68,14 +68,14 @@
ImmutableList.of("toolchains", ":cc_toolchain", "$toolchains");
public ConfigurationMakeVariableContext(
- RuleContext ruleContext, Package pkg, BuildConfiguration configuration) {
+ RuleContext ruleContext, Package pkg, BuildConfigurationValue configuration) {
this(ruleContext, pkg, configuration, ImmutableList.<MakeVariableSupplier>of());
}
public ConfigurationMakeVariableContext(
RuleContext ruleContext,
Package pkg,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
Iterable<? extends MakeVariableSupplier> makeVariableSuppliers) {
this(
getRuleTemplateVariableProviders(ruleContext, DEFAULT_MAKE_VARIABLE_ATTRIBUTES),
@@ -87,7 +87,7 @@
private ConfigurationMakeVariableContext(
ImmutableList<TemplateVariableInfo> ruleTemplateVariableProviders,
Package pkg,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
Iterable<? extends MakeVariableSupplier> extraMakeVariableSuppliers) {
this.allMakeVariableSuppliers =
ImmutableList.<MakeVariableSupplier>builder()
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationsResult.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationsResult.java
index 2916733..666c109 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationsResult.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationsResult.java
@@ -15,7 +15,7 @@
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
@@ -24,11 +24,11 @@
* registers if an error was recorded.
*/
public class ConfigurationsResult {
- private final Multimap<DependencyKey, BuildConfiguration> configurations;
+ private final Multimap<DependencyKey, BuildConfigurationValue> configurations;
private final boolean hasError;
private ConfigurationsResult(
- Multimap<DependencyKey, BuildConfiguration> configurations, boolean hasError) {
+ Multimap<DependencyKey, BuildConfigurationValue> configurations, boolean hasError) {
this.configurations = configurations;
this.hasError = hasError;
}
@@ -37,7 +37,7 @@
return hasError;
}
- public Multimap<DependencyKey, BuildConfiguration> getConfigurationMap() {
+ public Multimap<DependencyKey, BuildConfigurationValue> getConfigurationMap() {
return configurations;
}
@@ -47,11 +47,11 @@
/** Builder for {@link ConfigurationsResult} */
public static class Builder {
- private final Multimap<DependencyKey, BuildConfiguration> configurations =
+ private final Multimap<DependencyKey, BuildConfigurationValue> configurations =
ArrayListMultimap.create();
private boolean hasError = false;
- public void put(DependencyKey key, BuildConfiguration value) {
+ public void put(DependencyKey key, BuildConfigurationValue value) {
configurations.put(key, value);
}
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 150a8d3..bee3bc7 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
@@ -29,7 +29,7 @@
import com.google.devtools.build.lib.analysis.RuleContext.PrerequisiteValidator;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.Fragment;
import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
@@ -158,7 +158,7 @@
private final ImmutableList.Builder<SymlinkDefinition> symlinkDefinitions =
ImmutableList.builder();
private final Set<String> reservedActionMnemonics = new TreeSet<>();
- private BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider =
+ private BuildConfigurationValue.ActionEnvironmentProvider actionEnvironmentProvider =
(BuildOptions options) -> ActionEnvironment.EMPTY;
private ConstraintSemantics<RuleContext> constraintSemantics =
new RuleContextConstraintSemantics();
@@ -327,7 +327,7 @@
}
public Builder setActionEnvironmentProvider(
- BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider) {
+ BuildConfigurationValue.ActionEnvironmentProvider actionEnvironmentProvider) {
this.actionEnvironmentProvider = actionEnvironmentProvider;
return this;
}
@@ -649,7 +649,7 @@
private final ImmutableSet<String> reservedActionMnemonics;
- private final BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider;
+ private final BuildConfigurationValue.ActionEnvironmentProvider actionEnvironmentProvider;
private final ImmutableMap<String, Class<?>> configurationFragmentMap;
@@ -682,7 +682,7 @@
ImmutableList<Bootstrap> starlarkBootstraps,
ImmutableList<SymlinkDefinition> symlinkDefinitions,
ImmutableSet<String> reservedActionMnemonics,
- BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider,
+ BuildConfigurationValue.ActionEnvironmentProvider actionEnvironmentProvider,
ConstraintSemantics<RuleContext> constraintSemantics,
ThirdPartyLicenseExistencePolicy thirdPartyLicenseExistencePolicy,
@Nullable Label networkAllowlistForTests) {
@@ -914,7 +914,7 @@
return reservedActionMnemonics;
}
- public BuildConfiguration.ActionEnvironmentProvider getActionEnvironmentProvider() {
+ public BuildConfigurationValue.ActionEnvironmentProvider getActionEnvironmentProvider() {
return actionEnvironmentProvider;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
index b01b14f..c8c600a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java
@@ -18,14 +18,15 @@
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import javax.annotation.Nullable;
import net.starlark.java.eval.Structure;
/**
* A {@link ConfiguredTarget} is conceptually a {@link TransitiveInfoCollection} coupled with the
* {@link com.google.devtools.build.lib.packages.Target} and {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration} objects it was created from.
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue} objects it was created
+ * from.
*
* <p>This interface is supposed to only be used in {@link BuildView} and above. In particular, rule
* implementations should not be able to access the {@link ConfiguredTarget} objects associated with
@@ -46,15 +47,16 @@
}
/**
- * Returns the {@link BuildConfigurationValue.Key} naming the {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration} for which this configured
- * target is defined. Configuration is defined for all configured targets with exception of {@link
+ * Returns the {@link BuildConfigurationKey} naming the {@link
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue} for which this
+ * configured target is defined. Configuration is defined for all configured targets with
+ * exception of {@link
* com.google.devtools.build.lib.analysis.configuredtargets.InputFileConfiguredTarget} and {@link
* com.google.devtools.build.lib.analysis.configuredtargets.PackageGroupConfiguredTarget} for
* which it is always <b>null</b>.
*/
@Nullable
- BuildConfigurationValue.Key getConfigurationKey();
+ BuildConfigurationKey getConfigurationKey();
/** Returns keys for a legacy Starlark provider. */
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index d11739a..a4d52b3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -29,7 +29,7 @@
import com.google.devtools.build.lib.actions.FailAction;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.ExecGroupCollection.InvalidExecGroupException;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ConfigConditions;
import com.google.devtools.build.lib.analysis.config.Fragment;
import com.google.devtools.build.lib.analysis.config.RequiredFragmentsUtil;
@@ -174,8 +174,8 @@
AnalysisEnvironment analysisEnvironment,
ArtifactFactory artifactFactory,
Target target,
- BuildConfiguration config,
- BuildConfiguration hostConfig,
+ BuildConfigurationValue config,
+ BuildConfigurationValue hostConfig,
ConfiguredTargetKey configuredTargetKey,
OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> prerequisiteMap,
ConfigConditions configConditions,
@@ -275,8 +275,8 @@
private ConfiguredTarget createRule(
AnalysisEnvironment env,
Rule rule,
- BuildConfiguration configuration,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue configuration,
+ BuildConfigurationValue hostConfiguration,
ConfiguredTargetKey configuredTargetKey,
OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> prerequisiteMap,
ConfigConditions configConditions,
@@ -484,8 +484,8 @@
OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> prerequisiteMap,
ConfigConditions configConditions,
@Nullable ResolvedToolchainContext toolchainContext,
- BuildConfiguration aspectConfiguration,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue aspectConfiguration,
+ BuildConfigurationValue hostConfiguration,
AspectKeyCreator.AspectKey aspectKey)
throws InterruptedException, ActionConflictException, InvalidExecGroupException {
RuleContext ruleContext =
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java b/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java
index f958103..25f6257 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java
@@ -16,7 +16,7 @@
import com.google.auto.value.AutoValue;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.AspectDescriptor;
@@ -46,7 +46,7 @@
public abstract Builder setLabel(Label label);
/** Sets the configuration intended for this dependency. */
- public abstract Builder setConfiguration(BuildConfiguration configuration);
+ public abstract Builder setConfiguration(BuildConfigurationValue configuration);
/** Explicitly set the configuration for this dependency to null. */
public Builder withNullConfiguration() {
@@ -92,7 +92,7 @@
protected abstract Label getLabel();
@Nullable
- protected abstract BuildConfiguration getConfiguration();
+ protected abstract BuildConfigurationValue getConfiguration();
protected abstract AspectCollection getAspects();
@@ -120,7 +120,7 @@
/** Returns the explicit configuration intended for this dependency. */
@Nullable
- public abstract BuildConfiguration getConfiguration();
+ public abstract BuildConfigurationValue getConfiguration();
/**
* Returns the set of aspects which should be evaluated and combined with the configured target
@@ -132,7 +132,7 @@
/** Returns the configuration an aspect should be evaluated with. */
@Nullable
- public BuildConfiguration getAspectConfiguration(AspectDescriptor aspect) {
+ public BuildConfigurationValue getAspectConfiguration(AspectDescriptor aspect) {
return getConfiguration();
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index 45554ad..6802a6e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -24,7 +24,7 @@
import com.google.devtools.build.lib.analysis.AspectCollection.AspectCycleOnPathException;
import com.google.devtools.build.lib.analysis.DependencyKind.AttributeDependencyKind;
import com.google.devtools.build.lib.analysis.DependencyKind.ToolchainDependencyKind;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
import com.google.devtools.build.lib.analysis.config.Fragment;
@@ -81,7 +81,7 @@
*/
// TODO(#10523): Remove this when the migration period for toolchain transitions has ended.
public static boolean shouldUseToolchainTransition(
- @Nullable BuildConfiguration configuration, Target target) {
+ @Nullable BuildConfigurationValue configuration, Target target) {
return shouldUseToolchainTransition(
configuration, target instanceof Rule ? (Rule) target : null);
}
@@ -92,7 +92,7 @@
*/
// TODO(#10523): Remove this when the migration period for toolchain transitions has ended.
public static boolean shouldUseToolchainTransition(
- @Nullable BuildConfiguration configuration, @Nullable Rule rule) {
+ @Nullable BuildConfigurationValue configuration, @Nullable Rule rule) {
// Check whether the global incompatible change flag is set.
if (configuration != null) {
PlatformOptions platformOptions = configuration.getOptions().get(PlatformOptions.class);
@@ -181,7 +181,7 @@
*/
public final OrderedSetMultimap<DependencyKind, DependencyKey> dependentNodeMap(
TargetAndConfiguration node,
- BuildConfiguration hostConfig,
+ BuildConfigurationValue hostConfig,
@Nullable Aspect aspect,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
@Nullable ToolchainCollection<ToolchainContext> toolchainContexts,
@@ -238,7 +238,7 @@
*/
public final OrderedSetMultimap<DependencyKind, DependencyKey> dependentNodeMap(
TargetAndConfiguration node,
- BuildConfiguration hostConfig,
+ BuildConfigurationValue hostConfig,
Iterable<Aspect> aspects,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
@Nullable ToolchainCollection<ToolchainContext> toolchainContexts,
@@ -247,7 +247,7 @@
@Nullable TransitionFactory<RuleTransitionData> trimmingTransitionFactory)
throws Failure, InterruptedException, InconsistentAspectOrderException {
Target target = node.getTarget();
- BuildConfiguration config = node.getConfiguration();
+ BuildConfigurationValue config = node.getConfiguration();
OrderedSetMultimap<DependencyKind, Label> outgoingLabels = OrderedSetMultimap.create();
// TODO(bazel-team): Figure out a way to implement the below (and partiallyResolveDependencies)
@@ -313,7 +313,7 @@
*/
private OrderedSetMultimap<DependencyKind, PartiallyResolvedDependency>
partiallyResolveDependencies(
- BuildConfiguration config,
+ BuildConfigurationValue config,
OrderedSetMultimap<DependencyKind, Label> outgoingLabels,
@Nullable Rule fromRule,
@Nullable ConfiguredAttributeMapper attributeMap,
@@ -461,7 +461,7 @@
private OrderedSetMultimap<DependencyKind, DependencyKey> fullyResolveDependencies(
OrderedSetMultimap<DependencyKind, PartiallyResolvedDependency> partiallyResolvedDeps,
Map<Label, Target> targetMap,
- BuildConfiguration originalConfiguration,
+ BuildConfigurationValue originalConfiguration,
@Nullable TransitionFactory<RuleTransitionData> trimmingTransitionFactory)
throws InconsistentAspectOrderException {
OrderedSetMultimap<DependencyKind, DependencyKey> outgoingEdges = OrderedSetMultimap.create();
@@ -514,14 +514,14 @@
private void visitRule(
TargetAndConfiguration node,
- BuildConfiguration hostConfig,
+ BuildConfigurationValue hostConfig,
Iterable<Aspect> aspects,
ConfiguredAttributeMapper attributeMap,
@Nullable ToolchainCollection<ToolchainContext> toolchainContexts,
OrderedSetMultimap<DependencyKind, Label> outgoingLabels)
throws Failure {
Preconditions.checkArgument(node.getTarget() instanceof Rule, node);
- BuildConfiguration ruleConfig = Preconditions.checkNotNull(node.getConfiguration(), node);
+ BuildConfigurationValue ruleConfig = Preconditions.checkNotNull(node.getConfiguration(), node);
Rule rule = (Rule) node.getTarget();
try {
@@ -589,8 +589,8 @@
Rule rule,
ConfiguredAttributeMapper attributeMap,
Iterable<Aspect> aspects,
- BuildConfiguration ruleConfig,
- BuildConfiguration hostConfig) {
+ BuildConfigurationValue ruleConfig,
+ BuildConfigurationValue hostConfig) {
for (AttributeDependencyKind dependencyKind : getAttributes(rule, aspects)) {
Attribute attribute = dependencyKind.getAttribute();
if (!attribute.getCondition().apply(attributeMap)
@@ -634,8 +634,8 @@
OrderedSetMultimap<DependencyKind, Label> outgoingLabels,
Rule rule,
ConfiguredAttributeMapper attributeMap,
- BuildConfiguration ruleConfig,
- BuildConfiguration hostConfig) {
+ BuildConfigurationValue ruleConfig,
+ BuildConfigurationValue hostConfig) {
T attributeValue = null;
if (attribute.isImplicit()) {
// Since the attributes that come from aspects do not appear in attributeMap, we have to get
@@ -679,18 +679,18 @@
Rule rule,
AttributeMap attributeMap,
Attribute attribute,
- BuildConfiguration ruleConfig,
- BuildConfiguration hostConfig) {
+ BuildConfigurationValue ruleConfig,
+ BuildConfigurationValue hostConfig) {
Preconditions.checkState(!attribute.getTransitionFactory().isSplit());
@SuppressWarnings("unchecked")
LateBoundDefault<FragmentT, ?> lateBoundDefault =
(LateBoundDefault<FragmentT, ?>) attribute.getLateBoundDefault();
- BuildConfiguration attributeConfig =
+ BuildConfigurationValue attributeConfig =
lateBoundDefault.useHostConfiguration() ? hostConfig : ruleConfig;
Class<FragmentT> fragmentClass = lateBoundDefault.getFragmentClass();
// TODO(b/65746853): remove this when nothing uses it anymore
- if (BuildConfiguration.class.equals(fragmentClass)) {
+ if (BuildConfigurationValue.class.equals(fragmentClass)) {
return lateBoundDefault.resolve(rule, attributeMap, fragmentClass.cast(attributeConfig));
}
if (Void.class.equals(fragmentClass)) {
@@ -735,7 +735,7 @@
private static void collectPropagatingAspects(
ImmutableList<Aspect> aspectsPath,
String attributeName,
- BuildConfiguration config,
+ BuildConfigurationValue config,
@Nullable AspectClass aspectOwningAttribute,
ImmutableList.Builder<Aspect> allFilteredAspects) {
int aspectsNum = aspectsPath.size();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/EmptyConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/EmptyConfiguredTarget.java
index 798af73..811a731 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/EmptyConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/EmptyConfiguredTarget.java
@@ -21,13 +21,13 @@
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.Info;
import com.google.devtools.build.lib.packages.Provider;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import javax.annotation.Nullable;
/** A configured target that is empty. */
@Immutable
public class EmptyConfiguredTarget extends AbstractConfiguredTarget {
- public EmptyConfiguredTarget(Label label, BuildConfigurationValue.Key configurationKey) {
+ public EmptyConfiguredTarget(Label label, BuildConfigurationKey configurationKey) {
super(label, configurationKey, NestedSetBuilder.emptySet(Order.STABLE_ORDER));
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/EventHandlingErrorReporter.java b/src/main/java/com/google/devtools/build/lib/analysis/EventHandlingErrorReporter.java
index ebe3cc2..85f4006 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/EventHandlingErrorReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/EventHandlingErrorReporter.java
@@ -13,7 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.analysis;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.packages.Attribute;
@@ -105,7 +105,7 @@
protected abstract Label getLabel();
- protected abstract BuildConfiguration getConfiguration();
+ protected abstract BuildConfigurationValue getConfiguration();
protected abstract Location getRuleLocation();
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
index f8af04d..c846d3f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java
@@ -18,7 +18,7 @@
import com.google.common.collect.Multimap;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.extra.ExtraActionMapProvider;
import com.google.devtools.build.lib.analysis.extra.ExtraActionSpec;
import com.google.devtools.build.lib.cmdline.Label;
@@ -41,7 +41,7 @@
static ExtraActionArtifactsProvider createExtraActionProvider(
Set<ActionAnalysisMetadata> actionsWithoutExtraAction, RuleContext ruleContext)
throws InterruptedException {
- BuildConfiguration configuration = ruleContext.getConfiguration();
+ BuildConfigurationValue configuration = ruleContext.getConfiguration();
if (configuration.isToolConfiguration()) {
return ExtraActionArtifactsProvider.EMPTY;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
index d6ced49..dc4de8a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java
@@ -26,7 +26,8 @@
* The set of label - license associations in the transitive closure.
*
* <p>Always returns an empty set if {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration#checkLicenses()} is false.
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#checkLicenses()} is
+ * false.
*/
NestedSet<TargetLicense> getTransitiveLicenses();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java
index 36320ed..98d0876 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.analysis;
import com.google.common.collect.ListMultimap;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -49,7 +49,7 @@
}
NestedSetBuilder<TargetLicense> builder = NestedSetBuilder.linkOrder();
- BuildConfiguration configuration = ruleContext.getConfiguration();
+ BuildConfigurationValue configuration = ruleContext.getConfiguration();
Rule rule = ruleContext.getRule();
AttributeMap attributes = ruleContext.attributes();
License toolOutputLicense = rule.getToolOutputLicense(attributes);
@@ -95,7 +95,8 @@
return new LicensesProviderImpl(builder.build(), outputLicenses);
}
- private static boolean useOutputLicenses(Attribute attribute, BuildConfiguration configuration) {
+ private static boolean useOutputLicenses(
+ Attribute attribute, BuildConfigurationValue configuration) {
return configuration.isToolConfiguration() || attribute.useOutputLicenses();
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java
index 759110d..8fc5f99 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java
@@ -14,9 +14,10 @@
package com.google.devtools.build.lib.analysis;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.RuleClass;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
/**
* A shortcut class to the appropriate specialization of {@code RuleClass.ConfiguredTargetFactory}.
@@ -26,12 +27,11 @@
* <p>Actions (i.e. commands that are run during the build) are created by configured targets (see
* {@link ConfiguredTarget}), which are a pair of a {@link
* com.google.devtools.build.lib.cmdline.Label} (e.g. <code>//src:bazel</code>) and a {@link
- * com.google.devtools.build.lib.skyframe.BuildConfigurationValue.Key}, which is a key for a {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration}, which is a blob of data that
- * contains extra information about how the target should be built (for example, for which platform
- * or with which C++ preprocessor definitions). Accordingly, a target can give rise to multiple
- * configured targets, for example, if it needs to be built both for the host and the target
- * configuration.
+ * BuildConfigurationKey}, which is a key for a {@link BuildConfigurationValue}, which is a blob of
+ * data that contains extra information about how the target should be built (for example, for which
+ * platform or with which C++ preprocessor definitions). Accordingly, a target can give rise to
+ * multiple configured targets, for example, if it needs to be built both for the host and the
+ * target configuration.
*
* <p>The process of creating the appropriate {@link com.google.devtools.build.lib.actions.Action}s
* for a configured target is called "analysis". The analysis of a configured target is composed of
@@ -129,5 +129,5 @@
default void addRuleImplSpecificRequiredConfigFragments(
RequiredConfigFragmentsProvider.Builder requiredFragments,
AttributeMap attributes,
- BuildConfiguration configuration) {}
+ BuildConfigurationValue configuration) {}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 88338bd..7e8d23d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -46,7 +46,7 @@
import com.google.devtools.build.lib.analysis.ExecGroupCollection.InvalidExecGroupException;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ConfigConditions;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.Fragment;
@@ -158,7 +158,7 @@
private final ImmutableSet<String> enabledFeatures;
private final ImmutableSet<String> disabledFeatures;
private final String ruleClassNameForLogging;
- private final BuildConfiguration hostConfiguration;
+ private final BuildConfigurationValue hostConfiguration;
private final ConfigurationFragmentPolicy configurationFragmentPolicy;
private final ConfiguredRuleClassProvider ruleClassProvider;
private final RuleErrorConsumer reporter;
@@ -362,7 +362,7 @@
}
/** Returns the host configuration for this rule. */
- public BuildConfiguration getHostConfiguration() {
+ public BuildConfigurationValue getHostConfiguration() {
return hostConfiguration;
}
@@ -456,8 +456,8 @@
String name,
String additionalErrorMessage,
ConfigurationTransition transition) {
- // TODO(bazel-team): The fragments can also be accessed directly through BuildConfiguration.
- // Can we lock that down somehow?
+ // TODO(bazel-team): The fragments can also be accessed directly through
+ // BuildConfigurationValue. Can we lock that down somehow?
Preconditions.checkArgument(
isLegalFragment(fragment, transition),
"%s has to declare '%s' as a required fragment in %s configuration in order to access"
@@ -512,7 +512,7 @@
return isLegalFragment(fragment, NoTransition.INSTANCE);
}
- private BuildConfiguration getConfiguration(ConfigurationTransition transition) {
+ private BuildConfigurationValue getConfiguration(ConfigurationTransition transition) {
return transition.isHostTransition() ? hostConfiguration : getConfiguration();
}
@@ -531,7 +531,7 @@
public static ActionOwner createActionOwner(
Rule rule,
ImmutableList<AspectDescriptor> aspectDescriptors,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
ImmutableMap<String, String> execProperties,
@Nullable PlatformInfo executionPlatform) {
return ActionOwner.create(
@@ -714,7 +714,7 @@
/**
* Same as {@link #getPackageRelativeArtifact(PathFragment, ArtifactRoot)} but includes the option
* option to use a content-based path for this artifact (see {@link
- * BuildConfiguration#useContentBasedOutputPaths()}).
+ * BuildConfigurationValue#useContentBasedOutputPaths()}).
*/
private Artifact.DerivedArtifact getPackageRelativeArtifact(
PathFragment relative, ArtifactRoot root, boolean contentBasedPath) {
@@ -732,7 +732,7 @@
/**
* Same as {@link #getPackageRelativeArtifact(String, ArtifactRoot)} but includes the option to
* use a content-based path for this artifact (see {@link
- * BuildConfiguration#useContentBasedOutputPaths()}).
+ * BuildConfigurationValue#useContentBasedOutputPaths()}).
*/
private Artifact getPackageRelativeArtifact(
String relative, ArtifactRoot root, boolean contentBasedPath) {
@@ -762,7 +762,7 @@
/**
* Same as {@link #getDerivedArtifact(PathFragment, ArtifactRoot)} but includes the option to use
* a content-based path for this artifact (see {@link
- * BuildConfiguration#useContentBasedOutputPaths()}).
+ * BuildConfigurationValue#useContentBasedOutputPaths()}).
*/
public Artifact.DerivedArtifact getDerivedArtifact(
PathFragment rootRelativePath, ArtifactRoot root, boolean contentBasedPath) {
@@ -923,15 +923,16 @@
/**
* For a given attribute, returns all declared provider provided by targets of that attribute.
- * Each declared provider is keyed by the {@link BuildConfiguration} under which the provider was
- * created.
+ * Each declared provider is keyed by the {@link BuildConfigurationValue} under which the provider
+ * was created.
*/
public <C extends Info>
- ImmutableListMultimap<BuildConfiguration, C> getPrerequisitesByConfiguration(
+ ImmutableListMultimap<BuildConfigurationValue, C> getPrerequisitesByConfiguration(
String attributeName, BuiltinProvider<C> provider) {
checkAttributeIsDependency(attributeName);
List<ConfiguredTargetAndData> ctatCollection = getPrerequisiteConfiguredTargets(attributeName);
- ImmutableListMultimap.Builder<BuildConfiguration, C> result = ImmutableListMultimap.builder();
+ ImmutableListMultimap.Builder<BuildConfigurationValue, C> result =
+ ImmutableListMultimap.builder();
for (ConfiguredTargetAndData prerequisite : ctatCollection) {
C prerequisiteProvider = prerequisite.getConfiguredTarget().get(provider);
if (prerequisiteProvider != null) {
@@ -944,13 +945,13 @@
/**
* For a given attribute, returns all {@link TransitiveInfoCollection}s provided by targets of
* that attribute. Each {@link TransitiveInfoCollection} is keyed by the {@link
- * BuildConfiguration} under which the collection was created.
+ * BuildConfigurationValue} under which the collection was created.
*/
- public ImmutableListMultimap<BuildConfiguration, TransitiveInfoCollection>
+ public ImmutableListMultimap<BuildConfigurationValue, TransitiveInfoCollection>
getPrerequisitesByConfiguration(String attributeName) {
checkAttributeIsDependency(attributeName);
List<ConfiguredTargetAndData> ctatCollection = getPrerequisiteConfiguredTargets(attributeName);
- ImmutableListMultimap.Builder<BuildConfiguration, TransitiveInfoCollection> result =
+ ImmutableListMultimap.Builder<BuildConfigurationValue, TransitiveInfoCollection> result =
ImmutableListMultimap.builder();
for (ConfiguredTargetAndData prerequisite : ctatCollection) {
result.put(prerequisite.getConfiguration(), prerequisite.getConfiguredTarget());
@@ -1472,7 +1473,7 @@
/**
* Same as {@link #getImplicitOutputArtifact(ImplicitOutputsFunction)} but includes the option to
* use a content-based path for this artifact (see {@link
- * BuildConfiguration#useContentBasedOutputPaths()}).
+ * BuildConfigurationValue#useContentBasedOutputPaths()}).
*/
public Artifact getImplicitOutputArtifact(
ImplicitOutputsFunction function, boolean contentBasedPath) throws InterruptedException {
@@ -1496,7 +1497,7 @@
/**
* Same as {@link #getImplicitOutputArtifact(String)} but includes the option to use a a
* content-based path for this artifact (see {@link
- * BuildConfiguration#useContentBasedOutputPaths()}).
+ * BuildConfigurationValue#useContentBasedOutputPaths()}).
*/
// TODO(bazel-team): Consider removing contentBasedPath stuff, which is unused as of 18 months
// after its introduction in cl/252148134.
@@ -1630,10 +1631,10 @@
private final AnalysisEnvironment env;
private final Target target;
private final ImmutableList<Aspect> aspects;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private final RuleErrorConsumer reporter;
private ConfiguredRuleClassProvider ruleClassProvider;
- private BuildConfiguration hostConfiguration;
+ private BuildConfigurationValue hostConfiguration;
private ConfigurationFragmentPolicy configurationFragmentPolicy;
private ActionLookupKey actionOwnerSymbol;
private OrderedSetMultimap<Attribute, ConfiguredTargetAndData> prerequisiteMap;
@@ -1651,7 +1652,7 @@
AnalysisEnvironment env,
Target target,
ImmutableList<Aspect> aspects,
- BuildConfiguration configuration) {
+ BuildConfigurationValue configuration) {
this.env = Preconditions.checkNotNull(env);
this.target = Preconditions.checkNotNull(target);
this.aspects = Preconditions.checkNotNull(aspects);
@@ -1739,7 +1740,7 @@
return this;
}
- public Builder setHostConfiguration(BuildConfiguration hostConfiguration) {
+ public Builder setHostConfiguration(BuildConfigurationValue hostConfiguration) {
this.hostConfiguration = hostConfiguration;
return this;
}
@@ -2003,7 +2004,7 @@
+ target.getAssociatedRule().getRuleClass();
}
- public BuildConfiguration getConfiguration() {
+ public BuildConfigurationValue getConfiguration() {
return configuration;
}
@@ -2192,12 +2193,12 @@
private static final class ErrorReporter extends EventHandlingErrorReporter
implements RuleErrorConsumer {
private final Rule rule;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
ErrorReporter(
AnalysisEnvironment env,
Rule rule,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
String ruleClassNameForLogging) {
super(ruleClassNameForLogging, env);
this.rule = rule;
@@ -2229,7 +2230,7 @@
}
@Override
- protected BuildConfiguration getConfiguration() {
+ protected BuildConfigurationValue getConfiguration() {
return configuration;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
index d0fe247..6fcc0e6 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java
@@ -23,7 +23,7 @@
import com.google.devtools.build.lib.analysis.SourceManifestAction.ManifestType;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.actions.SymlinkTreeAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.RunUnder;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -362,7 +362,7 @@
RUNFILES_DIR_EXT);
PathFragment outputManifestPath = runfilesDir.getRelative(OUTPUT_MANIFEST_BASENAME);
- BuildConfiguration config = context.getConfiguration();
+ BuildConfigurationValue config = context.getConfiguration();
Artifact outputManifest =
context.getDerivedArtifact(outputManifestPath, context.getBinDirectory());
context
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ShToolchain.java b/src/main/java/com/google/devtools/build/lib/analysis/ShToolchain.java
index c785da4..1b22abb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ShToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ShToolchain.java
@@ -14,7 +14,7 @@
package com.google.devtools.build.lib.analysis;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.vfs.PathFragment;
/** Class to work with the shell toolchain, e.g. get the shell interpreter's path. */
@@ -25,7 +25,7 @@
*
* <p>This method checks the configuration's {@link ShellConfiguration} fragment.
*/
- public static PathFragment getPath(BuildConfiguration config) {
+ public static PathFragment getPath(BuildConfigurationValue config) {
PathFragment result = PathFragment.EMPTY_FRAGMENT;
ShellConfiguration configFragment =
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetAndConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetAndConfiguration.java
index ac3d6fa..05bc361 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetAndConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetAndConfiguration.java
@@ -14,7 +14,7 @@
package com.google.devtools.build.lib.analysis;
import com.google.common.base.Preconditions;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.Target;
@@ -28,9 +28,9 @@
@Immutable
public final class TargetAndConfiguration {
private final Target target;
- @Nullable private final BuildConfiguration configuration;
+ @Nullable private final BuildConfigurationValue configuration;
- public TargetAndConfiguration(Target target, @Nullable BuildConfiguration configuration) {
+ public TargetAndConfiguration(Target target, @Nullable BuildConfigurationValue configuration) {
this.target = Preconditions.checkNotNull(target);
this.configuration = configuration;
}
@@ -75,7 +75,7 @@
}
@Nullable
- public BuildConfiguration getConfiguration() {
+ public BuildConfigurationValue getConfiguration() {
return configuration;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
index 80132f3..9c54ee9 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
@@ -28,7 +28,7 @@
import com.google.devtools.build.lib.actions.CompletionContext.ArtifactReceiver;
import com.google.devtools.build.lib.actions.EventReportingArtifacts;
import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsInOutputGroup;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.analysis.test.TestConfiguration;
@@ -161,7 +161,7 @@
this.isTest = isTest;
this.announceTargetSummary = announceTargetSummary;
this.testTimeoutSeconds = isTest ? getTestTimeoutSeconds(targetAndData) : null;
- BuildConfiguration configuration = targetAndData.getConfiguration();
+ BuildConfigurationValue configuration = targetAndData.getConfiguration();
this.configEventId =
configuration != null ? configuration.getEventId() : BuildEventIdUtil.nullConfigurationId();
this.configurationEvent = configuration != null ? configuration.toBuildEvent() : null;
@@ -538,7 +538,7 @@
* category and configuration.
*/
private static Long getTestTimeoutSeconds(ConfiguredTargetAndData targetAndData) {
- BuildConfiguration configuration = targetAndData.getConfiguration();
+ BuildConfigurationValue configuration = targetAndData.getConfiguration();
Rule associatedRule = targetAndData.getTarget().getAssociatedRule();
TestTimeout categoricalTimeout = TestTimeout.getTestTimeout(associatedRule);
return configuration
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java
index 26efabc..114e0b8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java
@@ -15,7 +15,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.flogger.GoogleLogger;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.buildeventstream.BuildEvent;
import com.google.devtools.build.lib.buildeventstream.BuildEventContext;
import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil;
@@ -36,9 +36,9 @@
public class TargetConfiguredEvent implements BuildEventWithConfiguration {
private static final GoogleLogger logger = GoogleLogger.forEnclosingClass();
private final Target target;
- private final Collection<BuildConfiguration> configurations;
+ private final Collection<BuildConfigurationValue> configurations;
- TargetConfiguredEvent(Target target, Collection<BuildConfiguration> configurations) {
+ TargetConfiguredEvent(Target target, Collection<BuildConfigurationValue> configurations) {
this.configurations = configurations;
this.target = target;
}
@@ -46,7 +46,7 @@
@Override
public Collection<BuildEvent> getConfigurations() {
ImmutableList.Builder<BuildEvent> builder = new ImmutableList.Builder<>();
- for (BuildConfiguration config : configurations) {
+ for (BuildConfigurationValue config : configurations) {
if (config != null) {
builder.add(config.toBuildEvent());
} else {
@@ -64,7 +64,7 @@
@Override
public Collection<BuildEventId> getChildrenEvents() {
ImmutableList.Builder<BuildEventId> childrenBuilder = ImmutableList.builder();
- for (BuildConfiguration config : configurations) {
+ for (BuildConfigurationValue config : configurations) {
if (config != null) {
childrenBuilder.add(
BuildEventIdUtil.targetCompleted(target.getLabel(), config.getEventId()));
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java
index e304257..3227fb0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java
@@ -19,12 +19,12 @@
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Multimaps;
import com.google.devtools.build.lib.actions.ActionKeyContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents;
import com.google.devtools.build.lib.packages.Target;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
import java.util.List;
import java.util.Optional;
@@ -44,7 +44,7 @@
private final AnalysisEnvironment env;
private final Target target;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
/**
* This only contains prerequisites that are not declared in rule attributes, with the exception
@@ -63,7 +63,7 @@
TargetContext(
AnalysisEnvironment env,
Target target,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
Set<ConfiguredTargetAndData> directPrerequisites,
NestedSet<PackageGroupContents> visibility) {
this.env = env;
@@ -96,12 +96,12 @@
* guaranteed to be non-null for rules and for output files.
*/
@Nullable
- public BuildConfiguration getConfiguration() {
+ public BuildConfigurationValue getConfiguration() {
return configuration;
}
- public BuildConfigurationValue.Key getConfigurationKey() {
- return BuildConfigurationValue.key(configuration);
+ public BuildConfigurationKey getConfigurationKey() {
+ return configuration.getKey();
}
public NestedSet<PackageGroupContents> getVisibility() {
@@ -115,7 +115,7 @@
*/
@Nullable
public TransitiveInfoCollection findDirectPrerequisite(
- Label label, Optional<BuildConfiguration> config) {
+ Label label, Optional<BuildConfigurationValue> config) {
if (directPrerequisites.containsKey(label)) {
List<ConfiguredTargetAndData> prerequisites = directPrerequisites.get(label);
// If the config is present, find the prereq with that configuration. Otherwise, return the
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Util.java b/src/main/java/com/google/devtools/build/lib/analysis/Util.java
index b2dda41..5484214 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Util.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Util.java
@@ -17,7 +17,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Sets;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.compacthashset.CompactHashSet;
import com.google.devtools.build.lib.packages.AttributeMap;
@@ -100,8 +100,8 @@
if (toolchainContext != null) {
// This logic should stay up to date with the dep creation logic in
// DependencyResolver#partiallyResolveDependencies.
- BuildConfiguration targetConfiguration = ruleContext.getConfiguration();
- BuildConfiguration hostConfiguration = ruleContext.getHostConfiguration();
+ BuildConfigurationValue targetConfiguration = ruleContext.getConfiguration();
+ BuildConfigurationValue hostConfiguration = ruleContext.getHostConfiguration();
for (Label toolchain : toolchainContext.resolvedToolchainLabels()) {
if (DependencyResolver.shouldUseToolchainTransition(
targetConfiguration, ruleContext.getRule())) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java
index 2461bb3..d284f62 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.analysis.AnalysisEnvironment;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -58,8 +58,8 @@
/** Returns the action key context. */
ActionKeyContext getActionKeyContext();
- /** Returns the {@link BuildConfiguration} for which the given rule is analyzed. */
- BuildConfiguration getConfiguration();
+ /** Returns the {@link BuildConfigurationValue} for which the given rule is analyzed. */
+ BuildConfigurationValue getConfiguration();
/** The current analysis environment. */
AnalysisEnvironment getAnalysisEnvironment();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index c356893..43b1a45 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -60,7 +60,7 @@
import com.google.devtools.build.lib.actions.extra.SpawnInfo;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.starlark.Args;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -696,7 +696,7 @@
@VisibleForTesting
@CheckReturnValue
- public SpawnAction build(ActionOwner owner, BuildConfiguration configuration) {
+ public SpawnAction build(ActionOwner owner, BuildConfigurationValue configuration) {
CommandLines.Builder result = CommandLines.builder();
if (executableArg != null) {
result.addSingleArgument(executableArg);
@@ -746,7 +746,7 @@
ActionOwner owner,
CommandLines commandLines,
CommandLineLimits commandLineLimits,
- @Nullable BuildConfiguration configuration,
+ @Nullable BuildConfigurationValue configuration,
ActionEnvironment env) {
NestedSet<Artifact> tools = toolsBuilder.build();
@@ -796,7 +796,7 @@
CommandLineLimits commandLineLimits,
boolean isShellCommand,
ActionEnvironment env,
- @Nullable BuildConfiguration configuration,
+ @Nullable BuildConfigurationValue configuration,
ImmutableMap<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
@@ -983,7 +983,7 @@
* action and its value will be "baz", or whatever the corresponding {@code --client_env} flag
* specified, respectively.
*
- * @see {@link BuildConfiguration#getLocalShellEnvironment}
+ * @see {@link BuildConfigurationValue#getLocalShellEnvironment}
*/
public Builder useDefaultShellEnvironment() {
this.environment = null;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java
index 867f2dd..5c45c24 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java
@@ -38,7 +38,7 @@
import com.google.devtools.build.lib.actions.Spawn;
import com.google.devtools.build.lib.actions.SpawnResult;
import com.google.devtools.build.lib.actions.UserExecException;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -372,7 +372,7 @@
CommandLineLimits commandLineLimits,
boolean isShellCommand,
ActionEnvironment env,
- @Nullable BuildConfiguration configuration,
+ @Nullable BuildConfigurationValue configuration,
ImmutableMap<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
index 645e1f9..14a06ca 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java
@@ -24,7 +24,7 @@
import com.google.devtools.build.lib.actions.ActionResult;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.Runfiles;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -63,7 +63,7 @@
*/
public SymlinkTreeAction(
ActionOwner owner,
- BuildConfiguration config,
+ BuildConfigurationValue config,
Artifact inputManifest,
@Nullable Runfiles runfiles,
Artifact outputManifest,
@@ -82,8 +82,8 @@
/**
* Creates SymlinkTreeAction instance. Prefer the constructor that takes a {@link
- * BuildConfiguration} instance; it is less likely to require changes in the future if we add more
- * command-line flags that affect this action.
+ * BuildConfigurationValue} instance; it is less likely to require changes in the future if we add
+ * more command-line flags that affect this action.
*
* @param owner action owner
* @param inputManifest the input runfiles manifest
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
index 2849126..117c61a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java
@@ -15,7 +15,7 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ArtifactRoot;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.Serializable;
@@ -52,7 +52,7 @@
/** Create actions and artifacts for language-specific build-info files. */
BuildInfoCollection create(
BuildInfoContext context,
- BuildConfiguration config,
+ BuildConfigurationValue config,
Artifact buildInfo,
Artifact buildChangelist);
@@ -65,5 +65,5 @@
* Returns false if this build info factory is disabled based on the configuration (usually by
* checking if all required configuration fragments are present).
*/
- boolean isEnabled(BuildConfiguration config);
+ boolean isEnabled(BuildConfigurationValue config);
}
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 7d1fbe2..cf2539c 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
@@ -30,20 +30,21 @@
*/
@ThreadSafe
public final class BuildConfigurationCollection {
- private final ImmutableList<BuildConfiguration> targetConfigurations;
- private final BuildConfiguration hostConfiguration;
+ private final ImmutableList<BuildConfigurationValue> targetConfigurations;
+ private final BuildConfigurationValue hostConfiguration;
public BuildConfigurationCollection(
- ImmutableList<BuildConfiguration> targetConfigurations, BuildConfiguration hostConfiguration)
+ ImmutableList<BuildConfigurationValue> targetConfigurations,
+ BuildConfigurationValue hostConfiguration)
throws InvalidConfigurationException {
this.targetConfigurations = targetConfigurations;
this.hostConfiguration = hostConfiguration;
// Except for the host configuration (which may be identical across target configs), the other
// configurations must all have different cache keys or we will end up with problems.
- HashMap<String, BuildConfiguration> cacheKeyConflictDetector = new HashMap<>();
- for (BuildConfiguration config : targetConfigurations) {
- BuildConfiguration old = cacheKeyConflictDetector.put(config.checksum(), config);
+ HashMap<String, BuildConfigurationValue> cacheKeyConflictDetector = new HashMap<>();
+ for (BuildConfigurationValue config : targetConfigurations) {
+ BuildConfigurationValue old = cacheKeyConflictDetector.put(config.checksum(), config);
if (old != null) {
throw new InvalidConfigurationException(
"Conflicting configurations: " + config + " & " + old, Code.CONFLICTING_CONFIGURATIONS);
@@ -51,7 +52,7 @@
}
}
- public ImmutableList<BuildConfiguration> getTargetConfigurations() {
+ public ImmutableList<BuildConfigurationValue> getTargetConfigurations() {
return targetConfigurations;
}
@@ -62,7 +63,7 @@
* entire collection. This may not be true in the future and more flexible interfaces will likely
* supplant this interface anyway.
*/
- public BuildConfiguration getHostConfiguration() {
+ public BuildConfigurationValue getHostConfiguration() {
return hostConfiguration;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationOptionDetails.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationOptionDetails.java
index 2a5d435..2e491d0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationOptionDetails.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationOptionDetails.java
@@ -15,19 +15,19 @@
package com.google.devtools.build.lib.analysis.config;
/**
- * Retrieves {@link TransitiveOptionDetails} from {@link BuildConfiguration} instances.
+ * Retrieves {@link TransitiveOptionDetails} from {@link BuildConfigurationValue} instances.
*
* <p>This class's existence allows for the use of Blaze visibility to limit access to option data
* to only the configuration-specific rules which need to access or manipulate the configuration in
* such a meta way - in most cases, there should be no need to use this class. Instead, access
- * desired configuration fragments via {@link BuildConfiguration#getFragment(Class)}.
+ * desired configuration fragments via {@link BuildConfigurationValue#getFragment(Class)}.
*/
public class BuildConfigurationOptionDetails {
/** Utility class - no need to instantiate. */
private BuildConfigurationOptionDetails() {}
- public static TransitiveOptionDetails get(BuildConfiguration configuration) {
+ public static TransitiveOptionDetails get(BuildConfigurationValue configuration) {
return configuration.getTransitiveOptionDetails();
}
}
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/BuildConfigurationValue.java
similarity index 89%
rename from src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java
rename to src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java
index 578af01..85e4556 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/BuildConfigurationValue.java
@@ -35,15 +35,16 @@
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.events.EventHandler;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.starlarkbuildapi.BuildConfigurationApi;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.util.RegexFilter;
import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.devtools.build.skyframe.SkyValue;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Objects;
import java.util.Set;
import java.util.TreeMap;
import java.util.function.Supplier;
@@ -51,28 +52,26 @@
import net.starlark.java.annot.StarlarkBuiltin;
/**
- * Instances of BuildConfiguration represent a collection of context information which may affect a
- * build (for example: the target platform for compilation, or whether or not debug tables are
- * required). In fact, all "environmental" information (e.g. from the tool's command-line, as
- * opposed to the BUILD file) that can affect the output of any build tool should be explicitly
- * represented in the BuildConfiguration instance.
+ * Represents a collection of context information which may affect a build (for example: the target
+ * platform for compilation, or whether or not debug tables are required). In fact, all
+ * "environmental" information (e.g. from the tool's command-line, as opposed to the BUILD file)
+ * that can affect the output of any build tool should be explicitly represented in the {@code
+ * BuildConfigurationValue} instance.
*
* <p>A single build may require building tools to run on a variety of platforms: when compiling a
* server application for production, we must build the build tools (like compilers) to run on the
* host platform, but cross-compile the application for the production environment.
*
- * <p>There is always at least one BuildConfiguration instance in any build: the one representing
- * the host platform. Additional instances may be created, in a cross-compilation build, for
- * example.
+ * <p>There is always at least one {@code BuildConfigurationValue} instance in any build: the one
+ * representing the host platform. Additional instances may be created, in a cross-compilation
+ * build, for example.
*
- * <p>Instances of BuildConfiguration are canonical:
+ * <p>Instances of {@code BuildConfigurationValue} are canonical:
*
* <pre>c1.equals(c2) <=> c1==c2.</pre>
*/
-// TODO(janakr): If overhead of fragments class names is too high, add constructor that just takes
-// fragments and gets names from them.
@AutoCodec
-public class BuildConfiguration implements BuildConfigurationApi {
+public class BuildConfigurationValue implements BuildConfigurationApi, SkyValue {
private static final Interner<ImmutableSortedMap<Class<? extends Fragment>, Fragment>>
fragmentsInterner = BlazeInterners.newWeakInterner();
@@ -109,8 +108,6 @@
private final ImmutableMap<String, String> commandLineBuildVariables;
- private final int hashCode; // We can precompute the hash code as all its inputs are immutable.
-
/** Data for introspecting the options used by this configuration. */
private final TransitiveOptionDetails transitiveOptionDetails;
@@ -119,34 +116,8 @@
private final boolean siblingRepositoryLayout;
/**
- * Returns {@code true} if this configuration is semantically equal to the other, including
- * checking that both have the same sets of fragments and options.
- */
- @Override
- public boolean equals(Object other) {
- if (this == other) {
- return true;
- }
- if (!(other instanceof BuildConfiguration)) {
- return false;
- }
- BuildConfiguration otherConfig = (BuildConfiguration) other;
- return fragments.values().asList().equals(otherConfig.fragments.values().asList())
- && buildOptions.equals(otherConfig.buildOptions);
- }
-
- private int computeHashCode() {
- return Objects.hash(fragments, buildOptions.getNativeOptions());
- }
-
- @Override
- public int hashCode() {
- return hashCode;
- }
-
- /**
- * Validates the options for this BuildConfiguration. Issues warnings for the use of deprecated
- * options, and warnings or errors for any option settings that conflict.
+ * Validates the options for this BuildConfigurationValue. Issues warnings for the use of
+ * deprecated options, and warnings or errors for any option settings that conflict.
*/
public void reportInvalidOptions(EventHandler reporter) {
for (Fragment fragment : fragments.values()) {
@@ -168,7 +139,7 @@
return ActionEnvironment.split(testEnv);
}
- public BuildConfiguration(
+ public BuildConfigurationValue(
BlazeDirectories directories,
ImmutableMap<Class<? extends Fragment>, Fragment> fragments,
FragmentClassSet fragmentClassSet,
@@ -215,25 +186,18 @@
TransitiveOptionDetails.forOptions(
buildOptions.getNativeOptions(), buildOptions.getStarlarkOptions());
- ImmutableMap.Builder<String, String> globalMakeEnvBuilder = ImmutableMap.builder();
-
+ // These should be documented in the build encyclopedia.
// TODO(configurability-team): Deprecate TARGET_CPU in favor of platforms.
- globalMakeEnvBuilder.put("TARGET_CPU", options.cpu);
- globalMakeEnvBuilder.put("COMPILATION_MODE", options.compilationMode.toString());
-
- /*
- * Attention! Document these in the build-encyclopedia
- */
- // the bin directory and the genfiles directory
- // These variables will be used on Windows as well, so we need to make sure
- // that paths use the correct system file-separator.
- globalMakeEnvBuilder.put(
- "BINDIR", getBinDirectory(RepositoryName.MAIN).getExecPath().getPathString());
- globalMakeEnvBuilder.put(
- "GENDIR", getGenfilesDirectory(RepositoryName.MAIN).getExecPath().getPathString());
- globalMakeEnv = globalMakeEnvBuilder.build();
-
- hashCode = computeHashCode();
+ globalMakeEnv =
+ ImmutableMap.of(
+ "TARGET_CPU",
+ options.cpu,
+ "COMPILATION_MODE",
+ options.compilationMode.toString(),
+ "BINDIR",
+ getBinDirectory(RepositoryName.MAIN).getExecPathString(),
+ "GENDIR",
+ getGenfilesDirectory(RepositoryName.MAIN).getExecPathString());
this.reservedActionMnemonics = reservedActionMnemonics;
this.buildEventSupplier = Suppliers.memoize(this::createBuildEvent);
@@ -253,6 +217,17 @@
}
/**
+ * Returns the {@link BuildConfigurationKey} for this configuration.
+ *
+ * <p>Note that this method does not apply a platform mapping. It is assumed that this
+ * configuration was created with a platform mapping and thus its key does not need to be mapped
+ * again.
+ */
+ public BuildConfigurationKey getKey() {
+ return BuildConfigurationKey.withoutPlatformMapping(fragmentClassSet, buildOptions);
+ }
+
+ /**
* Retrieves the {@link TransitiveOptionDetails} containing data on this configuration's options.
*
* @see BuildConfigurationOptionDetails
@@ -396,8 +371,8 @@
/**
* Returns the configuration-dependent string for this configuration. This is also the name of the
- * configuration's base output directory unless {@link CoreOptions#outputDirectoryName} overrides
- * it.
+ * configuration's base output directory unless {@link #isHostConfiguration} is {@code true}, in
+ * which case the output directory is named {@code host}.
*/
public String getMnemonic() {
return outputDirectories.getMnemonic();
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 e5b25ce..5d7184d 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
@@ -44,7 +44,7 @@
import com.google.devtools.build.lib.packages.AttributeTransitionData;
import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.packages.Target;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.ConfiguredValueCreationException;
import com.google.devtools.build.lib.skyframe.PackageValue;
import com.google.devtools.build.lib.skyframe.PlatformMappingValue;
@@ -87,13 +87,13 @@
@VisibleForTesting
public static final Comparator<Dependency> SPLIT_DEP_ORDERING =
Comparator.comparing(
- Functions.compose(BuildConfiguration::getMnemonic, Dependency::getConfiguration))
+ Functions.compose(BuildConfigurationValue::getMnemonic, Dependency::getConfiguration))
.thenComparing(
- Functions.compose(BuildConfiguration::checksum, Dependency::getConfiguration));
+ Functions.compose(BuildConfigurationValue::checksum, Dependency::getConfiguration));
private final SkyFunction.Environment env;
private final TargetAndConfiguration ctgValue;
- private final BuildConfiguration hostConfiguration;
+ private final BuildConfigurationValue hostConfiguration;
private final ImmutableMap<Label, ConfigMatchingProvider> configConditions;
/** The key for {@link #starlarkTransitionCache}. */
@@ -172,7 +172,7 @@
public ConfigurationResolver(
SkyFunction.Environment env,
TargetAndConfiguration ctgValue,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
ImmutableMap<Label, ConfigMatchingProvider> configConditions) {
this.env = env;
this.ctgValue = ctgValue;
@@ -180,7 +180,7 @@
this.configConditions = configConditions;
}
- private BuildConfiguration getCurrentConfiguration() {
+ private BuildConfigurationValue getCurrentConfiguration() {
return ctgValue.getConfiguration();
}
@@ -209,8 +209,8 @@
*
* @param dependencyKeys the transition requests for each dep and each dependency kind
* @return a mapping from each dependency kind in the source target to the {@link
- * BuildConfiguration}s and {@link Label}s for the deps under that dependency kind . Returns
- * null if not all Skyframe dependencies are available.
+ * BuildConfigurationValue}s and {@link Label}s for the deps under that dependency kind .
+ * Returns null if not all Skyframe dependencies are available.
*/
@Nullable
public OrderedSetMultimap<DependencyKind, Dependency> resolveConfigurations(
@@ -334,14 +334,14 @@
return null; // Need platform mappings from Skyframe.
}
- Map<String, BuildConfigurationValue.Key> configurationKeys = new HashMap<>();
+ Map<String, BuildConfigurationKey> configurationKeys = new HashMap<>();
try {
for (Map.Entry<String, BuildOptions> optionsEntry : toOptions.entrySet()) {
String transitionKey = optionsEntry.getKey();
- BuildConfigurationValue.Key buildConfigurationValueKey =
- BuildConfigurationValue.keyWithPlatformMapping(
+ BuildConfigurationKey buildConfigurationKey =
+ BuildConfigurationKey.withPlatformMapping(
platformMappingValue, depFragments, optionsEntry.getValue());
- configurationKeys.put(transitionKey, buildConfigurationValueKey);
+ configurationKeys.put(transitionKey, buildConfigurationKey);
}
} catch (OptionsParsingException e) {
throw new ConfiguredValueCreationException(ctgValue, e.getMessage());
@@ -351,15 +351,14 @@
env.getValuesOrThrow(configurationKeys.values(), InvalidConfigurationException.class);
List<Dependency> dependencies = new ArrayList<>();
try {
- for (Map.Entry<String, BuildConfigurationValue.Key> entry : configurationKeys.entrySet()) {
+ for (Map.Entry<String, BuildConfigurationKey> entry : configurationKeys.entrySet()) {
String transitionKey = entry.getKey();
ValueOrException<InvalidConfigurationException> valueOrException =
depConfigValues.get(entry.getValue());
if (valueOrException.get() == null) {
continue;
}
- BuildConfiguration configuration =
- ((BuildConfigurationValue) valueOrException.get()).getConfiguration();
+ BuildConfigurationValue configuration = (BuildConfigurationValue) valueOrException.get();
if (configuration != null) {
Dependency resolvedDep =
dependencyBuilder
@@ -563,7 +562,7 @@
// Keep this in sync with {@link PrepareAnalysisPhaseFunction#resolveConfigurations}.
public static TopLevelTargetsAndConfigsResult getConfigurationsFromExecutor(
Iterable<TargetAndConfiguration> defaultContext,
- Multimap<BuildConfiguration, DependencyKey> targetsToEvaluate,
+ Multimap<BuildConfigurationValue, DependencyKey> targetsToEvaluate,
ExtendedEventHandler eventHandler,
ConfigurationsCollector configurationsCollector)
throws InvalidConfigurationException, InterruptedException {
@@ -579,12 +578,12 @@
new LinkedHashMap<>();
boolean hasError = false;
if (!targetsToEvaluate.isEmpty()) {
- for (BuildConfiguration fromConfig : targetsToEvaluate.keySet()) {
+ for (BuildConfigurationValue fromConfig : targetsToEvaluate.keySet()) {
ConfigurationsResult configurationsResult =
configurationsCollector.getConfigurations(
eventHandler, fromConfig.getOptions(), targetsToEvaluate.get(fromConfig));
hasError |= configurationsResult.hasError();
- for (Map.Entry<DependencyKey, BuildConfiguration> evaluatedTarget :
+ for (Map.Entry<DependencyKey, BuildConfigurationValue> evaluatedTarget :
configurationsResult.getConfigurationMap().entries()) {
Target target = labelsToTargets.get(evaluatedTarget.getKey().getLabel());
successfullyEvaluatedTargets.put(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java
index 744acfa..85185e0 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java
@@ -39,14 +39,14 @@
import java.util.Map;
/**
- * Core options affecting a {@link BuildConfiguration} that don't belong in domain-specific {@link
- * FragmentOptions}. All options defined here should be universal in that they affect configuration
- * regardless of which languages a build uses. In other words, this should only contain options that
- * aren't suitable for Starlark configuration.
+ * Core options affecting a {@link BuildConfigurationValue} that don't belong in domain-specific
+ * {@link FragmentOptions}. All options defined here should be universal in that they affect
+ * configuration regardless of which languages a build uses. In other words, this should only
+ * contain options that aren't suitable for Starlark configuration.
*
* <p>(Note: any client that creates a view will also need to declare BuildView.Options, which
* affect the <i>mechanism</i> of view construction, even if they don't affect the value of the
- * BuildConfiguration instances.)
+ * BuildConfigurationValue instances.)
*
* <p>IMPORTANT: when adding new options, be sure to consider whether those values should be
* propagated to the host configuration or not.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java
index ddd7fec..86d54ae 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java
@@ -48,7 +48,7 @@
* Directories in the output tree.
*
* <p>The computation of the output directory should be a non-injective mapping from
- * BuildConfiguration instances to strings. The result should identify the aspects of the
+ * BuildConfigurationValue instances to strings. The result should identify the aspects of the
* configuration that should be reflected in the output file names. Furthermore the returned
* string must not contain shell metacharacters.
*
@@ -368,4 +368,3 @@
}
}
}
-
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java
index fd5ac26..7d0a1bf 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java
@@ -82,7 +82,7 @@
@Nullable
public static RequiredConfigFragmentsProvider getRuleRequiredFragmentsIfEnabled(
Rule target,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
FragmentClassSet universallyRequiredFragments,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
Iterable<ConfiguredTargetAndData> prerequisites) {
@@ -136,7 +136,7 @@
Aspect aspect,
ConfiguredAspectFactory aspectFactory,
Rule associatedTarget,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
FragmentClassSet universallyRequiredFragments,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
Iterable<ConfiguredTargetAndData> prerequisites) {
@@ -164,7 +164,7 @@
/** Internal implementation that handles requirements common to both rules and aspects. */
private static RequiredConfigFragmentsProvider.Builder getRequiredFragments(
IncludeConfigFragmentsEnum mode,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
FragmentClassSet universallyRequiredFragments,
ConfigurationFragmentPolicy configurationFragmentPolicy,
Collection<ConfigMatchingProvider> configConditions,
@@ -290,7 +290,8 @@
}
}
- private static IncludeConfigFragmentsEnum getRequiredFragmentsMode(BuildConfiguration config) {
+ private static IncludeConfigFragmentsEnum getRequiredFragmentsMode(
+ BuildConfigurationValue config) {
return checkNotNull(
config.getOptions().get(CoreOptions.class).includeRequiredConfigFragmentsProvider);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/SymlinkDefinition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/SymlinkDefinition.java
index 790d600..0350265 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/SymlinkDefinition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/SymlinkDefinition.java
@@ -52,8 +52,8 @@
*/
ImmutableSet<Path> getLinkPaths(
BuildRequestOptions buildRequestOptions,
- Set<BuildConfiguration> targetConfigs,
- Function<BuildOptions, BuildConfiguration> configGetter,
+ Set<BuildConfigurationValue> targetConfigs,
+ Function<BuildOptions, BuildConfigurationValue> configGetter,
RepositoryName repositoryName,
Path outputPath,
Path execRoot);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
index a568b3a..e166f2f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java
@@ -50,7 +50,7 @@
* @return the target's configuration(s), expressed as a diff from the original configuration.
*/
public static ConfigurationTransition evaluateTransition(
- BuildConfiguration fromConfig,
+ BuildConfigurationValue fromConfig,
ConfigurationTransition baseTransition,
Target toTarget,
@Nullable TransitionFactory<RuleTransitionData> trimmingTransitionFactory) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
index 1377dab..a879896 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java
@@ -32,7 +32,7 @@
import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents;
import com.google.devtools.build.lib.packages.Provider;
import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import java.util.function.Consumer;
import javax.annotation.Nullable;
import net.starlark.java.eval.Dict;
@@ -47,7 +47,7 @@
*/
public abstract class AbstractConfiguredTarget implements ConfiguredTarget, VisibilityProvider {
private final Label label;
- private final BuildConfigurationValue.Key configurationKey;
+ private final BuildConfigurationKey configurationKey;
private final NestedSet<PackageGroupContents> visibility;
@@ -75,13 +75,13 @@
OutputGroupInfo.STARLARK_NAME,
ACTIONS_FIELD_NAME);
- public AbstractConfiguredTarget(Label label, BuildConfigurationValue.Key configurationKey) {
+ public AbstractConfiguredTarget(Label label, BuildConfigurationKey configurationKey) {
this(label, configurationKey, NestedSetBuilder.emptySet(Order.STABLE_ORDER));
}
protected AbstractConfiguredTarget(
Label label,
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
NestedSet<PackageGroupContents> visibility) {
this.label = label;
this.configurationKey = configurationKey;
@@ -99,7 +99,7 @@
}
@Override
- public BuildConfigurationValue.Key getConfigurationKey() {
+ public BuildConfigurationKey getConfigurationKey() {
return configurationKey;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java
index 79e0f1c..bfcbacd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java
@@ -35,7 +35,7 @@
import com.google.devtools.build.lib.packages.Info;
import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents;
import com.google.devtools.build.lib.packages.Provider;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.util.FileType;
import javax.annotation.Nullable;
import net.starlark.java.eval.Dict;
@@ -52,7 +52,7 @@
FileConfiguredTarget(
Label label,
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
NestedSet<PackageGroupContents> visibility,
Artifact artifact,
@Nullable InstrumentedFilesInfo instrumentedFilesInfo,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java
index 419d57a..7bc48ca 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java
@@ -30,7 +30,7 @@
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.OutputFile;
import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import net.starlark.java.eval.Printer;
/** A ConfiguredTarget for an OutputFile. */
@@ -56,7 +56,7 @@
private OutputFileConfiguredTarget(
Label label,
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
NestedSet<PackageGroupContents> visibility,
Artifact artifact,
ConfiguredTarget generatingRule) {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
index 0552704..46f3a96 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
@@ -40,7 +40,7 @@
import com.google.devtools.build.lib.packages.OutputFile;
import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents;
import com.google.devtools.build.lib.packages.Provider;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Instantiator;
@@ -85,7 +85,7 @@
@VisibleForSerialization
RuleConfiguredTarget(
Label label,
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
NestedSet<PackageGroupContents> visibility,
TransitiveInfoProviderMap providers,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/constraints/TopLevelConstraintSemantics.java b/src/main/java/com/google/devtools/build/lib/analysis/constraints/TopLevelConstraintSemantics.java
index 0211999..ce4d568 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/constraints/TopLevelConstraintSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/constraints/TopLevelConstraintSemantics.java
@@ -26,7 +26,7 @@
import com.google.devtools.build.lib.analysis.IncompatiblePlatformProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.configuredtargets.OutputFileConfiguredTarget;
import com.google.devtools.build.lib.analysis.constraints.SupportedEnvironmentsProvider.RemovedEnvironmentCulprit;
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
@@ -42,7 +42,7 @@
import com.google.devtools.build.lib.server.FailureDetails.Analysis;
import com.google.devtools.build.lib.server.FailureDetails.Analysis.Code;
import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue.Key;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -63,7 +63,7 @@
public class TopLevelConstraintSemantics {
private final RuleContextConstraintSemantics constraintSemantics;
private final PackageManager packageManager;
- private final Function<Key, BuildConfiguration> configurationProvider;
+ private final Function<BuildConfigurationKey, BuildConfigurationValue> configurationProvider;
private final ExtendedEventHandler eventHandler;
private static final String TARGET_INCOMPATIBLE_ERROR_TEMPLATE =
"Target %s is incompatible and cannot be built, but was explicitly requested.%s";
@@ -79,7 +79,7 @@
public TopLevelConstraintSemantics(
RuleContextConstraintSemantics constraintSemantics,
PackageManager packageManager,
- Function<Key, BuildConfiguration> configurationProvider,
+ Function<BuildConfigurationKey, BuildConfigurationValue> configurationProvider,
ExtendedEventHandler eventHandler) {
this.constraintSemantics = constraintSemantics;
this.packageManager = packageManager;
@@ -259,7 +259,8 @@
Multimap<ConfiguredTarget, MissingEnvironment> exceptionInducingTargets =
ArrayListMultimap.create();
for (ConfiguredTarget topLevelTarget : topLevelTargets) {
- BuildConfiguration config = configurationProvider.apply(topLevelTarget.getConfigurationKey());
+ BuildConfigurationValue config =
+ configurationProvider.apply(topLevelTarget.getConfigurationKey());
Target target = null;
try {
target = packageManager.getTarget(eventHandler, topLevelTarget.getLabel());
@@ -312,11 +313,11 @@
}
/**
- * Helper method for {@link #checkTargetEnvironmentRestrictions} that populates inferred
- * expected environments.
+ * Helper method for {@link #checkTargetEnvironmentRestrictions} that populates inferred expected
+ * environments.
*/
- private List<Label> autoConfigureTargetEnvironments(BuildConfiguration config,
- @Nullable Label environmentGroupLabel)
+ private List<Label> autoConfigureTargetEnvironments(
+ BuildConfigurationValue config, @Nullable Label environmentGroupLabel)
throws InterruptedException, NoSuchTargetException, NoSuchPackageException {
if (environmentGroupLabel == null) {
return ImmutableList.of();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleContext.java
index f4d4e7d..2cd1f72 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleContext.java
@@ -43,7 +43,7 @@
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.ShToolchain;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.analysis.config.FragmentCollection;
import com.google.devtools.build.lib.analysis.config.HostTransition;
@@ -597,13 +597,13 @@
}
@Override
- public BuildConfiguration getConfiguration() throws EvalException {
+ public BuildConfigurationValue getConfiguration() throws EvalException {
checkMutable("configuration");
return ruleContext.getConfiguration();
}
@Override
- public BuildConfiguration getHostConfiguration() throws EvalException {
+ public BuildConfigurationValue getHostConfiguration() throws EvalException {
checkMutable("host_configuration");
return ruleContext.getHostConfiguration();
}
@@ -634,7 +634,7 @@
@Override
public boolean instrumentCoverage(Object targetUnchecked) throws EvalException {
checkMutable("coverage_instrumented");
- BuildConfiguration config = ruleContext.getConfiguration();
+ BuildConfigurationValue config = ruleContext.getConfiguration();
if (!config.isCodeCoverageEnabled()) {
return false;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/StarlarkConfigurationFieldProcessor.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/StarlarkConfigurationFieldProcessor.java
index 7c541c4..7663447 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/StarlarkConfigurationFieldProcessor.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/annotations/processor/StarlarkConfigurationFieldProcessor.java
@@ -113,8 +113,8 @@
return false;
}
Element classElement = methodElement.getEnclosingElement();
- // If configurationFragmentType is null, then BuildConfiguration.Fragment isn't even included
- // in the current build, so the class clearly does not depend on it.
+ // If configurationFragmentType is null, then the fragment isn't even included in the current
+ // build, so the class clearly does not depend on it.
if (configurationFragmentType == null
|| !typeUtils.isAssignable(classElement.asType(), configurationFragmentType.asType())) {
return false;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
index cd0e3e4..f251e44 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/InstrumentedFilesCollector.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -246,8 +246,8 @@
* representing a rule) should be instrumented according the --instrumentation_filter and
* --instrument_test_targets settings in {@code config}.
*/
- public static boolean shouldIncludeLocalSources(BuildConfiguration config,
- TransitiveInfoCollection target) {
+ public static boolean shouldIncludeLocalSources(
+ BuildConfigurationValue config, TransitiveInfoCollection target) {
return shouldIncludeLocalSources(config, target.getLabel(),
target.getProvider(TestProvider.class) != null);
}
@@ -257,7 +257,7 @@
* the --instrumentation_filter and --instrument_test_targets config settings.
*/
public static boolean shouldIncludeLocalSources(
- BuildConfiguration config, Label label, boolean isTest) {
+ BuildConfigurationValue config, Label label, boolean isTest) {
return ((config.shouldInstrumentTestTargets() || !isTest)
&& config.getInstrumentationFilter().isIncluded(label.toString()));
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
index b1b3eb2..6d14d7a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java
@@ -40,7 +40,7 @@
import com.google.devtools.build.lib.analysis.SingleRunfilesSupplier;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.LazyWriteNestedSetOfPairAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.configuredtargets.PackageGroupConfiguredTarget;
import com.google.devtools.build.lib.analysis.test.TestProvider.TestParams;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -186,7 +186,7 @@
private TestParams createTestAction(int shards)
throws InterruptedException { // due to TestTargetExecutionSettings
PathFragment targetName = PathFragment.create(ruleContext.getLabel().getName());
- BuildConfiguration config = ruleContext.getConfiguration();
+ BuildConfigurationValue config = ruleContext.getConfiguration();
TestConfiguration testConfiguration = config.getFragment(TestConfiguration.class);
AnalysisEnvironment env = ruleContext.getAnalysisEnvironment();
ArtifactRoot root = ruleContext.getTestLogsDirectory();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
index 327f2d4..2e8adcc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestRunnerAction.java
@@ -50,7 +50,7 @@
import com.google.devtools.build.lib.actions.TestExecException;
import com.google.devtools.build.lib.analysis.PackageSpecificationProvider;
import com.google.devtools.build.lib.analysis.SingleRunfilesSupplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.RunUnder;
import com.google.devtools.build.lib.analysis.test.TestActionContext.FailedAttemptResult;
import com.google.devtools.build.lib.analysis.test.TestActionContext.TestAttemptContinuation;
@@ -108,7 +108,7 @@
private final Artifact testSetupScript;
private final Artifact testXmlGeneratorScript;
private final Artifact collectCoverageScript;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private final TestConfiguration testConfiguration;
private final Artifact testLog;
private final Artifact cacheStatus;
@@ -196,7 +196,7 @@
TestTargetExecutionSettings executionSettings,
int shardNum,
int runNumber,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
String workspaceName,
@Nullable PathFragment shExecutable,
boolean cancelConcurrentTestsOnSuccess,
@@ -303,7 +303,7 @@
return lcovMergerRunfilesSupplier;
}
- public BuildConfiguration getConfiguration() {
+ public BuildConfigurationValue getConfiguration() {
return configuration;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestStrategy.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestStrategy.java
index 0da99ea..01da1f7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestStrategy.java
@@ -28,7 +28,7 @@
import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.actions.UserExecException;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.PerLabelOptions;
import com.google.devtools.build.lib.analysis.test.TestRunnerAction.ResolvedPaths;
import com.google.devtools.build.lib.cmdline.Label;
@@ -255,7 +255,7 @@
* but ends up with the same effective value as all other rules in that bucket.
*/
protected static final Duration getTimeout(TestRunnerAction testAction) {
- BuildConfiguration configuration = testAction.getConfiguration();
+ BuildConfigurationValue configuration = testAction.getConfiguration();
return configuration
.getFragment(TestConfiguration.class)
.getTestTimeout()
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetExecutionSettings.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetExecutionSettings.java
index d66120c..1d8dbe3 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetExecutionSettings.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTargetExecutionSettings.java
@@ -27,7 +27,7 @@
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.Compression;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.RunUnder;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.vfs.Path;
@@ -64,7 +64,7 @@
throws InterruptedException { // due to CommandLine.arguments
Preconditions.checkArgument(TargetUtils.isTestRule(ruleContext.getRule()));
Preconditions.checkArgument(shards >= 0);
- BuildConfiguration config = ruleContext.getConfiguration();
+ BuildConfigurationValue config = ruleContext.getConfiguration();
TestConfiguration testConfig = config.getFragment(TestConfiguration.class);
CommandLine targetArgs = runfilesSupport.getArgs();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTrimmingTransitionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTrimmingTransitionFactory.java
index 3517a07..2ed95ef 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestTrimmingTransitionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestTrimmingTransitionFactory.java
@@ -64,7 +64,8 @@
// transition is always invoked on every target in the top-level invocation. Thus, a wide
// invocation, like //..., will cause the transition to be invoked on a large number of targets
// leading to significant performance degradation. (Notably, the transition itself is somewhat
- // fast; however, the post-processing of the BuildOptions into the actual BuildConfiguration
+ // fast; however, the post-processing of the BuildOptions into the actual
+ // BuildConfigurationValue
// takes a significant amount of time).
//
// Test any caching changes for performance impact in a longwide scenario with
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java
index b883cbd..6994f6d 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/BazelRepositoryModule.java
@@ -24,7 +24,7 @@
import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.RuleDefinition;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionFunction;
import com.google.devtools.build.lib.bazel.bzlmod.ModuleExtensionResolutionFunction;
import com.google.devtools.build.lib.bazel.bzlmod.ModuleFileFunction;
@@ -187,7 +187,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env)
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env)
throws AbruptExitException, InterruptedException {
return print(repositoryCache.getRootPath());
}
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 5fae569..9dfe2e7 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
@@ -25,8 +25,8 @@
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.RuleSet;
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
import com.google.devtools.build.lib.analysis.ShellConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration.ActionEnvironmentProvider;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue.ActionEnvironmentProvider;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.analysis.config.Fragment;
@@ -221,7 +221,7 @@
env.put(entry.getKey(), entry.getValue());
}
- if (!BuildConfiguration.runfilesEnabled(options.get(CoreOptions.class))) {
+ if (!BuildConfigurationValue.runfilesEnabled(options.get(CoreOptions.class))) {
// Setting this environment variable is for telling the binary running
// in a Bazel action when to use runfiles library or runfiles tree.
// The downside is that it will discard cache for all actions once
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
index 922c400..3fc16ff 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
@@ -18,7 +18,7 @@
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.AspectDescriptor;
import com.google.devtools.build.lib.packages.Provider;
@@ -72,7 +72,7 @@
@Override
public void finalizeCompileActionBuilder(
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
FeatureConfiguration featureConfiguration,
CppCompileActionBuilder actionBuilder,
RuleErrorConsumer ruleErrorConsumer) {
@@ -114,7 +114,7 @@
}
@Override
- public boolean needsDotdInputPruning(BuildConfiguration configuration) {
+ public boolean needsDotdInputPruning(BuildConfigurationValue configuration) {
if (language == Language.CPP) {
return true;
} else {
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java
index a55b4d7..6124944 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/AnalysisPhaseRunner.java
@@ -23,7 +23,7 @@
import com.google.devtools.build.lib.analysis.BuildView;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
@@ -45,7 +45,7 @@
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.server.FailureDetails.BuildConfiguration.Code;
import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.BuildInfoCollectionFunction;
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
import com.google.devtools.build.lib.skyframe.TargetPatternPhaseValue;
@@ -136,7 +136,7 @@
reportTargets(env, analysisResult);
for (ConfiguredTarget target : analysisResult.getTargetsToSkip()) {
- BuildConfiguration config =
+ BuildConfigurationValue config =
env.getSkyframeExecutor()
.getConfiguration(env.getReporter(), target.getConfigurationKey());
Label label = target.getLabel();
@@ -240,24 +240,20 @@
timer.stop().elapsed(TimeUnit.MILLISECONDS),
view.getAndClearPkgManagerStatistics(),
env.getSkyframeExecutor().wasAnalysisCacheDiscardedAndResetBit()));
- ImmutableSet<BuildConfigurationValue.Key> configurationKeys =
+ ImmutableSet<BuildConfigurationKey> configurationKeys =
Stream.concat(
- analysisResult
- .getTargetsToBuild()
- .stream()
+ analysisResult.getTargetsToBuild().stream()
.map(ConfiguredTarget::getConfigurationKey)
.distinct(),
analysisResult.getTargetsToTest() == null
? Stream.empty()
- : analysisResult
- .getTargetsToTest()
- .stream()
+ : analysisResult.getTargetsToTest().stream()
.map(ConfiguredTarget::getConfigurationKey)
.distinct())
.filter(Objects::nonNull)
.distinct()
.collect(ImmutableSet.toImmutableSet());
- Map<BuildConfigurationValue.Key, BuildConfiguration> configurationMap =
+ Map<BuildConfigurationKey, BuildConfigurationValue> configurationMap =
env.getSkyframeExecutor().getConfigurations(env.getReporter(), configurationKeys);
env.getEventBus()
.post(
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/AqueryBuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/AqueryBuildTool.java
index 30b5cec..a608013 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/AqueryBuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/AqueryBuildTool.java
@@ -16,7 +16,7 @@
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment;
import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment.TopLevelConfigurations;
@@ -112,7 +112,7 @@
@Override
protected PostAnalysisQueryEnvironment<ConfiguredTargetValue> getQueryEnvironment(
BuildRequest request,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
TopLevelConfigurations topLevelConfigurations,
Collection<SkyKey> transitiveConfigurationKeys,
WalkableGraph walkableGraph) {
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ConfigSymlink.java b/src/main/java/com/google/devtools/build/lib/buildtool/ConfigSymlink.java
index 1c3e506..7ceb9dc 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ConfigSymlink.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ConfigSymlink.java
@@ -18,7 +18,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.ArtifactRoot;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.SymlinkDefinition;
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -30,7 +30,7 @@
class ConfigSymlink implements SymlinkDefinition {
@FunctionalInterface
interface ConfigPathGetter {
- ArtifactRoot apply(BuildConfiguration configuration, RepositoryName repositoryName);
+ ArtifactRoot apply(BuildConfigurationValue configuration, RepositoryName repositoryName);
}
private final String suffix;
@@ -49,8 +49,8 @@
@Override
public ImmutableSet<Path> getLinkPaths(
BuildRequestOptions buildRequestOptions,
- Set<BuildConfiguration> targetConfigs,
- Function<BuildOptions, BuildConfiguration> configGetter,
+ Set<BuildConfigurationValue> targetConfigs,
+ Function<BuildOptions, BuildConfigurationValue> configGetter,
RepositoryName repositoryName,
Path outputPath,
Path execRoot) {
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java
index 9f9815c..9650f0e 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/CqueryBuildTool.java
@@ -14,7 +14,7 @@
package com.google.devtools.build.lib.buildtool;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment.TopLevelConfigurations;
import com.google.devtools.build.lib.query2.cquery.ConfiguredTargetQueryEnvironment;
import com.google.devtools.build.lib.query2.cquery.CqueryOptions;
@@ -36,7 +36,7 @@
@Override
protected ConfiguredTargetQueryEnvironment getQueryEnvironment(
BuildRequest request,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
TopLevelConfigurations configurations,
Collection<SkyKey> transitiveConfigurationKeys,
WalkableGraph walkableGraph)
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
index 15e03e0..4ca0d44 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/ExecutionTool.java
@@ -46,7 +46,7 @@
import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper;
import com.google.devtools.build.lib.analysis.WorkspaceStatusAction;
import com.google.devtools.build.lib.analysis.actions.SymlinkTreeActionContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
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.test.TestActionContext;
@@ -622,14 +622,14 @@
}
/**
- * Obtains the {@link BuildConfiguration} for a given {@link BuildOptions} for the purpose of
+ * Obtains the {@link BuildConfigurationValue} for a given {@link BuildOptions} for the purpose of
* symlink creation.
*
* <p>In the event of a {@link InvalidConfigurationException}, a warning is emitted and null is
* returned.
*/
@Nullable
- private static BuildConfiguration getConfiguration(
+ private static BuildConfigurationValue getConfiguration(
SkyframeExecutor executor, Reporter reporter, BuildOptions options) {
try {
return executor.getConfiguration(reporter, options, /*keepGoing=*/ false);
@@ -677,7 +677,7 @@
Reporter reporter = env.getReporter();
// Gather configurations to consider.
- Set<BuildConfiguration> targetConfigurations =
+ Set<BuildConfigurationValue> targetConfigurations =
buildRequestOptions.useTopLevelTargetsForSymlinks()
? analysisResult.getTargetsToBuild().stream()
.map(ConfiguredTarget::getConfigurationKey)
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java b/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java
index f249513..ac93bf2 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java
@@ -21,7 +21,7 @@
import com.google.common.flogger.GoogleLogger;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
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.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.SymlinkDefinition;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink;
@@ -102,8 +102,8 @@
Path workspace,
BlazeDirectories directories,
EventHandler eventHandler,
- Set<BuildConfiguration> targetConfigs,
- Function<BuildOptions, BuildConfiguration> configGetter,
+ Set<BuildConfigurationValue> targetConfigs,
+ Function<BuildOptions, BuildConfigurationValue> configGetter,
String productName) {
Path execRoot = directories.getExecRoot(workspaceName);
Path outputPath = directories.getOutputPath(workspaceName);
@@ -376,14 +376,14 @@
@SuppressWarnings("deprecation") // RuleContext#get*Directory not available here.
private static final ImmutableList<SymlinkDefinition> STANDARD_LINK_DEFINITIONS =
ImmutableList.of(
- new ConfigSymlink("bin", BuildConfiguration::getBinDirectory),
- new ConfigSymlink("testlogs", BuildConfiguration::getTestLogsDirectory),
- new ConfigSymlink("genfiles", BuildConfiguration::getGenfilesDirectory) {
+ new ConfigSymlink("bin", BuildConfigurationValue::getBinDirectory),
+ new ConfigSymlink("testlogs", BuildConfigurationValue::getTestLogsDirectory),
+ new ConfigSymlink("genfiles", BuildConfigurationValue::getGenfilesDirectory) {
@Override
public ImmutableSet<Path> getLinkPaths(
BuildRequestOptions buildRequestOptions,
- Set<BuildConfiguration> targetConfigs,
- Function<BuildOptions, BuildConfiguration> configGetter,
+ Set<BuildConfigurationValue> targetConfigs,
+ Function<BuildOptions, BuildConfigurationValue> configGetter,
RepositoryName repositoryName,
Path outputPath,
Path execRoot) {
@@ -410,8 +410,8 @@
@Override
public ImmutableSet<Path> getLinkPaths(
BuildRequestOptions buildRequestOptions,
- Set<BuildConfiguration> targetConfigs,
- Function<BuildOptions, BuildConfiguration> configGetter,
+ Set<BuildConfigurationValue> targetConfigs,
+ Function<BuildOptions, BuildConfigurationValue> configGetter,
RepositoryName repositoryName,
Path outputPath,
Path execRoot) {
@@ -429,8 +429,8 @@
@Override
public ImmutableSet<Path> getLinkPaths(
BuildRequestOptions buildRequestOptions,
- Set<BuildConfiguration> targetConfigs,
- Function<BuildOptions, BuildConfiguration> configGetter,
+ Set<BuildConfigurationValue> targetConfigs,
+ Function<BuildOptions, BuildConfigurationValue> configGetter,
RepositoryName repositoryName,
Path outputPath,
Path execRoot) {
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java
index 33d76d8..8093b9d 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java
@@ -15,7 +15,7 @@
import com.google.devtools.build.lib.analysis.AnalysisResult;
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.query2.NamedThreadSafeOutputFormatterCallback;
import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment;
@@ -116,7 +116,7 @@
protected abstract PostAnalysisQueryEnvironment<T> getQueryEnvironment(
BuildRequest request,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
TopLevelConfigurations topLevelConfigurations,
Collection<SkyKey> transitiveConfigurationKeys,
WalkableGraph walkableGraph)
@@ -124,7 +124,7 @@
private void doPostAnalysisQuery(
BuildRequest request,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
TopLevelConfigurations topLevelConfigurations,
Collection<SkyKey> transitiveConfigurationKeys,
QueryRuntimeHelper queryRuntimeHelper,
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
index febb37c..49f3328 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
@@ -17,9 +17,9 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.test.TestProvider;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import java.util.Collection;
import java.util.Map;
import javax.annotation.concurrent.Immutable;
@@ -35,7 +35,7 @@
private final Collection<ConfiguredTarget> targets;
private final Collection<ConfiguredTarget> testTargets;
private final Collection<ConfiguredTarget> skippedTests;
- private final Map<BuildConfigurationValue.Key, BuildConfiguration> configurationMap;
+ private final Map<BuildConfigurationKey, BuildConfigurationValue> configurationMap;
/**
* Construct the event.
@@ -49,7 +49,7 @@
Collection<? extends ConfiguredTarget> targets,
Collection<? extends ConfiguredTarget> testTargets,
Collection<? extends ConfiguredTarget> targetsToSkip,
- Map<BuildConfigurationValue.Key, BuildConfiguration> configurationMap) {
+ Map<BuildConfigurationKey, BuildConfigurationValue> configurationMap) {
this.targets = ImmutableList.copyOf(targets);
this.testTargets = testTargets == null ? null : ImmutableList.copyOf(testTargets);
this.skippedTests = ImmutableList.copyOf(targetsToSkip);
@@ -83,7 +83,7 @@
return skippedTests;
}
- public BuildConfiguration getConfigurationForTarget(ConfiguredTarget target) {
+ public BuildConfigurationValue getConfigurationForTarget(ConfiguredTarget target) {
return Preconditions.checkNotNull(configurationMap.get(target.getConfigurationKey()));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/causes/AnalysisFailedCause.java b/src/main/java/com/google/devtools/build/lib/causes/AnalysisFailedCause.java
index ed6ab45..744ee4a 100644
--- a/src/main/java/com/google/devtools/build/lib/causes/AnalysisFailedCause.java
+++ b/src/main/java/com/google/devtools/build/lib/causes/AnalysisFailedCause.java
@@ -22,8 +22,8 @@
import javax.annotation.Nullable;
/**
- * Class describing a {@link Cause} that can uniquely be described by a {@link Label} and
- * {@link com.google.devtools.build.lib.analysis.config.BuildConfiguration}. Note that the
+ * Class describing a {@link Cause} that can uniquely be described by a {@link Label} and {@link
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}. Note that the
* configuration may be null, in which case this generates an UnconfiguredLabel event.
*/
public class AnalysisFailedCause implements Cause {
diff --git a/src/main/java/com/google/devtools/build/lib/metrics/PostGCMemoryUseRecorder.java b/src/main/java/com/google/devtools/build/lib/metrics/PostGCMemoryUseRecorder.java
index 9c0b03f..2f254d2 100644
--- a/src/main/java/com/google/devtools/build/lib/metrics/PostGCMemoryUseRecorder.java
+++ b/src/main/java/com/google/devtools/build/lib/metrics/PostGCMemoryUseRecorder.java
@@ -20,7 +20,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.flogger.GoogleLogger;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.profiler.Profiler;
import com.google.devtools.build.lib.profiler.ProfilerTask;
import com.google.devtools.build.lib.runtime.BlazeModule;
@@ -227,7 +227,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return PostGCMemoryUseRecorder.get()
.getPeakPostGcHeap()
.map(peak -> print(StringUtilities.prettyPrintBytes(peak.bytes())))
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
index 5b78f0c..70801f5 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java
@@ -353,7 +353,7 @@
/**
* Optional predicate to conditionally propagate down an attribute based on the {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration}.
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}.
*
* <p>This is implemented specifically to support the platform-based Android toolchain
* migration. See {@link com.google.devtools.build.lib.rules.android.DexArchiveAspect} for
@@ -363,7 +363,7 @@
* @param propagateFunction {@link BiPredicate} that takes the aspect's build configuration and
* name of the attribute to propagate. If it returns true, propagates down this attribute in
* this configuration. We don't explicitly type with {@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration} because {@link
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue} because {@link
* AspectDefinition} is a loading phase class, with no access to config symbols.
*/
public Builder propagateViaAttribute(BiPredicate<Object, String> propagateFunction) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
index ef633e1..743f4e0 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -1471,7 +1471,8 @@
}
}
- // TODO(b/65746853): Remove documentation about accepting BuildConfiguration when uses are cleaned
+ // TODO(b/65746853): Remove documentation about accepting BuildConfigurationValue when uses are
+ // cleaned
// up.
/**
* Provider of values for late-bound attributes. See {@link Attribute#value(LateBoundDefault<?, ?
@@ -1481,8 +1482,8 @@
* confuse users.
*
* @param <FragmentT> The type of value that is used to compute this value. This is usually a
- * subclass of BuildConfiguration.Fragment. It may also be Void to receive null, or
- * BuildConfiguration itself to receive the entire configuration.
+ * subclass of BuildConfigurationValue.Fragment. It may also be Void to receive null, or
+ * BuildConfigurationValue itself to receive the entire configuration.
* @param <ValueT> The type of value returned by this class. Must be either {@link Void}, a {@link
* Label}, or a {@link List} of {@link Label} objects.
*/
@@ -1550,8 +1551,9 @@
* <p>It may also be {@link Void} to receive null. This is rarely necessary, but can be used,
* e.g., if the attribute is named to match an attribute in another rule which is late-bound.
*
- * <p>It may also be BuildConfiguration to receive the entire configuration. This is deprecated,
- * and only necessary when the default is computed from methods of BuildConfiguration itself.
+ * <p>It may also be BuildConfigurationValue to receive the entire configuration. This is
+ * deprecated, and only necessary when the default is computed from methods of
+ * BuildConfigurationValue itself.
*/
public final Class<FragmentT> getFragmentClass() {
return fragmentClass;
@@ -1637,8 +1639,9 @@
* attribute on another rule which is late-bound, use {@link #alwaysNull}.
*
* @param fragmentClass The fragment to receive from the target configuration. May also be
- * BuildConfiguration.class to receive the entire configuration (deprecated) - in this case,
- * you must only use methods of BuildConfiguration itself, and not use any fragments.
+ * BuildConfigurationValue.class to receive the entire configuration (deprecated) - in this
+ * case, you must only use methods of BuildConfigurationValue itself, and not use any
+ * fragments.
* @param defaultValue The default {@link Label} to return at loading time, when the
* configuration is not available.
* @param resolver A function which will compute the actual value with the configuration.
@@ -1665,10 +1668,10 @@
* dependency will be analyzed in the host configuration.
*
* @param fragmentClass The fragment to receive from the host configuration. May also be
- * BuildConfiguration.class to receive the entire configuration (deprecated) - in this case,
- * you must only use methods of BuildConfiguration itself, and not use any fragments. It is
- * very rare that a LateBoundDefault should need a host configuration fragment; use {@link
- * #fromTargetConfiguration} in most cases.
+ * BuildConfigurationValue.class to receive the entire configuration (deprecated) - in this
+ * case, you must only use methods of BuildConfigurationValue itself, and not use any
+ * fragments. It is very rare that a LateBoundDefault should need a host configuration
+ * fragment; use {@link #fromTargetConfiguration} in most cases.
* @param defaultValue The default {@link Label} to return at loading time, when the
* configuration is not available.
* @param resolver A function which will compute the actual value with the configuration.
diff --git a/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java b/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java
index 0d3526b..ba83a07 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java
@@ -213,8 +213,8 @@
* with the naming form seen in the Starlark API.
*
* <p>{@link
- * com.google.devtools.build.lib.analysis.config.BuildConfiguration#getStarlarkFragmentByName} can
- * be used to convert this to Java fragment instances.
+ * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#getStarlarkFragmentByName}
+ * can be used to convert this to Java fragment instances.
*/
public ImmutableCollection<String> getRequiredStarlarkFragments() {
return starlarkRequiredConfigurationFragments.values();
diff --git a/src/main/java/com/google/devtools/build/lib/query2/BUILD b/src/main/java/com/google/devtools/build/lib/query2/BUILD
index 32b665d..b6aa812 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/query2/BUILD
@@ -80,7 +80,7 @@
"//src/main/java/com/google/devtools/build/lib/skyframe:actiongraph/v2/monolithic_output_handler",
"//src/main/java/com/google/devtools/build/lib/skyframe:actiongraph/v2/streamed_output_handler",
"//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator",
- "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key",
"//src/main/java/com/google/devtools/build/lib/skyframe:containing_package_lookup_function",
"//src/main/java/com/google/devtools/build/lib/skyframe:detailed_exceptions",
diff --git a/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java
index 505298c..87cd767 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java
@@ -24,7 +24,7 @@
import com.google.devtools.build.lib.analysis.AliasProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.cmdline.Label;
@@ -103,7 +103,7 @@
skyKey -> (ConfiguredTargetKey) skyKey.argument();
protected final TopLevelConfigurations topLevelConfigurations;
- protected final BuildConfiguration hostConfiguration;
+ protected final BuildConfigurationValue hostConfiguration;
private final PathFragment parserPrefix;
private final PathPackageLocator pkgPath;
private final Supplier<WalkableGraph> walkableGraphSupplier;
@@ -116,7 +116,7 @@
ExtendedEventHandler eventHandler,
Iterable<QueryFunction> extraFunctions,
TopLevelConfigurations topLevelConfigurations,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
PathFragment parserPrefix,
PathPackageLocator pkgPath,
Supplier<WalkableGraph> walkableGraphSupplier,
@@ -135,7 +135,7 @@
ExtendedEventHandler eventHandler,
OutputStream outputStream,
SkyframeExecutor skyframeExecutor,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
@Nullable TransitionFactory<RuleTransitionData> trimmingTransitionFactory,
PackageManager packageManager)
throws QueryException, InterruptedException;
@@ -185,7 +185,7 @@
}
}
- public BuildConfiguration getHostConfiguration() {
+ public BuildConfigurationValue getHostConfiguration() {
return hostConfiguration;
}
@@ -339,7 +339,7 @@
// host config. This is somewhat counterintuitive and subject to change in the future but seems
// like the best option right now.
if (settings.contains(Setting.ONLY_TARGET_DEPS)) {
- BuildConfiguration currentConfig = getConfiguration(target);
+ BuildConfigurationValue currentConfig = getConfiguration(target);
if (currentConfig != null && currentConfig.isToolConfiguration()) {
deps =
deps.stream()
@@ -502,7 +502,7 @@
}
@Nullable
- protected abstract BuildConfiguration getConfiguration(T target);
+ protected abstract BuildConfigurationValue getConfiguration(T target);
protected abstract ConfiguredTargetKey getSkyKey(T target);
@@ -577,18 +577,18 @@
public static class TopLevelConfigurations {
/** A map of non-null configured top-level targets sorted by configuration checksum. */
- private final ImmutableMap<Label, BuildConfiguration> nonNulls;
+ private final ImmutableMap<Label, BuildConfigurationValue> nonNulls;
/**
* {@code nonNulls} may often have many duplicate values in its value set so we store a sorted
* set of all the non-null configurations here.
*/
- private final ImmutableSortedSet<BuildConfiguration> nonNullConfigs;
+ private final ImmutableSortedSet<BuildConfigurationValue> nonNullConfigs;
/** A list of null configured top-level targets. */
private final ImmutableList<Label> nulls;
public TopLevelConfigurations(
Collection<TargetAndConfiguration> topLevelTargetsAndConfigurations) {
- ImmutableMap.Builder<Label, BuildConfiguration> nonNullsBuilder =
+ ImmutableMap.Builder<Label, BuildConfigurationValue> nonNullsBuilder =
ImmutableMap.builderWithExpectedSize(topLevelTargetsAndConfigurations.size());
ImmutableList.Builder<Label> nullsBuilder = new ImmutableList.Builder<>();
for (TargetAndConfiguration targetAndConfiguration : topLevelTargetsAndConfigurations) {
@@ -602,7 +602,7 @@
nonNulls = nonNullsBuilder.build();
nonNullConfigs =
ImmutableSortedSet.copyOf(
- Comparator.comparing(BuildConfiguration::checksum), nonNulls.values());
+ Comparator.comparing(BuildConfigurationValue::checksum), nonNulls.values());
nulls = nullsBuilder.build();
}
@@ -613,7 +613,7 @@
// This method returns the configuration of a top-level target if it's not null-configured and
// otherwise returns null (signifying it is null configured).
@Nullable
- public BuildConfiguration getConfigurationForTopLevelTarget(Label label) {
+ public BuildConfigurationValue getConfigurationForTopLevelTarget(Label label) {
Preconditions.checkArgument(
isTopLevelTarget(label),
"Attempting to get top-level configuration for non-top-level target %s.",
@@ -621,7 +621,7 @@
return nonNulls.get(label);
}
- public Iterable<BuildConfiguration> getConfigurations() {
+ public Iterable<BuildConfigurationValue> getConfigurations() {
if (nulls.isEmpty()) {
return nonNullConfigs;
} else {
diff --git a/src/main/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryEnvironment.java
index 4e7ecd6..66ca6b8 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryEnvironment.java
@@ -20,7 +20,7 @@
import com.google.common.util.concurrent.MoreExecutors;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.cmdline.Label;
@@ -43,7 +43,6 @@
import com.google.devtools.build.lib.query2.engine.QueryException;
import com.google.devtools.build.lib.query2.engine.QueryExpression;
import com.google.devtools.build.lib.query2.engine.QueryUtil.ThreadSafeMutableKeyExtractorBackedSetImpl;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
import com.google.devtools.build.lib.skyframe.actiongraph.v2.StreamedOutputHandler;
@@ -66,7 +65,7 @@
public static final ImmutableList<QueryFunction> AQUERY_FUNCTIONS = populateAqueryFunctions();
public static final ImmutableList<QueryFunction> FUNCTIONS = populateFunctions();
- AqueryOptions aqueryOptions;
+ private AqueryOptions aqueryOptions;
private AqueryActionFilter actionFilters;
private final KeyExtractor<ConfiguredTargetValue, ConfiguredTargetKey>
@@ -78,7 +77,7 @@
ExtendedEventHandler eventHandler,
Iterable<QueryFunction> extraFunctions,
TopLevelConfigurations topLevelConfigurations,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
PathFragment parserPrefix,
PathPackageLocator pkgPath,
Supplier<WalkableGraph> walkableGraphSupplier,
@@ -108,7 +107,7 @@
ExtendedEventHandler eventHandler,
Iterable<QueryFunction> extraFunctions,
TopLevelConfigurations topLevelConfigurations,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
PathFragment parserPrefix,
PathPackageLocator pkgPath,
Supplier<WalkableGraph> walkableGraphSupplier,
@@ -146,7 +145,7 @@
ExtendedEventHandler eventHandler,
OutputStream out,
SkyframeExecutor skyframeExecutor,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
@Nullable TransitionFactory<RuleTransitionData> trimmingTransitionFactory,
PackageManager packageManager) {
return ImmutableList.of(
@@ -217,7 +216,7 @@
.build());
} else {
ConfiguredTargetValue toReturn;
- for (BuildConfiguration configuration : topLevelConfigurations.getConfigurations()) {
+ for (BuildConfigurationValue configuration : topLevelConfigurations.getConfigurations()) {
toReturn =
this.getConfiguredTargetValue(
ConfiguredTargetKey.builder()
@@ -257,13 +256,12 @@
@Nullable
@Override
- protected BuildConfiguration getConfiguration(ConfiguredTargetValue configuredTargetValue) {
+ protected BuildConfigurationValue getConfiguration(ConfiguredTargetValue configuredTargetValue) {
ConfiguredTarget target = configuredTargetValue.getConfiguredTarget();
try {
return target.getConfigurationKey() == null
? null
- : ((BuildConfigurationValue) graph.getValue(target.getConfigurationKey()))
- .getConfiguration();
+ : (BuildConfigurationValue) graph.getValue(target.getConfigurationKey());
} catch (InterruptedException e) {
throw new IllegalStateException("Unexpected interruption during aquery", e);
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetAccessor.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetAccessor.java
index 2a8cd9b..84d4154 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetAccessor.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetAccessor.java
@@ -26,7 +26,7 @@
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
import com.google.devtools.build.lib.analysis.ToolchainCollection;
import com.google.devtools.build.lib.analysis.ToolchainContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.configuredtargets.OutputFileConfiguredTarget;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
@@ -42,7 +42,7 @@
import com.google.devtools.build.lib.query2.engine.QueryExpression;
import com.google.devtools.build.lib.query2.engine.QueryVisibility;
import com.google.devtools.build.lib.server.FailureDetails.ConfigurableQuery;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.skyframe.ToolchainContextKey;
import com.google.devtools.build.lib.skyframe.UnloadedToolchainContext;
@@ -196,13 +196,13 @@
@Nullable
ToolchainCollection<ToolchainContext> getToolchainContexts(
- Target target, BuildConfiguration config) {
+ Target target, BuildConfigurationValue config) {
return getToolchainContexts(target, config, walkableGraph);
}
@Nullable
private static ToolchainCollection<ToolchainContext> getToolchainContexts(
- Target target, BuildConfiguration config, WalkableGraph walkableGraph) {
+ Target target, BuildConfigurationValue config, WalkableGraph walkableGraph) {
if (!(target instanceof Rule)) {
return null;
}
@@ -223,7 +223,7 @@
ToolchainCollection.Builder<UnloadedToolchainContext> toolchainContexts =
ToolchainCollection.builder();
- BuildConfigurationValue.Key configurationKey = BuildConfigurationValue.key(config);
+ BuildConfigurationKey configurationKey = config.getKey();
try {
for (Map.Entry<String, ExecGroup> group : execGroups.entrySet()) {
ExecGroup execGroup = group.getValue();
diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java
index 2c4ddb0..5a20e89 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryEnvironment.java
@@ -16,6 +16,7 @@
import static com.google.common.collect.ImmutableMap.toImmutableMap;
import com.google.common.base.Joiner;
+import com.google.common.base.Preconditions;
import com.google.common.base.Verify;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -25,7 +26,7 @@
import com.google.common.util.concurrent.MoreExecutors;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.cmdline.Label;
@@ -49,7 +50,7 @@
import com.google.devtools.build.lib.query2.query.aspectresolvers.AspectResolver;
import com.google.devtools.build.lib.rules.AliasConfiguredTarget;
import com.google.devtools.build.lib.server.FailureDetails.ConfigurableQuery;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -101,7 +102,7 @@
* <p>This can also be used in cquery's {@code config} function to match against explicitly
* specified configs. This, in particular, is where having user-friendly hashes is invaluable.
*/
- private final ImmutableMap<String, BuildConfiguration> transitiveConfigurations;
+ private final ImmutableMap<String, BuildConfigurationValue> transitiveConfigurations;
@Override
protected KeyExtractor<KeyedConfiguredTarget, ConfiguredTargetKey>
@@ -114,7 +115,7 @@
ExtendedEventHandler eventHandler,
Iterable<QueryFunction> extraFunctions,
TopLevelConfigurations topLevelConfigurations,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
Collection<SkyKey> transitiveConfigurationKeys,
PathFragment parserPrefix,
PathPackageLocator pkgPath,
@@ -142,7 +143,7 @@
ExtendedEventHandler eventHandler,
Iterable<QueryFunction> extraFunctions,
TopLevelConfigurations topLevelConfigurations,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
Collection<SkyKey> transitiveConfigurationKeys,
PathFragment parserPrefix,
PathPackageLocator pkgPath,
@@ -175,37 +176,35 @@
}
/**
- * Return supplied BuildConfiguration if both are equal else throw exception.
+ * Returns a supplied {@link BuildConfigurationValue} if both have the same build options,
+ * otherwise throws an exception.
*
- * <p>Noting the background of {@link BuildConfigurationValue.Key::toComparableString}, multiple
- * BuildConfigurationValue.Key can correspond to the same BuildConfiguration, especially when
- * trimming is involved.
- *
- * <p>Note that, in {@link getTransitiveConfigurations}, only interested in the values and
- * throwing away the Keys. Thus, intricacies around Key fragments and options diverging not as
- * relevant anyway.
+ * <p>Noting the background of {@link BuildConfigurationKey#toComparableString}, multiple {@link
+ * BuildConfigurationKey} instances can correspond to the same {@link BuildConfigurationValue},
+ * especially when trimming is involved. We are only interested in configurations whose options
+ * differ - intricacies around differing fragments can be disregarded.
*/
- private static BuildConfiguration mergeEqualBuildConfiguration(
- BuildConfiguration left, BuildConfiguration right) {
- if (!left.equals(right)) {
- throw new IllegalArgumentException(
- "Non-matching configurations " + left.checksum() + ", " + right.checksum());
- }
+ private static BuildConfigurationValue mergeEqualBuildConfiguration(
+ BuildConfigurationValue left, BuildConfigurationValue right) {
+ Preconditions.checkArgument(
+ left.getOptions().equals(right.getOptions()),
+ "Non-matching configurations: (%s, %s)",
+ left,
+ right);
return left;
}
- private static ImmutableMap<String, BuildConfiguration> getTransitiveConfigurations(
+ private static ImmutableMap<String, BuildConfigurationValue> getTransitiveConfigurations(
Collection<SkyKey> transitiveConfigurationKeys, WalkableGraph graph)
throws InterruptedException {
- // mergeEqualBuildConfiguration can only fail if two BuildConfiguration have the same
+ // mergeEqualBuildConfiguration can only fail if two BuildConfigurationValue have the same
// checksum but are not equal. This would be a black swan event.
return graph.getSuccessfulValues(transitiveConfigurationKeys).values().stream()
- .map(value -> (BuildConfigurationValue) value)
- .map(BuildConfigurationValue::getConfiguration)
- .sorted(Comparator.comparing(BuildConfiguration::checksum))
+ .map(BuildConfigurationValue.class::cast)
+ .sorted(Comparator.comparing(BuildConfigurationValue::checksum))
.collect(
toImmutableMap(
- BuildConfiguration::checksum,
+ BuildConfigurationValue::checksum,
Function.identity(),
ConfiguredTargetQueryEnvironment::mergeEqualBuildConfiguration));
}
@@ -217,7 +216,7 @@
ExtendedEventHandler eventHandler,
OutputStream out,
SkyframeExecutor skyframeExecutor,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
@Nullable TransitionFactory<RuleTransitionData> trimmingTransitionFactory,
PackageManager packageManager)
throws QueryException, InterruptedException {
@@ -329,8 +328,8 @@
* null.
*/
@Nullable
- private KeyedConfiguredTarget getConfiguredTarget(Label label, BuildConfiguration configuration)
- throws InterruptedException {
+ private KeyedConfiguredTarget getConfiguredTarget(
+ Label label, BuildConfigurationValue configuration) throws InterruptedException {
return getValueFromKey(
ConfiguredTargetKey.builder().setLabel(label).setConfiguration(configuration).build());
}
@@ -352,7 +351,7 @@
private List<KeyedConfiguredTarget> getConfiguredTargetsForConfigFunction(Label label)
throws InterruptedException {
ImmutableList.Builder<KeyedConfiguredTarget> ans = ImmutableList.builder();
- for (BuildConfiguration config : transitiveConfigurations.values()) {
+ for (BuildConfigurationValue config : transitiveConfigurations.values()) {
KeyedConfiguredTarget kct = getConfiguredTarget(label, config);
if (kct != null) {
ans.add(kct);
@@ -487,7 +486,7 @@
label, topLevelConfigurations.getConfigurationForTopLevelTarget(label));
} else {
KeyedConfiguredTarget toReturn;
- for (BuildConfiguration configuration : topLevelConfigurations.getConfigurations()) {
+ for (BuildConfigurationValue configuration : topLevelConfigurations.getConfigurations()) {
toReturn = getConfiguredTarget(label, configuration);
if (toReturn != null) {
return toReturn;
@@ -514,12 +513,11 @@
@Nullable
@Override
- protected BuildConfiguration getConfiguration(KeyedConfiguredTarget target) {
+ protected BuildConfigurationValue getConfiguration(KeyedConfiguredTarget target) {
try {
return target.getConfigurationKey() == null
? null
- : ((BuildConfigurationValue) graph.getValue(target.getConfigurationKey()))
- .getConfiguration();
+ : (BuildConfigurationValue) graph.getValue(target.getConfigurationKey());
} catch (InterruptedException e) {
throw new IllegalStateException("Unexpected interruption during configured target query", e);
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryOptions.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryOptions.java
index eee019a..0d85d0d 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryOptions.java
@@ -69,8 +69,8 @@
"Shows the configuration fragments required by a rule and its transitive "
+ "dependencies. This can be useful for evaluating how much a configured target "
+ "graph can be trimmed.")
- // This implicitly sets the BuildConfiguration option --include_config_fragments_provider, which
- // makes configured targets compute the data cquery needs to enable this feature.
+ // This implicitly sets the option --include_config_fragments_provider (see CoreOptions), which
+ // makes configured targets compute the data cquery needs to enable this feature.
public IncludeConfigFragmentsEnum showRequiredConfigFragments;
@Option(
diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryThreadsafeCallback.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryThreadsafeCallback.java
index 9cb83bb..6711396 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryThreadsafeCallback.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryThreadsafeCallback.java
@@ -15,11 +15,11 @@
import com.google.common.annotations.VisibleForTesting;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.query2.NamedThreadSafeOutputFormatterCallback;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment.TargetAccessor;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
import java.io.BufferedWriter;
import java.io.IOException;
@@ -37,8 +37,8 @@
* that is populated by child classes.
*
* <p>Human-readable cquery outputters should output short configuration IDs via {@link
- * #shortId(BuildConfiguration)} for easier reading. Machine-readable output, which are more focused
- * on completeness, should output full configuration checksums.
+ * #shortId(BuildConfigurationValue)} for easier reading. Machine-readable output, which are more
+ * focused on completeness, should output full configuration checksums.
*/
public abstract class CqueryThreadsafeCallback
extends NamedThreadSafeOutputFormatterCallback<KeyedConfiguredTarget> {
@@ -50,7 +50,7 @@
// Skyframe calls incur a performance cost, even on cache hits. Consider this before exposing
// direct executor access to child classes.
private final SkyframeExecutor skyframeExecutor;
- private final Map<BuildConfigurationValue.Key, BuildConfiguration> configCache =
+ private final Map<BuildConfigurationKey, BuildConfigurationValue> configCache =
new ConcurrentHashMap<>();
protected final ConfiguredTargetAccessor accessor;
@@ -94,7 +94,7 @@
}
}
- protected BuildConfiguration getConfiguration(BuildConfigurationValue.Key configKey) {
+ protected BuildConfigurationValue getConfiguration(BuildConfigurationKey configKey) {
// Experiments querying:
// cquery --output=graph "deps(//src:main/java/com/google/devtools/build/lib:runtime)"
// 10 times on a warm Blaze instance show 7% less total query time when using this cache vs.
@@ -123,7 +123,7 @@
* Returns a user-friendly configuration identifier, using special IDs for null and host
* configurations and {@link #shortId(String)} for others.
*/
- protected static String shortId(@Nullable BuildConfiguration config) {
+ protected static String shortId(@Nullable BuildConfigurationValue config) {
if (config == null) {
return "null";
} else if (config.isHostConfiguration()) {
diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/KeyedConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/KeyedConfiguredTarget.java
index ed56d68..fb14222 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/cquery/KeyedConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/KeyedConfiguredTarget.java
@@ -18,7 +18,7 @@
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import javax.annotation.Nullable;
@@ -49,7 +49,7 @@
/** Returns the configuration key used for this KeyedConfiguredTarget. */
@Nullable
- public BuildConfigurationValue.Key getConfigurationKey() {
+ public BuildConfigurationKey getConfigurationKey() {
return getConfiguredTarget().getConfigurationKey();
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/StarlarkOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/StarlarkOutputFormatterCallback.java
index d2c8e8a..f6cc512 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/cquery/StarlarkOutputFormatterCallback.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/StarlarkOutputFormatterCallback.java
@@ -18,7 +18,7 @@
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.analysis.configuredtargets.AbstractConfiguredTarget;
@@ -65,7 +65,7 @@
@Param(name = "target"),
})
public Object buildOptions(ConfiguredTarget target) {
- BuildConfiguration config = getConfiguration(target.getConfigurationKey());
+ BuildConfigurationValue config = getConfiguration(target.getConfigurationKey());
if (config == null) {
// config is null for input file configured targets.
diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/TransitionsOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/TransitionsOutputFormatterCallback.java
index d3c4369..2cb3ea5 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/cquery/TransitionsOutputFormatterCallback.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/TransitionsOutputFormatterCallback.java
@@ -26,7 +26,7 @@
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.ToolchainCollection;
import com.google.devtools.build.lib.analysis.ToolchainContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.BuildOptions.OptionsDiff;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
@@ -61,7 +61,7 @@
*/
class TransitionsOutputFormatterCallback extends CqueryThreadsafeCallback {
- protected final BuildConfiguration hostConfiguration;
+ protected final BuildConfigurationValue hostConfiguration;
private final HashMap<Label, Target> partialResultMap;
@Nullable private final TransitionFactory<RuleTransitionData> trimmingTransitionFactory;
@@ -81,7 +81,7 @@
OutputStream out,
SkyframeExecutor skyframeExecutor,
TargetAccessor<KeyedConfiguredTarget> accessor,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
@Nullable TransitionFactory<RuleTransitionData> trimmingTransitionFactory) {
super(eventHandler, options, out, skyframeExecutor, accessor);
this.hostConfiguration = hostConfiguration;
@@ -103,7 +103,8 @@
partialResult.forEach(kct -> partialResultMap.put(kct.getLabel(), accessor.getTarget(kct)));
for (KeyedConfiguredTarget keyedConfiguredTarget : partialResult) {
Target target = partialResultMap.get(keyedConfiguredTarget.getLabel());
- BuildConfiguration config = getConfiguration(keyedConfiguredTarget.getConfigurationKey());
+ BuildConfigurationValue config =
+ getConfiguration(keyedConfiguredTarget.getConfigurationKey());
addResult(
getRuleClassTransition(keyedConfiguredTarget.getConfiguredTarget(), target)
+ String.format(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
index d4821b7..123ad61 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java
@@ -28,7 +28,7 @@
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.Info;
import com.google.devtools.build.lib.packages.Provider;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
import javax.annotation.Nullable;
@@ -47,7 +47,7 @@
@Immutable
public final class AliasConfiguredTarget implements ConfiguredTarget, Structure {
private final Label label;
- private final BuildConfigurationValue.Key configurationKey;
+ private final BuildConfigurationKey configurationKey;
private final ConfiguredTarget actual;
private final ImmutableMap<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider>
overrides;
@@ -69,7 +69,7 @@
@VisibleForSerialization
AliasConfiguredTarget(
Label label,
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
ConfiguredTarget actual,
ImmutableMap<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> overrides,
ImmutableMap<Label, ConfigMatchingProvider> configConditions) {
@@ -126,7 +126,7 @@
}
@Override
- public BuildConfigurationValue.Key getConfigurationKey() {
+ public BuildConfigurationKey getConfigurationKey() {
// This does not return actual.getConfigurationKey() because actual might be an input file, in
// which case its configurationKey is null and we don't want to have rules that have a null
// configurationKey.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/BUILD b/src/main/java/com/google/devtools/build/lib/rules/BUILD
index cbc3927..ac40eb4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/BUILD
@@ -166,7 +166,7 @@
"//src/main/java/com/google/devtools/build/lib/collect/nestedset",
"//src/main/java/com/google/devtools/build/lib/concurrent",
"//src/main/java/com/google/devtools/build/lib/packages",
- "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/util:filetype",
"//src/main/java/net/starlark/java/eval",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/LabelBuildSettings.java b/src/main/java/com/google/devtools/build/lib/rules/LabelBuildSettings.java
index da58df1..150b059 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/LabelBuildSettings.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/LabelBuildSettings.java
@@ -19,7 +19,7 @@
import static com.google.devtools.build.lib.packages.RuleClass.Builder.STARLARK_BUILD_SETTING_DEFAULT_ATTR_NAME;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault;
import com.google.devtools.build.lib.packages.BuildSetting;
@@ -50,10 +50,10 @@
*/
public class LabelBuildSettings {
@AutoCodec @VisibleForSerialization
- // TODO(b/65746853): find a way to do this without passing the entire BuildConfiguration
- static final LabelLateBoundDefault<BuildConfiguration> ACTUAL =
+ // TODO(b/65746853): find a way to do this without passing the entire BuildConfigurationValue
+ static final LabelLateBoundDefault<BuildConfigurationValue> ACTUAL =
LabelLateBoundDefault.fromTargetConfiguration(
- BuildConfiguration.class,
+ BuildConfigurationValue.class,
null,
(rule, attributes, configuration) -> {
if (rule == null || configuration == null) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index baf79c0..518be54 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -56,7 +56,7 @@
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SpawnActionTemplate;
import com.google.devtools.build.lib.analysis.actions.SpawnActionTemplate.OutputPathMapper;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -126,7 +126,7 @@
public final void addRuleImplSpecificRequiredConfigFragments(
RequiredConfigFragmentsProvider.Builder requiredFragments,
AttributeMap attributes,
- BuildConfiguration configuration) {
+ BuildConfigurationValue configuration) {
requiredFragments.addStarlarkOptions(AndroidFeatureFlagSetProvider.getFeatureFlags(attributes));
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index eb2750b..8657db8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -33,7 +33,7 @@
import com.google.devtools.build.lib.analysis.actions.Substitution;
import com.google.devtools.build.lib.analysis.actions.Template;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -412,7 +412,7 @@
public final void addRuleImplSpecificRequiredConfigFragments(
RequiredConfigFragmentsProvider.Builder requiredFragments,
AttributeMap attributes,
- BuildConfiguration configuration) {
+ BuildConfigurationValue configuration) {
requiredFragments.addStarlarkOptions(AndroidFeatureFlagSetProvider.getFeatureFlags(attributes));
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
index ce5a845..b95d3cd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java
@@ -22,7 +22,7 @@
import com.google.devtools.build.lib.analysis.ResolvedToolchainContext;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -123,7 +123,7 @@
* --incompatible_enable_android_toolchain_resolution=true, else, uses the legacy attribute..
*/
public static AndroidSdkProvider fromRuleContext(RuleContext ruleContext) {
- BuildConfiguration configuration = ruleContext.getConfiguration();
+ BuildConfigurationValue configuration = ruleContext.getConfiguration();
if (configuration != null
&& configuration.hasFragment(AndroidConfiguration.class)
&& configuration
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
index f81fbd5..6f547c2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
@@ -43,7 +43,7 @@
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory;
import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
import com.google.devtools.build.lib.cmdline.Label;
@@ -161,7 +161,7 @@
return true;
}
AndroidConfiguration androidConfig =
- ((BuildConfiguration) obj).getFragment(AndroidConfiguration.class);
+ ((BuildConfigurationValue) obj).getFragment(AndroidConfiguration.class);
return !androidConfig.incompatibleUseToolchainResolution();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
index 7778438..63a1951 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java
@@ -23,7 +23,7 @@
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -48,7 +48,7 @@
public static final NativeLibs EMPTY = new NativeLibs(ImmutableMap.of(), null);
private static String getLibDirName(ConfiguredTargetAndData dep) {
- BuildConfiguration configuration = dep.getConfiguration();
+ BuildConfigurationValue configuration = dep.getConfiguration();
AndroidConfiguration androidConfiguration =
configuration.getFragment(AndroidConfiguration.class);
String name;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
index 28e5db9..87db045 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java
@@ -41,8 +41,8 @@
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfigurationOptionDetails;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.FragmentOptions;
import com.google.devtools.build.lib.analysis.config.FragmentOptions.SelectRestriction;
@@ -148,7 +148,7 @@
public void addRuleImplSpecificRequiredConfigFragments(
RequiredConfigFragmentsProvider.Builder requiredFragments,
AttributeMap attributes,
- BuildConfiguration configuration) {
+ BuildConfigurationValue configuration) {
// values
attributes
.get(ConfigSettingRule.SETTINGS_ATTRIBUTE, Type.STRING_DICT)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index 5a09880..42873ca 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -35,7 +35,7 @@
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleContext;
import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException;
@@ -896,7 +896,7 @@
public static FeatureConfiguration configureFeaturesOrReportRuleError(
RuleContext ruleContext,
- BuildConfiguration buildConfiguration,
+ BuildConfigurationValue buildConfiguration,
ImmutableSet<String> requestedFeatures,
ImmutableSet<String> unsupportedFeatures,
CcToolchainProvider toolchain,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
index 297402a..dbfb20d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java
@@ -27,7 +27,7 @@
import com.google.devtools.build.lib.analysis.AnalysisUtils;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.compacthashmap.CompactHashMap;
import com.google.devtools.build.lib.collect.compacthashset.CompactHashSet;
@@ -726,7 +726,7 @@
/** Creates a new builder for a {@link CcCompilationContext} instance. */
public static Builder builder(
ActionConstructionContext actionConstructionContext,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
Label label) {
return new Builder(actionConstructionContext, configuration, label);
}
@@ -763,13 +763,13 @@
/** The rule that owns the context */
private final ActionConstructionContext actionConstructionContext;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private final Label label;
/** Creates a new builder for a {@link CcCompilationContext} instance. */
private Builder(
ActionConstructionContext actionConstructionContext,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
Label label) {
this.actionConstructionContext = actionConstructionContext;
this.configuration = configuration;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index 5f547b8..6a0b0ad 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -30,7 +30,7 @@
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.PerLabelOptions;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.cmdline.Label;
@@ -231,7 +231,7 @@
}
private final CppSemantics semantics;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private final ImmutableMap<String, String> executionInfo;
private final CppConfiguration cppConfiguration;
private final boolean shouldProcessHeaders;
@@ -299,7 +299,7 @@
SourceCategory sourceCategory,
CcToolchainProvider ccToolchain,
FdoContext fdoContext,
- BuildConfiguration buildConfiguration,
+ BuildConfigurationValue buildConfiguration,
ImmutableMap<String, String> executionInfo,
boolean shouldProcessHeaders) {
this.semantics = Preconditions.checkNotNull(semantics);
@@ -2038,7 +2038,7 @@
/** Returns true iff code coverage is enabled for the given target. */
public static boolean isCodeCoverageEnabled(RuleContext ruleContext) {
- BuildConfiguration configuration = ruleContext.getConfiguration();
+ BuildConfigurationValue configuration = ruleContext.getConfiguration();
if (configuration.isCodeCoverageEnabled()) {
// If rule is matched by the instrumentation filter, enable instrumentation
if (InstrumentedFilesCollector.shouldIncludeLocalSources(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
index 200330e..c7bd53e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
@@ -34,7 +34,7 @@
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -582,7 +582,7 @@
RuleContext ruleContext,
CcToolchainProvider ccToolchain,
CppConfiguration cppConfiguration,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
CcCompilationOutputs ccCompilationOutputs,
FeatureConfiguration featureConfiguration)
throws RuleErrorException {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
index 971f383..44beb92 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
@@ -28,7 +28,7 @@
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -85,7 +85,7 @@
}
private final CppSemantics semantics;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private final CppConfiguration cppConfiguration;
private final NestedSetBuilder<Artifact> additionalLinkerInputsBuilder =
@@ -156,7 +156,7 @@
FeatureConfiguration featureConfiguration,
CcToolchainProvider ccToolchain,
FdoContext fdoContext,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
CppConfiguration cppConfiguration,
SymbolGenerator<?> symbolGenerator,
ImmutableMap<String, String> executionInfo) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index b3a5b95..324503b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -26,7 +26,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
import com.google.devtools.build.lib.analysis.starlark.StarlarkActionFactory;
@@ -1943,7 +1943,7 @@
}
}
- private static boolean isStampingEnabled(int stamp, BuildConfiguration config)
+ private static boolean isStampingEnabled(int stamp, BuildConfigurationValue config)
throws EvalException {
if (stamp == 0) {
return false;
@@ -2093,7 +2093,8 @@
SourceCategory sourceCategory =
(language == Language.CPP) ? SourceCategory.CC : SourceCategory.CC_AND_OBJC;
CcCommon common = new CcCommon(actions.getRuleContext(), ccToolchainProvider);
- BuildConfiguration configuration = actions.getActionConstructionContext().getConfiguration();
+ BuildConfigurationValue configuration =
+ actions.getActionConstructionContext().getConfiguration();
CcCompilationHelper helper =
new CcCompilationHelper(
actions.asActionRegistry(actions),
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
index a563651..f9f4b8c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.analysis.LicensesProvider;
import com.google.devtools.build.lib.analysis.PackageSpecificationProvider;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.Depset;
@@ -796,9 +796,9 @@
}
/**
- * Returns a map of additional make variables for use by {@link BuildConfiguration}. These are to
- * used to allow some build rules to avoid the limits on stack frame sizes and variable-length
- * arrays.
+ * Returns a map of additional make variables for use by {@link BuildConfigurationValue}. These
+ * are to used to allow some build rules to avoid the limits on stack frame sizes and
+ * variable-length arrays.
*
* <p>The returned map must contain an entry for {@code STACK_FRAME_UNLIMITED}, though the entry
* may be an empty string.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
index bc5e444..5c448c9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java
@@ -23,7 +23,7 @@
import com.google.devtools.build.lib.analysis.PackageSpecificationProvider;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
import com.google.devtools.build.lib.cmdline.Label;
@@ -62,7 +62,8 @@
public static CcToolchainProvider getCcToolchainProvider(
RuleContext ruleContext, CcToolchainAttributesProvider attributes)
throws RuleErrorException, InterruptedException {
- BuildConfiguration configuration = Preconditions.checkNotNull(ruleContext.getConfiguration());
+ BuildConfigurationValue configuration =
+ Preconditions.checkNotNull(ruleContext.getConfiguration());
CppConfiguration cppConfiguration =
Preconditions.checkNotNull(configuration.getFragment(CppConfiguration.class));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java
index 4939948..a82be97 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java
@@ -20,7 +20,7 @@
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -47,7 +47,7 @@
@Override
public BuildInfoCollection create(
BuildInfoContext buildInfoContext,
- BuildConfiguration config,
+ BuildConfigurationValue config,
Artifact buildInfo,
Artifact buildChangelist) {
List<Action> actions = new ArrayList<>();
@@ -86,7 +86,7 @@
private WriteBuildInfoHeaderAction getHeader(
BuildInfoContext buildInfoContext,
- BuildConfiguration config,
+ BuildConfigurationValue config,
PathFragment headerName,
NestedSet<Artifact> inputs,
boolean writeVolatileInfo,
@@ -109,7 +109,7 @@
}
@Override
- public boolean isEnabled(BuildConfiguration config) {
+ public boolean isEnabled(BuildConfigurationValue config) {
return config.hasFragment(CppConfiguration.class);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index 207a8d5..5ccf6a4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -24,7 +24,7 @@
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -49,7 +49,7 @@
private final ActionOwner owner;
private boolean shareable;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private CcToolchainFeatures.FeatureConfiguration featureConfiguration;
private CcToolchainVariables variables = CcToolchainVariables.EMPTY;
private Artifact sourceFile;
@@ -88,7 +88,7 @@
ActionConstructionContext actionConstructionContext,
@Nullable Artifact grepIncludes,
CcToolchainProvider ccToolchain,
- BuildConfiguration configuration) {
+ BuildConfigurationValue configuration) {
this.owner = actionConstructionContext.getActionOwner();
this.shareable = false;
this.configuration = configuration;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
index 28146f4..e8a2ed3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -20,7 +20,7 @@
import com.google.common.base.Verify;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
@@ -52,7 +52,7 @@
import net.starlark.java.eval.StarlarkThread;
/**
- * This class represents the C/C++ parts of the {@link BuildConfiguration}, including the host
+ * This class represents the C/C++ parts of the {@link BuildConfigurationValue}, including the host
* architecture, target architecture, compiler version, and a standard library version.
*/
@Immutable
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index 1a374f5..2c32ffd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -46,7 +46,7 @@
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
import com.google.devtools.build.lib.cmdline.Label;
@@ -462,7 +462,7 @@
public static Artifact getLinkedArtifact(
RuleContext ruleContext,
CcToolchainProvider ccToolchain,
- BuildConfiguration config,
+ BuildConfigurationValue config,
LinkTargetType linkType)
throws RuleErrorException {
return getLinkedArtifact(
@@ -473,7 +473,7 @@
public static Artifact getLinkedArtifact(
RuleContext ruleContext,
CcToolchainProvider ccToolchain,
- BuildConfiguration config,
+ BuildConfigurationValue config,
LinkTargetType linkType,
String linkedArtifactNameSuffix)
throws RuleErrorException {
@@ -506,7 +506,7 @@
Label label,
ActionConstructionContext actionConstructionContext,
ArtifactRoot artifactRoot,
- BuildConfiguration config,
+ BuildConfigurationValue config,
LinkTargetType linkType,
String linkedArtifactNameSuffix,
PathFragment name) {
@@ -535,7 +535,7 @@
private static Artifact getLinuxLinkedArtifact(
Label label,
ActionConstructionContext actionConstructionContext,
- BuildConfiguration config,
+ BuildConfigurationValue config,
LinkTargetType linkType,
String linkedArtifactNameSuffix) {
PathFragment name = PathFragment.create(label.getName());
@@ -591,7 +591,7 @@
*/
public static CppModuleMap createDefaultCppModuleMap(
ActionConstructionContext actionConstructionContext,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
Label label) {
// Create the module map artifact as a genfile.
Artifact mapFile =
@@ -722,7 +722,7 @@
ActionConstructionContext actionConstructionContext,
Label label,
String outputName,
- BuildConfiguration config) {
+ BuildConfigurationValue config) {
PathFragment objectDir = getObjDirectory(label, config.isSiblingRepositoryLayout());
return actionConstructionContext.getDerivedArtifact(
objectDir.getRelative(outputName), config.getBinDirectory(label.getRepository()));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
index e5a43dd..fed62b0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java
@@ -45,7 +45,7 @@
import com.google.devtools.build.lib.actions.extra.CppLinkInfo;
import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.starlark.Args;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -89,7 +89,7 @@
Artifact create(
ActionConstructionContext actionConstructionContext,
RepositoryName repositoryName,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
PathFragment rootRelativePath);
}
@@ -103,7 +103,7 @@
public Artifact create(
ActionConstructionContext actionConstructionContext,
RepositoryName repositoryName,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
PathFragment rootRelativePath) {
return actionConstructionContext.getDerivedArtifact(
rootRelativePath, configuration.getBinDirectory(repositoryName));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
index d807f2e..232187e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java
@@ -29,7 +29,7 @@
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.PerLabelOptions;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -78,7 +78,7 @@
public Artifact create(
ActionConstructionContext actionConstructionContext,
RepositoryName repositoryName,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
PathFragment rootRelativePath) {
return actionConstructionContext.getShareableArtifact(
rootRelativePath, configuration.getBinDirectory(repositoryName));
@@ -98,7 +98,7 @@
/** Directory where toolchain stores language-runtime libraries (libstdc++, libc++ ...) */
private PathFragment toolchainLibrariesSolibDir;
- protected final BuildConfiguration configuration;
+ protected final BuildConfigurationValue configuration;
private final CppConfiguration cppConfiguration;
private FeatureConfiguration featureConfiguration;
@@ -164,7 +164,7 @@
ActionConstructionContext actionConstructionContext,
Label label,
Artifact output,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
CcToolchainProvider toolchain,
FdoContext fdoContext,
FeatureConfiguration featureConfiguration,
@@ -1114,7 +1114,7 @@
ImmutableSet<Linkstamp> linkstamps,
ActionConstructionContext actionConstructionContext,
RepositoryName repositoryName,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
Artifact outputBinary,
LinkArtifactFactory linkArtifactFactory) {
ImmutableMap.Builder<Linkstamp, Artifact> mapBuilder = ImmutableMap.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java
index 18e5761..a13b80d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -43,7 +43,7 @@
RuleErrorConsumer ruleErrorConsumer,
ActionConstructionContext actionConstructionContext,
@Nullable Artifact grepIncludes,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
Artifact sourceFile,
Artifact outputFile,
NestedSet<Artifact> compilationInputs,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
index aa8a3ba..19eb661 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
@@ -18,7 +18,7 @@
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.packages.AspectDescriptor;
import com.google.devtools.build.lib.packages.StructImpl;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
@@ -34,7 +34,7 @@
* minute.
*/
void finalizeCompileActionBuilder(
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
FeatureConfiguration featureConfiguration,
CppCompileActionBuilder actionBuilder,
RuleErrorConsumer ruleErrorConsumer);
@@ -54,7 +54,7 @@
boolean allowIncludeScanning();
/** Returns true iff this build should perform .d input pruning. */
- boolean needsDotdInputPruning(BuildConfiguration configuration);
+ boolean needsDotdInputPruning(BuildConfigurationValue configuration);
void validateAttributes(RuleContext ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java
index 72067af..1330f91 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
@@ -40,7 +40,7 @@
public static FdoContext getFdoContext(
RuleContext ruleContext,
CcToolchainAttributesProvider attributes,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
CppConfiguration cppConfiguration,
ImmutableMap<String, PathFragment> toolPaths)
throws InterruptedException, RuleErrorException {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
index e1620c4..6acc1e6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java
@@ -31,7 +31,7 @@
import com.google.devtools.build.lib.actions.ResourceSetOrBuilder;
import com.google.devtools.build.lib.actions.RunfilesSupplier;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -265,7 +265,7 @@
CommandLineLimits commandLineLimits,
boolean isShellCommand,
ActionEnvironment env,
- @Nullable BuildConfiguration configuration,
+ @Nullable BuildConfigurationValue configuration,
ImmutableMap<String, String> executionInfo,
CharSequence progressMessage,
RunfilesSupplier runfilesSupplier,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java
index 245bac5..10b4fa4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java
@@ -24,7 +24,7 @@
import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
@@ -91,7 +91,7 @@
BitcodeFiles allBitcodeFiles,
ActionConstructionContext actionConstructionContext,
RepositoryName repositoryName,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
LinkArtifactFactory linkArtifactFactory,
FeatureConfiguration featureConfiguration,
CcToolchainProvider ccToolchain,
@@ -146,7 +146,7 @@
Artifact bitcodeFile,
ActionConstructionContext actionConstructionContext,
RepositoryName repositoryName,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
LinkArtifactFactory linkArtifactFactory,
FeatureConfiguration featureConfiguration,
CcToolchainProvider ccToolchain,
@@ -222,7 +222,7 @@
FdoContext fdoContext,
boolean usePic,
boolean generateDwo,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
LinkArtifactFactory linkArtifactFactory,
List<String> userCompileFlags,
@Nullable BitcodeFiles bitcodeFiles)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ObjcCppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ObjcCppSemantics.java
index e15df2c..a002ac5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ObjcCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ObjcCppSemantics.java
@@ -19,7 +19,7 @@
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.RuleErrorConsumer;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.packages.AspectDescriptor;
import com.google.devtools.build.lib.packages.StructImpl;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
@@ -35,7 +35,7 @@
@Override
public void finalizeCompileActionBuilder(
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
FeatureConfiguration featureConfiguration,
CppCompileActionBuilder actionBuilder,
RuleErrorConsumer ruleErrorConsumer) {
@@ -96,7 +96,7 @@
}
@Override
- public boolean needsDotdInputPruning(BuildConfiguration configuration) {
+ public boolean needsDotdInputPruning(BuildConfigurationValue configuration) {
return configuration.getFragment(CppConfiguration.class).objcShouldGenerateDotdFiles();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
index bfd2ce2..c5371ae 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
@@ -28,7 +28,7 @@
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
@@ -53,7 +53,7 @@
public ConfiguredTarget create(RuleContext ruleContext)
throws InterruptedException, RuleErrorException, ActionConflictException {
String outputGroupName = ruleContext.attributes().get("output_group", Type.STRING);
- BuildConfiguration configuration = checkNotNull(ruleContext.getConfiguration());
+ BuildConfigurationValue configuration = checkNotNull(ruleContext.getConfiguration());
if (outputGroupName.endsWith(INTERNAL_SUFFIX)) {
ruleContext.throwWithAttributeError(
"output_group", String.format(ILLEGAL_OUTPUT_GROUP_ERROR, outputGroupName));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
index 0098c67..b0b8c5b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -71,7 +71,7 @@
@Override
public final BuildInfoCollection create(
BuildInfoContext context,
- BuildConfiguration config,
+ BuildConfigurationValue config,
Artifact stableStatus,
Artifact volatileStatus) {
WriteBuildInfoPropertiesAction redactedInfo =
@@ -130,7 +130,7 @@
private WriteBuildInfoPropertiesAction getHeader(
BuildInfoContext context,
- BuildConfiguration config,
+ BuildConfigurationValue config,
PathFragment propertyFileName,
NestedSet<Artifact> inputs,
BuildInfoPropertiesTranslator translator,
@@ -154,7 +154,7 @@
}
@Override
- public boolean isEnabled(BuildConfiguration config) {
+ public boolean isEnabled(BuildConfigurationValue config) {
return config.hasFragment(JavaConfiguration.class);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
index f0e1407..86f0388 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java
@@ -30,7 +30,7 @@
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.LazyWritePathsFileAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.CoreOptionConverters.StrictDepsMode;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.cmdline.Label;
@@ -139,7 +139,7 @@
return ruleContext.getAnalysisEnvironment();
}
- private BuildConfiguration getConfiguration() {
+ private BuildConfigurationValue getConfiguration() {
return ruleContext.getConfiguration();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
index 84fffad..9b2fb11 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java
@@ -57,7 +57,7 @@
import com.google.devtools.build.lib.actions.SpawnResult;
import com.google.devtools.build.lib.actions.extra.ExtraActionInfo;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.starlark.Args;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -126,7 +126,7 @@
private final ImmutableMap<String, String> executionInfo;
private final CommandLine executableLine;
private final CommandLine flagLine;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private final OnDemandString progressMessage;
private final NestedSet<Artifact> directJars;
@@ -153,7 +153,7 @@
ExtraActionInfoSupplier extraActionInfoSupplier,
CommandLine executableLine,
CommandLine flagLine,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
NestedSet<Artifact> dependencyArtifacts,
Artifact outputDepsProto,
JavaClasspathMode classpathMode) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
index 58301d0..86c3228 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java
@@ -27,7 +27,7 @@
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.TemplateVariableInfo;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -38,14 +38,14 @@
/** Implementation for the {@code java_runtime} rule. */
public class JavaRuntime implements RuleConfiguredTargetFactory {
// TODO(lberki): This is incorrect but that what the Jvm configuration fragment did. We'd have the
- // the ability to do better if we knew what OS the BuildConfiguration refers to.
+ // the ability to do better if we knew what OS the BuildConfigurationValue refers to.
private static final String BIN_JAVA = "bin/java" + OsUtils.executableExtension();
@Override
public ConfiguredTarget create(RuleContext ruleContext)
throws InterruptedException, RuleErrorException, ActionConflictException {
NestedSetBuilder<Artifact> filesBuilder = NestedSetBuilder.stableOrder();
- BuildConfiguration configuration = checkNotNull(ruleContext.getConfiguration());
+ BuildConfigurationValue configuration = checkNotNull(ruleContext.getConfiguration());
filesBuilder.addTransitive(PrerequisiteArtifacts.nestedSet(ruleContext, "srcs"));
boolean siblingRepositoryLayout = configuration.isSiblingRepositoryLayout();
PathFragment javaHome = defaultJavaHome(ruleContext.getLabel(), siblingRepositoryLayout);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
index d9647eb..4edb1a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java
@@ -29,7 +29,7 @@
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
@@ -83,7 +83,7 @@
public Artifact create(
ActionConstructionContext actionConstructionContext,
RepositoryName repositoryName,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
PathFragment rootRelativePath) {
return actionConstructionContext.getShareableArtifact(
rootRelativePath, configuration.getBinDirectory(repositoryName));
@@ -119,7 +119,7 @@
public static Artifact linkAndroidNativeDepsIfPresent(
final RuleContext ruleContext,
CcInfo ccInfo,
- final BuildConfiguration configuration,
+ final BuildConfigurationValue configuration,
CcToolchainProvider toolchain,
CppSemantics cppSemantics)
throws InterruptedException, RuleErrorException {
@@ -183,7 +183,7 @@
final RuleContext ruleContext,
CcInfo ccInfo,
Collection<String> extraLinkOpts,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
CcToolchainProvider toolchain,
Artifact nativeDeps,
ArtifactRoot bindirIfShared,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
index 8598d83..1575b32 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
@@ -33,7 +33,7 @@
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -198,7 +198,7 @@
ImmutableListMultimap<String, TransitiveInfoCollection> cpuToDepsCollectionMap =
MultiArchBinarySupport.transformMap(ruleContext.getPrerequisitesByConfiguration("deps"));
- ImmutableMap<BuildConfiguration, CcToolchainProvider> childConfigurationsAndToolchains =
+ ImmutableMap<BuildConfigurationValue, CcToolchainProvider> childConfigurationsAndToolchains =
MultiArchBinarySupport.getChildConfigurationsAndToolchains(ruleContext);
MultiArchBinarySupport multiArchBinarySupport =
new MultiArchBinarySupport(ruleContext, cppSemantics);
@@ -220,10 +220,10 @@
allLinkInputs.addAll(extraLinkInputs);
allLinkopts.addAll(extraLinkopts);
- ImmutableListMultimap<BuildConfiguration, CcInfo> buildConfigToCcInfoMap =
+ ImmutableListMultimap<BuildConfigurationValue, CcInfo> buildConfigToCcInfoMap =
ruleContext.getPrerequisitesByConfiguration("deps", CcInfo.PROVIDER);
NestedSetBuilder<Artifact> headerTokens = NestedSetBuilder.stableOrder();
- for (Map.Entry<BuildConfiguration, CcInfo> entry : buildConfigToCcInfoMap.entries()) {
+ for (Map.Entry<BuildConfigurationValue, CcInfo> entry : buildConfigToCcInfoMap.entries()) {
CcInfo dep = entry.getValue();
headerTokens.addTransitive(dep.getCcCompilationContext().getHeaderTokens());
}
@@ -244,7 +244,7 @@
for (DependencySpecificConfiguration dependencySpecificConfiguration :
dependencySpecificConfigurations) {
- BuildConfiguration childConfig = dependencySpecificConfiguration.config();
+ BuildConfigurationValue childConfig = dependencySpecificConfiguration.config();
String configCpu = childConfig.getCpu();
AppleConfiguration childAppleConfig = childConfig.getFragment(AppleConfiguration.class);
CppConfiguration childCppConfig = childConfig.getFragment(CppConfiguration.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStarlarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStarlarkCommon.java
index 5ba06e9..701286b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStarlarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStarlarkCommon.java
@@ -22,7 +22,7 @@
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.transitions.StarlarkExposedRuleTransitionFactory;
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleContext;
@@ -357,7 +357,7 @@
return StarlarkInfo.create(linkingOutputsConstructor, fields.build(), Location.BUILTIN);
}
- private static boolean isStampingEnabled(int stamp, BuildConfiguration config)
+ private static boolean isStampingEnabled(int stamp, BuildConfigurationValue config)
throws EvalException {
if (stamp == 0) {
return false;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
index dcd1d09..2cb24fd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
@@ -25,7 +25,7 @@
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
@@ -81,7 +81,7 @@
MultiArchBinarySupport.transformMap(
ruleContext.getPrerequisitesByConfiguration(AVOID_DEPS_ATTR_NAME, CcInfo.PROVIDER));
- Map<BuildConfiguration, CcToolchainProvider> childConfigurationsAndToolchains =
+ Map<BuildConfigurationValue, CcToolchainProvider> childConfigurationsAndToolchains =
MultiArchBinarySupport.getChildConfigurationsAndToolchains(ruleContext);
IntermediateArtifacts ruleIntermediateArtifacts =
ObjcRuleClasses.intermediateArtifacts(ruleContext);
@@ -96,9 +96,9 @@
new ObjcProvider.Builder(ruleContext.getAnalysisEnvironment().getStarlarkSemantics());
Map<String, NestedSet<Artifact>> outputGroupCollector = new TreeMap<>();
- for (Map.Entry<BuildConfiguration, CcToolchainProvider> entry :
+ for (Map.Entry<BuildConfigurationValue, CcToolchainProvider> entry :
childConfigurationsAndToolchains.entrySet()) {
- BuildConfiguration childToolchainConfig = entry.getKey();
+ BuildConfigurationValue childToolchainConfig = entry.getKey();
String childCpu = entry.getKey().getCpu();
CcToolchainProvider childToolchain = entry.getValue();
@@ -134,10 +134,10 @@
addTransitivePropagatedKeys(objcProviderBuilder, objcProvider);
}
- ImmutableListMultimap<BuildConfiguration, CcInfo> buildConfigToCcInfoMap =
+ ImmutableListMultimap<BuildConfigurationValue, CcInfo> buildConfigToCcInfoMap =
ruleContext.getPrerequisitesByConfiguration("deps", CcInfo.PROVIDER);
NestedSetBuilder<Artifact> headerTokens = NestedSetBuilder.stableOrder();
- for (Map.Entry<BuildConfiguration, CcInfo> entry : buildConfigToCcInfoMap.entries()) {
+ for (Map.Entry<BuildConfigurationValue, CcInfo> entry : buildConfigToCcInfoMap.entries()) {
CcInfo dep = entry.getValue();
headerTokens.addTransitive(dep.getCcCompilationContext().getHeaderTokens());
}
@@ -184,7 +184,7 @@
private ObjcCommon common(
RuleContext ruleContext,
- BuildConfiguration buildConfiguration,
+ BuildConfigurationValue buildConfiguration,
IntermediateArtifacts intermediateArtifacts,
List<TransitiveInfoCollection> propagatedDeps)
throws InterruptedException {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index 49d8f0b..007c35c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -55,7 +55,7 @@
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.LocalMetadataCollector;
@@ -179,7 +179,7 @@
private FeatureConfiguration getFeatureConfiguration(
RuleContext ruleContext,
CcToolchainProvider ccToolchain,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
CppSemantics cppSemantics) {
ImmutableSet.Builder<String> activatedCrosstoolSelectables =
ImmutableSet.<String>builder()
@@ -287,7 +287,7 @@
}
private final RuleContext ruleContext;
- private final BuildConfiguration buildConfiguration;
+ private final BuildConfigurationValue buildConfiguration;
private final ObjcConfiguration objcConfiguration;
private final AppleConfiguration appleConfiguration;
private final CppSemantics cppSemantics;
@@ -319,7 +319,7 @@
*/
private CompilationSupport(
RuleContext ruleContext,
- BuildConfiguration buildConfiguration,
+ BuildConfigurationValue buildConfiguration,
CppSemantics cppSemantics,
IntermediateArtifacts intermediateArtifacts,
CompilationAttributes compilationAttributes,
@@ -356,7 +356,7 @@
public static class Builder {
private final RuleContext ruleContext;
private final CppSemantics cppSemantics;
- private BuildConfiguration buildConfiguration;
+ private BuildConfigurationValue buildConfiguration;
private IntermediateArtifacts intermediateArtifacts;
private CompilationAttributes compilationAttributes;
private CcToolchainProvider toolchain;
@@ -368,8 +368,8 @@
this.cppSemantics = cppSemantics;
}
- /** Sets the {@link BuildConfiguration} for the calling target. */
- public Builder setConfig(BuildConfiguration buildConfiguration) {
+ /** Sets the {@link BuildConfigurationValue} for the calling target. */
+ public Builder setConfig(BuildConfigurationValue buildConfiguration) {
this.buildConfiguration = buildConfiguration;
return this;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
index 017f1e5..01cea42 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java
@@ -19,7 +19,7 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Type;
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
@@ -36,7 +36,7 @@
static final String LINKMAP_SUFFIX = ".linkmap";
private final RuleContext ruleContext;
- private final BuildConfiguration buildConfiguration;
+ private final BuildConfigurationValue buildConfiguration;
private final String archiveFileNameSuffix;
private final String outputPrefix;
private final UmbrellaHeaderStrategy umbrellaHeaderStrategy;
@@ -76,7 +76,7 @@
RuleContext ruleContext,
String archiveFileNameSuffix,
String outputPrefix,
- BuildConfiguration buildConfiguration) {
+ BuildConfigurationValue buildConfiguration) {
this(
ruleContext,
archiveFileNameSuffix,
@@ -89,7 +89,7 @@
RuleContext ruleContext,
String archiveFileNameSuffix,
String outputPrefix,
- BuildConfiguration buildConfiguration,
+ BuildConfigurationValue buildConfiguration,
UmbrellaHeaderStrategy umbrellaHeaderStrategy) {
this.ruleContext = ruleContext;
this.buildConfiguration = buildConfiguration;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
index 6215191..e520ea1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
@@ -27,7 +27,7 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.BuiltinProvider;
import com.google.devtools.build.lib.packages.Info;
@@ -49,14 +49,15 @@
* Returns all child configurations for this multi-arch target, mapped to the toolchains that they
* should use.
*/
- static ImmutableMap<BuildConfiguration, CcToolchainProvider> getChildConfigurationsAndToolchains(
- RuleContext ruleContext) {
- ImmutableListMultimap<BuildConfiguration, CcToolchainProvider> configToProvider =
+ static ImmutableMap<BuildConfigurationValue, CcToolchainProvider>
+ getChildConfigurationsAndToolchains(RuleContext ruleContext) {
+ ImmutableListMultimap<BuildConfigurationValue, CcToolchainProvider> configToProvider =
ruleContext.getPrerequisitesByConfiguration(
ObjcRuleClasses.CHILD_CONFIG_ATTR, CcToolchainProvider.PROVIDER);
- ImmutableMap.Builder<BuildConfiguration, CcToolchainProvider> result = ImmutableMap.builder();
- for (BuildConfiguration config : configToProvider.keySet()) {
+ ImmutableMap.Builder<BuildConfigurationValue, CcToolchainProvider> result =
+ ImmutableMap.builder();
+ for (BuildConfigurationValue config : configToProvider.keySet()) {
CcToolchainProvider toolchain = Iterables.getOnlyElement(configToProvider.get(config));
result.put(config, toolchain);
}
@@ -64,9 +65,10 @@
return result.build();
}
- static <V> ImmutableListMultimap<String, V> transformMap(Multimap<BuildConfiguration, V> input) {
+ static <V> ImmutableListMultimap<String, V> transformMap(
+ Multimap<BuildConfigurationValue, V> input) {
ImmutableListMultimap.Builder<String, V> result = ImmutableListMultimap.builder();
- for (Map.Entry<BuildConfiguration, V> entry : input.entries()) {
+ for (Map.Entry<BuildConfigurationValue, V> entry : input.entries()) {
result.put(entry.getKey().getCpu(), entry.getValue());
}
@@ -77,7 +79,7 @@
@AutoValue
abstract static class DependencySpecificConfiguration {
static DependencySpecificConfiguration create(
- BuildConfiguration config,
+ BuildConfigurationValue config,
CcToolchainProvider toolchain,
ObjcProvider objcLinkProvider,
ObjcProvider objcPropagateProvider) {
@@ -86,7 +88,7 @@
}
/** Returns the child configuration for this tuple. */
- abstract BuildConfiguration config();
+ abstract BuildConfigurationValue config();
/** Returns the cc toolchain for this configuration. */
abstract CcToolchainProvider toolchain();
@@ -189,14 +191,14 @@
* @throws RuleErrorException if there are attribute errors in the current rule context
*/
public ImmutableSet<DependencySpecificConfiguration> getDependencySpecificConfigurations(
- Map<BuildConfiguration, CcToolchainProvider> childConfigurationsAndToolchains,
+ Map<BuildConfigurationValue, CcToolchainProvider> childConfigurationsAndToolchains,
ImmutableListMultimap<String, TransitiveInfoCollection> cpuToDepsCollectionMap,
ImmutableList<TransitiveInfoCollection> dylibProviders)
throws RuleErrorException, InterruptedException {
Iterable<ObjcProvider> dylibObjcProviders = getDylibObjcProviders(dylibProviders);
ImmutableSet.Builder<DependencySpecificConfiguration> childInfoBuilder = ImmutableSet.builder();
- for (BuildConfiguration childToolchainConfig : childConfigurationsAndToolchains.keySet()) {
+ for (BuildConfigurationValue childToolchainConfig : childConfigurationsAndToolchains.keySet()) {
String childCpu = childToolchainConfig.getCpu();
IntermediateArtifacts intermediateArtifacts =
@@ -247,7 +249,7 @@
private ObjcCommon common(
RuleContext ruleContext,
- BuildConfiguration buildConfiguration,
+ BuildConfigurationValue buildConfiguration,
IntermediateArtifacts intermediateArtifacts,
List<? extends TransitiveInfoCollection> propagatedDeps,
Iterable<ObjcProvider> additionalDepProviders)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index a1a4214..ac3c044 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -41,7 +41,7 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.BuiltinProvider;
@@ -98,7 +98,7 @@
private final Purpose purpose;
private final RuleContext context;
private final StarlarkSemantics semantics;
- private final BuildConfiguration buildConfiguration;
+ private final BuildConfigurationValue buildConfiguration;
private Optional<CompilationAttributes> compilationAttributes = Optional.absent();
private Optional<CompilationArtifacts> compilationArtifacts = Optional.absent();
private Iterable<ObjcProvider> objcProviders = ImmutableList.of();
@@ -129,7 +129,7 @@
* configuration data from the given configuration object for use in situations where a single
* target's outputs are under multiple configurations.
*/
- Builder(Purpose purpose, RuleContext context, BuildConfiguration buildConfiguration)
+ Builder(Purpose purpose, RuleContext context, BuildConfigurationValue buildConfiguration)
throws InterruptedException {
this.purpose = purpose;
this.context = Preconditions.checkNotNull(context);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index d7f370b..9bb5c82 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -35,7 +35,7 @@
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
@@ -67,12 +67,12 @@
}
/**
- * Creates and returns an {@link IntermediateArtifacts} object, using the given rule context
- * for fetching current-rule attributes, and using the given build configuration to determine
- * the appropriate output directory in which to root artifacts.
+ * Creates and returns an {@link IntermediateArtifacts} object, using the given rule context for
+ * fetching current-rule attributes, and using the given build configuration to determine the
+ * appropriate output directory in which to root artifacts.
*/
- public static IntermediateArtifacts intermediateArtifacts(RuleContext ruleContext,
- BuildConfiguration buildConfiguration) {
+ public static IntermediateArtifacts intermediateArtifacts(
+ RuleContext ruleContext, BuildConfigurationValue buildConfiguration) {
return new IntermediateArtifacts(ruleContext, /*archiveFileNameSuffix*/ "",
/*outputPrefix*/ "", buildConfiguration);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java
index e4007ce..e1b02dd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java
@@ -24,7 +24,7 @@
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables;
import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables.VariablesExtension;
@@ -68,7 +68,7 @@
private final ObjcProvider objcProvider;
private final Artifact fullyLinkArchive;
private final IntermediateArtifacts intermediateArtifacts;
- private final BuildConfiguration buildConfiguration;
+ private final BuildConfigurationValue buildConfiguration;
private final ImmutableList<String> frameworkSearchPaths;
private final Set<String> frameworkNames;
private final ImmutableList<String> libraryNames;
@@ -85,7 +85,7 @@
ObjcProvider objcProvider,
Artifact fullyLinkArchive,
IntermediateArtifacts intermediateArtifacts,
- BuildConfiguration buildConfiguration,
+ BuildConfigurationValue buildConfiguration,
ImmutableList<String> frameworkSearchPaths,
Set<String> frameworkNames,
ImmutableList<String> libraryNames,
@@ -246,7 +246,7 @@
private ObjcProvider objcProvider;
private Artifact fullyLinkArchive;
private IntermediateArtifacts intermediateArtifacts;
- private BuildConfiguration buildConfiguration;
+ private BuildConfigurationValue buildConfiguration;
private ImmutableList<String> frameworkSearchPaths;
private Set<String> frameworkNames;
private ImmutableSet<Artifact> forceLoadArtifacts;
@@ -285,7 +285,7 @@
}
/** Sets the configuration for this extension. */
- public Builder setConfiguration(BuildConfiguration buildConfiguration) {
+ public Builder setConfiguration(BuildConfigurationValue buildConfiguration) {
this.buildConfiguration = Preconditions.checkNotNull(buildConfiguration);
return this;
}
@@ -356,7 +356,7 @@
activeVariableCategoriesBuilder.build();
Preconditions.checkNotNull(ruleContext, "missing RuleContext");
- Preconditions.checkNotNull(buildConfiguration, "missing BuildConfiguration");
+ Preconditions.checkNotNull(buildConfiguration, "missing BuildConfigurationValue");
Preconditions.checkNotNull(intermediateArtifacts, "missing IntermediateArtifacts");
if (activeVariableCategories.contains(VariableCategory.FULLY_LINK_VARIABLES)) {
Preconditions.checkNotNull(objcProvider, "missing ObjcProvider");
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java
index 0a848f7..82b5723 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java
@@ -18,7 +18,7 @@
import com.google.common.base.Ascii;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.BuildOptionsView;
import com.google.devtools.build.lib.analysis.config.SymlinkDefinition;
@@ -124,8 +124,8 @@
@Override
public ImmutableSet<Path> getLinkPaths(
BuildRequestOptions buildRequestOptions,
- Set<BuildConfiguration> targetConfigs,
- Function<BuildOptions, BuildConfiguration> configGetter,
+ Set<BuildConfigurationValue> targetConfigs,
+ Function<BuildOptions, BuildConfigurationValue> configGetter,
RepositoryName repositoryName,
Path outputPath,
Path execRoot) {
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java
index 5866e1d..ff719ca 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java
@@ -17,7 +17,7 @@
import com.google.common.base.Supplier;
import com.google.common.flogger.GoogleLogger;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.util.AbruptExitException;
import com.google.devtools.build.lib.util.io.OutErr;
@@ -112,7 +112,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env)
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env)
throws AbruptExitException {
checkNotNull(env);
return print(getCommandLogPath(env.getRuntime().getWorkspace().getOutputBase()));
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/InfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/InfoItem.java
index dddc2a0..1de9ea0 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/InfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/InfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.util.AbruptExitException;
import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
@@ -60,7 +60,7 @@
/** Returns the value of the info key. The return value is directly printed to stdout. */
public abstract byte[] get(
- Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env)
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env)
throws AbruptExitException, InterruptedException;
protected static byte[] print(Object value) {
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestResultAggregator.java b/src/main/java/com/google/devtools/build/lib/runtime/TestResultAggregator.java
index d8c4208..497479d 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/TestResultAggregator.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/TestResultAggregator.java
@@ -20,7 +20,7 @@
import com.google.devtools.build.lib.analysis.AliasProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.test.TestAttempt;
import com.google.devtools.build.lib.analysis.test.TestProvider;
import com.google.devtools.build.lib.analysis.test.TestProvider.TestParams;
@@ -60,7 +60,7 @@
TestResultAggregator(
ConfiguredTarget target,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
AggregationPolicy policy,
boolean skippedThisTest) {
this.policy = policy;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
index 000ffdf..6237955 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java
@@ -22,7 +22,7 @@
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.AliasProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.test.TestProvider;
import com.google.devtools.build.lib.analysis.test.TestProvider.TestParams;
import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType;
@@ -122,7 +122,7 @@
checkMutation();
}
- public Builder setConfiguration(BuildConfiguration configuration) {
+ public Builder setConfiguration(BuildConfigurationValue configuration) {
checkMutation(configuration);
summary.configuration = checkNotNull(configuration, summary);
return this;
@@ -365,7 +365,7 @@
// Currently only populated if --runs_per_test_detects_flakes is enabled.
private final ImmutableList<ArrayList<BlazeTestStatus>> shardRunStatuses;
- private BuildConfiguration configuration;
+ private BuildConfigurationValue configuration;
private BlazeTestStatus status;
private boolean skipped;
private final int[] shardAttempts;
@@ -416,7 +416,7 @@
return target;
}
- public BuildConfiguration getConfiguration() {
+ public BuildConfigurationValue getConfiguration() {
return configuration;
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD
index dd2f4c8..0eda387 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD
@@ -69,7 +69,7 @@
"//src/main/java/com/google/devtools/build/lib/runtime/commands/info",
"//src/main/java/com/google/devtools/build/lib/shell",
"//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator",
- "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration",
"//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key",
"//src/main/java/com/google/devtools/build/lib/skyframe:loading_phase_started_event",
"//src/main/java/com/google/devtools/build/lib/skyframe:package_progress_receiver",
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java
index 38f7361..d95a856 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java
@@ -32,7 +32,7 @@
import com.google.common.collect.Ordering;
import com.google.common.collect.Sets;
import com.google.common.collect.Table;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.analysis.config.Fragment;
import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
@@ -51,7 +51,7 @@
import com.google.devtools.build.lib.server.FailureDetails;
import com.google.devtools.build.lib.server.FailureDetails.ConfigCommand.Code;
import com.google.devtools.build.lib.server.FailureDetails.FailureDetail;
-import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.SkyFunctions;
import com.google.devtools.build.lib.util.Pair;
import com.google.devtools.build.skyframe.InMemoryMemoizingEvaluator;
@@ -119,7 +119,8 @@
}
/**
- * Data structure defining a {@link BuildConfiguration} for the purpose of this command's output.
+ * Data structure defining a {@link BuildConfigurationValue} for the purpose of this command's
+ * output.
*
* <p>Includes all data representing a "configuration" and defines their relative structure and
* list order.
@@ -258,8 +259,8 @@
}
/**
- * Data structure defining the difference between two {@link BuildConfiguration}s from the point
- * of this command's output.
+ * Data structure defining the difference between two {@link BuildConfigurationValue}s from the
+ * point of this command's output.
*
* <p>See {@link ConfigurationForOutput} for further details.
*/
@@ -293,7 +294,7 @@
}
/**
- * Data structure defining the difference between two {@link BuildConfiguration}s for a given
+ * Data structure defining the difference between two {@link BuildConfigurationValue}s for a given
* {@link FragmentOptions}from the point of this command's output.
*
* <p>See {@link ConfigurationForOutput} for further details.
@@ -330,7 +331,7 @@
*/
@Override
public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) {
- ImmutableSortedMap<BuildConfigurationValue.Key, BuildConfiguration> configurations =
+ ImmutableSortedMap<BuildConfigurationKey, BuildConfigurationValue> configurations =
findConfigurations(env);
try (PrintWriter writer =
@@ -375,10 +376,10 @@
}
/**
- * Returns all {@link BuildConfiguration}s in Skyframe as a map from their {@link
- * BuildConfigurationValue.Key} to instance.
+ * Returns all {@link BuildConfigurationValue}s in Skyframe as a map from their {@link
+ * BuildConfigurationKey} to instance.
*/
- private static ImmutableSortedMap<BuildConfigurationValue.Key, BuildConfiguration>
+ private static ImmutableSortedMap<BuildConfigurationKey, BuildConfigurationValue>
findConfigurations(CommandEnvironment env) {
InMemoryMemoizingEvaluator evaluator =
(InMemoryMemoizingEvaluator)
@@ -387,9 +388,9 @@
.filter(e -> SkyFunctions.BUILD_CONFIGURATION.equals(e.getKey().functionName()))
.collect(
toImmutableSortedMap(
- comparing(BuildConfigurationValue.Key::toComparableString),
- e -> (BuildConfigurationValue.Key) e.getKey(),
- e -> ((BuildConfigurationValue) e.getValue()).getConfiguration()));
+ comparing(BuildConfigurationKey::toComparableString),
+ e -> (BuildConfigurationKey) e.getKey(),
+ e -> (BuildConfigurationValue) e.getValue()));
}
/**
@@ -397,8 +398,8 @@
* runtime.
*
* <p>These are the fragments that Blaze "knows about", not necessarily the fragments in a {@link
- * BuildConfiguration}. Trimming, in particular, strips fragments out of actual configurations.
- * It's safe to assume untrimmed configuration have all fragments listed here.
+ * BuildConfigurationValue}. Trimming, in particular, strips fragments out of actual
+ * configurations. It's safe to assume untrimmed configuration have all fragments listed here.
*/
private static ImmutableSortedMap<
Class<? extends Fragment>, ImmutableSortedSet<Class<? extends FragmentOptions>>>
@@ -418,16 +419,15 @@
* instances.
*/
private static ImmutableSortedSet<ConfigurationForOutput> forOutput(
- ImmutableSortedMap<BuildConfigurationValue.Key, BuildConfiguration> asSkyKeyMap,
+ ImmutableSortedMap<BuildConfigurationKey, BuildConfigurationValue> asSkyKeyMap,
ImmutableSortedMap<
Class<? extends Fragment>, ImmutableSortedSet<Class<? extends FragmentOptions>>>
fragmentDefs) {
ImmutableSortedSet.Builder<ConfigurationForOutput> ans =
ImmutableSortedSet.orderedBy(comparing(e -> e.configHash));
- for (Map.Entry<BuildConfigurationValue.Key, BuildConfiguration> entry :
- asSkyKeyMap.entrySet()) {
- BuildConfigurationValue.Key key = entry.getKey();
- BuildConfiguration config = entry.getValue();
+ for (Map.Entry<BuildConfigurationKey, BuildConfigurationValue> entry : asSkyKeyMap.entrySet()) {
+ BuildConfigurationKey key = entry.getKey();
+ BuildConfigurationValue config = entry.getValue();
ans.add(getConfigurationForOutput(key, config.checksum(), config, fragmentDefs));
}
return ans.build();
@@ -435,9 +435,9 @@
/** Constructs a {@link ConfigurationForOutput} from the given input daata. */
private static ConfigurationForOutput getConfigurationForOutput(
- BuildConfigurationValue.Key skyKey,
+ BuildConfigurationKey skyKey,
String configHash,
- BuildConfiguration config,
+ BuildConfigurationValue config,
ImmutableSortedMap<
Class<? extends Fragment>, ImmutableSortedSet<Class<? extends FragmentOptions>>>
fragmentDefs) {
@@ -547,7 +547,7 @@
* output from interpreting them more deeply than we want for simple "name=value" output.
*/
private static ImmutableSortedMap<String, String> getOrderedUserDefinedOptions(
- BuildConfiguration config) {
+ BuildConfigurationValue config) {
ImmutableSortedMap.Builder<String, String> ans = ImmutableSortedMap.naturalOrder();
// Starlark-defined options:
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandOutputFormatter.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandOutputFormatter.java
index 66cde87..69c635f 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandOutputFormatter.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandOutputFormatter.java
@@ -73,7 +73,7 @@
@Override
public void writeConfiguration(ConfigurationForOutput configuration) {
- writer.println("BuildConfiguration " + configuration.configHash + ":");
+ writer.println("BuildConfigurationValue " + configuration.configHash + ":");
writer.println("Skyframe Key: " + configuration.skyKey);
StringBuilder fragments = new StringBuilder();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java
index f6fe391..4694d92 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java
@@ -71,8 +71,8 @@
* set of inputs of test actions if coverage mode is enabled (otherwise the set of metadata files is
* empty).
*
- * <p>Whether or not coverage is being collected is stored in the {@code BuildConfiguration}. This
- * is handy because then we have an easy way to change the test action and the action graph
+ * <p>Whether or not coverage is being collected is stored in the {@code BuildConfigurationValue}.
+ * This is handy because then we have an easy way to change the test action and the action graph
* depending on this bit, but it also means that if this bit is flipped, all targets need to be
* re-analyzed (note that some languages, e.g. C++ require different compiler options to emit code
* that can collect coverage, which dominates the time required for analysis).
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
index 281933e..ea56a7f 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java
@@ -19,7 +19,7 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.NoBuildEvent;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.profiler.Profiler;
@@ -37,7 +37,7 @@
import com.google.devtools.build.lib.runtime.commands.info.BuildLanguageInfoItem;
import com.google.devtools.build.lib.runtime.commands.info.CharacterEncodingInfoItem;
import com.google.devtools.build.lib.runtime.commands.info.ClientEnv;
-import com.google.devtools.build.lib.runtime.commands.info.CommitedHeapSizeInfoItem;
+import com.google.devtools.build.lib.runtime.commands.info.CommittedHeapSizeInfoItem;
import com.google.devtools.build.lib.runtime.commands.info.DefaultPackagePathInfoItem;
import com.google.devtools.build.lib.runtime.commands.info.DefaultsPackageInfoItem;
import com.google.devtools.build.lib.runtime.commands.info.ExecutionRootInfoItem;
@@ -148,13 +148,15 @@
env.getReporter().switchToAnsiAllowingHandler();
Options infoOptions = optionsParsingResult.getOptions(Options.class);
OutErr outErr = env.getReporter().getOutErr();
- // Creating a BuildConfiguration is expensive and often unnecessary. Delay the creation until
+ // Creating a BuildConfigurationValue is expensive and often unnecessary. Delay the creation
+ // until
// it is needed. We memoize so that it's cached intra-command (it's still created freshly on
// every command since the configuration can change across commands).
- Supplier<BuildConfiguration> configurationSupplier =
+ Supplier<BuildConfigurationValue> configurationSupplier =
Suppliers.memoize(
() -> {
- try (SilentCloseable c = Profiler.instance().profile("Creating BuildConfiguration")) {
+ try (SilentCloseable c =
+ Profiler.instance().profile("Creating BuildConfigurationValue")) {
// In order to be able to answer configuration-specific queries, we need to set up
// the package path. Since info inherits all the build options, all the necessary
// information is available here.
@@ -291,7 +293,7 @@
new PackagePathInfoItem(commandOptions),
new UsedHeapSizeInfoItem(),
new UsedHeapSizeAfterGcInfoItem(),
- new CommitedHeapSizeInfoItem(),
+ new CommittedHeapSizeInfoItem(),
new MaxHeapSizeInfoItem(),
new GcTimeInfoItem(),
new GcCountInfoItem(),
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
index ef5d1bb..a38cb9c 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java
@@ -33,7 +33,7 @@
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.RunfilesSupport;
import com.google.devtools.build.lib.analysis.ShToolchain;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.analysis.config.RunUnder;
import com.google.devtools.build.lib.analysis.test.TestConfiguration;
@@ -194,7 +194,7 @@
List<String> cmdLine,
List<String> prettyCmdLine,
CommandEnvironment env,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
ConfiguredTarget targetToRun,
ConfiguredTarget runUnderTarget,
List<String> args)
@@ -353,7 +353,7 @@
return reportAndCreateFailureResult(env, NO_TARGET_MESSAGE, Code.NO_TARGET_SPECIFIED);
}
- BuildConfiguration configuration =
+ BuildConfigurationValue configuration =
env.getSkyframeExecutor()
.getConfiguration(env.getReporter(), targetToRun.getConfigurationKey());
if (configuration == null) {
@@ -606,7 +606,9 @@
* otherwise builds them.
*/
private static Path ensureRunfilesBuilt(
- CommandEnvironment env, RunfilesSupport runfilesSupport, BuildConfiguration configuration)
+ CommandEnvironment env,
+ RunfilesSupport runfilesSupport,
+ BuildConfigurationValue configuration)
throws RunfilesException, InterruptedException {
Artifact manifest = Preconditions.checkNotNull(runfilesSupport.getRunfilesManifest());
PathFragment runfilesDir = runfilesSupport.getRunfilesDirectoryExecPath();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeBinInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeBinInfoItem.java
index b5a7a3b..92ba7ce 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeBinInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeBinInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -32,7 +32,8 @@
// corresponding paths contain the short name. Maybe we should recommend using the symlinks
// or make them hidden by default?
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(configurationSupplier);
return print(configurationSupplier.get().getBinDirectory(RepositoryName.MAIN).getRoot());
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeGenfilesInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeGenfilesInfoItem.java
index b2c2f84..d317a61 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeGenfilesInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeGenfilesInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -33,7 +33,8 @@
// corresponding paths contain the short name. Maybe we should recommend using the symlinks
// or make them hidden by default?
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(configurationSupplier);
return print(configurationSupplier.get().getGenfilesDirectory(RepositoryName.MAIN).getRoot());
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeTestlogsInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeTestlogsInfoItem.java
index 863c4b1..012141d 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeTestlogsInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeTestlogsInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -35,7 +35,8 @@
// corresponding paths contain the short name. Maybe we should recommend using the symlinks
// or make them hidden by default?
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(configurationSupplier);
return print(configurationSupplier.get().getTestLogsDirectory(RepositoryName.MAIN).getRoot());
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BuildLanguageInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BuildLanguageInfoItem.java
index 8d3560e..4d5517f 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BuildLanguageInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BuildLanguageInfoItem.java
@@ -21,7 +21,7 @@
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.StarlarkComputedDefaultTemplate;
import com.google.devtools.build.lib.packages.BuildType;
@@ -55,7 +55,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(env);
return print(getBuildLanguageDefinition(env.getRuntime().getRuleClassProvider()));
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CharacterEncodingInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CharacterEncodingInfoItem.java
index 8d7f3b5..c6a6ba7 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CharacterEncodingInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CharacterEncodingInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import java.nio.charset.Charset;
@@ -30,7 +30,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(
String.format(
"file.encoding = %s, defaultCharset = %s",
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ClientEnv.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ClientEnv.java
index 2a0534d..65e07cd 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ClientEnv.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ClientEnv.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import java.util.Map;
@@ -31,7 +31,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
String result = "";
for (Map.Entry<String, String> entry : env.getAllowlistedActionEnv().entrySet()) {
// TODO(bazel-team): as the syntax of our rc-files does not support to express new-lines in
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommitedHeapSizeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommittedHeapSizeInfoItem.java
similarity index 84%
rename from src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommitedHeapSizeInfoItem.java
rename to src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommittedHeapSizeInfoItem.java
index 010a9a1..ac95a73 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommitedHeapSizeInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommittedHeapSizeInfoItem.java
@@ -15,14 +15,15 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import com.google.devtools.build.lib.util.StringUtilities;
/** Info item for the committed heap size. */
-public final class CommitedHeapSizeInfoItem extends InfoItem {
- public CommitedHeapSizeInfoItem() {
+public final class CommittedHeapSizeInfoItem extends InfoItem {
+
+ public CommittedHeapSizeInfoItem() {
super(
"committed-heap-size",
"The amount of memory in bytes that is committed for the Java virtual machine to use",
@@ -30,7 +31,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(StringUtilities.prettyPrintBytes(InfoItemUtils.getMemoryUsage().getCommitted()));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultPackagePathInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultPackagePathInfoItem.java
index 93d6c45..23b282e 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultPackagePathInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultPackagePathInfoItem.java
@@ -18,7 +18,7 @@
import com.google.common.base.Joiner;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.pkgcache.PackageOptions;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -41,7 +41,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(commandOptions);
return print(JOINER.join(commandOptions.getOptions(PackageOptions.class).packagePath));
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultsPackageInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultsPackageInfoItem.java
index 8b46854..b438bd8 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultsPackageInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultsPackageInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -34,7 +34,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(env);
return print("");
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ExecutionRootInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ExecutionRootInfoItem.java
index efd5481..2d34190 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ExecutionRootInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ExecutionRootInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -31,7 +31,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(env);
return print(
env.getDirectories().getExecRoot(configurationSupplier.get().getMainRepositoryName()));
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcCountInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcCountInfoItem.java
index 5e94fe4..866db3b 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcCountInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcCountInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import java.lang.management.GarbageCollectorMXBean;
@@ -28,7 +28,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
// The documentation is not very clear on what it means to have more than
// one GC MXBean, so we just sum them up.
long gcCount = 0;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcTimeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcTimeInfoItem.java
index 6f9ec10..55ffb28 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcTimeInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcTimeInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import java.lang.management.GarbageCollectorMXBean;
@@ -28,7 +28,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
// The documentation is not very clear on what it means to have more than
// one GC MXBean, so we just sum them up.
long gcTime = 0;
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/InstallBaseInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/InstallBaseInfoItem.java
index 302ec4f..3b11351 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/InstallBaseInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/InstallBaseInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -28,7 +28,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(env);
return print(env.getRuntime().getWorkspace().getInstallBase());
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaHomeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaHomeInfoItem.java
index e0c3d0d..7a147b7 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaHomeInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaHomeInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import com.google.devtools.build.lib.vfs.Path;
@@ -27,7 +27,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
String javaHome = System.getProperty("java.home");
if (javaHome == null) {
return print("unknown");
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaRuntimeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaRuntimeInfoItem.java
index 98419d1..cb4c728 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaRuntimeInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaRuntimeInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -26,7 +26,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(
String.format(
"%s (build %s) by %s",
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaVirtualMachineInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaVirtualMachineInfoItem.java
index bc22927..4a43737 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaVirtualMachineInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaVirtualMachineInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -26,7 +26,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(
String.format(
"%s (build %s, %s) by %s",
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MakeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MakeInfoItem.java
index 48bf4ed..dde7ced 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MakeInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MakeInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -31,7 +31,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(description);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MaxHeapSizeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MaxHeapSizeInfoItem.java
index 5ea468e..0dd8e4f 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MaxHeapSizeInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MaxHeapSizeInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import com.google.devtools.build.lib.util.StringUtilities;
@@ -30,7 +30,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(StringUtilities.prettyPrintBytes(InfoItemUtils.getMemoryUsage().getMax()));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputBaseInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputBaseInfoItem.java
index 584e9e7..8c946c1 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputBaseInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputBaseInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -33,7 +33,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(env);
return print(env.getRuntime().getWorkspace().getOutputBase());
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputPathInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputPathInfoItem.java
index 8135a3f..d3577ba 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputPathInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputPathInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -28,7 +28,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(env);
return print(
env.getDirectories().getOutputPath(configurationSupplier.get().getMainRepositoryName()));
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/PackagePathInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/PackagePathInfoItem.java
index 29a4e71..f2a49b1 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/PackagePathInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/PackagePathInfoItem.java
@@ -18,7 +18,7 @@
import com.google.common.base.Joiner;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.pkgcache.PackageOptions;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -34,7 +34,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(commandOptions);
PackageOptions packageOptions = commandOptions.getOptions(PackageOptions.class);
return print(Joiner.on(":").join(packageOptions.packagePath));
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ReleaseInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ReleaseInfoItem.java
index fc4f036..b182f92 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ReleaseInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ReleaseInfoItem.java
@@ -16,7 +16,7 @@
import com.google.common.base.Supplier;
import com.google.devtools.build.lib.analysis.BlazeVersionInfo;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -27,7 +27,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(BlazeVersionInfo.instance().getReleaseName());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerLogInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerLogInfoItem.java
index 0c98649..5e31d90 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerLogInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerLogInfoItem.java
@@ -16,7 +16,7 @@
import com.google.common.base.Supplier;
import com.google.common.flogger.GoogleLogger;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import com.google.devtools.build.lib.util.AbruptExitException;
@@ -37,7 +37,7 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env)
+ public byte[] get(Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env)
throws AbruptExitException {
try {
return print(DebugLoggerConfigurator.getServerLogPath().orElse(""));
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerPidInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerPidInfoItem.java
index ac8e904..aa4207e 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerPidInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerPidInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import com.google.devtools.build.lib.util.ProcessUtils;
@@ -27,7 +27,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(ProcessUtils.getpid());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/StarlarkSemanticsInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/StarlarkSemanticsInfoItem.java
index b0f39c9..65de0c6 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/StarlarkSemanticsInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/StarlarkSemanticsInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -40,7 +40,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
BuildLanguageOptions buildLanguageOptions =
commandOptions.getOptions(BuildLanguageOptions.class);
SkyframeExecutor skyframeExecutor = env.getBlazeWorkspace().getSkyframeExecutor();
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeAfterGcInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeAfterGcInfoItem.java
index 55ca121..84d8cbd 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeAfterGcInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeAfterGcInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import com.google.devtools.build.lib.util.StringUtilities;
@@ -30,7 +30,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
System.gc();
return print(StringUtilities.prettyPrintBytes(InfoItemUtils.getMemoryUsage().getUsed()));
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeInfoItem.java
index 33e7669..eabcf1c 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeInfoItem.java
@@ -15,7 +15,7 @@
package com.google.devtools.build.lib.runtime.commands.info;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
import com.google.devtools.build.lib.util.StringUtilities;
@@ -32,7 +32,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
return print(StringUtilities.prettyPrintBytes(InfoItemUtils.getMemoryUsage().getUsed()));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/WorkspaceInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/WorkspaceInfoItem.java
index 9a0ba84..2fcf566 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/WorkspaceInfoItem.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/WorkspaceInfoItem.java
@@ -17,7 +17,7 @@
import static com.google.common.base.Preconditions.checkNotNull;
import com.google.common.base.Supplier;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
import com.google.devtools.build.lib.runtime.InfoItem;
@@ -28,7 +28,8 @@
}
@Override
- public byte[] get(Supplier<BuildConfiguration> configurationSupplier, CommandEnvironment env) {
+ public byte[] get(
+ Supplier<BuildConfigurationValue> configurationSupplier, CommandEnvironment env) {
checkNotNull(env);
return print(env.getRuntime().getWorkspace().getWorkspace());
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
index 0f25857..21e90c0 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
@@ -20,7 +20,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.configuredtargets.AbstractConfiguredTarget;
import com.google.devtools.build.lib.analysis.test.TestConfiguration.TestOptions;
import com.google.devtools.build.lib.buildtool.BuildRequest;
@@ -272,7 +272,7 @@
List<String> cmdLine = new ArrayList<>();
// TODO(bazel-team): Get the executable path from the filesToRun provider from the aspect.
- BuildConfiguration configuration =
+ BuildConfigurationValue configuration =
env.getSkyframeExecutor()
.getConfiguration(env.getReporter(), targetToRun.getConfigurationKey());
cmdLine.add(
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletor.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletor.java
index e189f45..4f13033 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletor.java
@@ -20,6 +20,7 @@
import com.google.devtools.build.lib.analysis.AspectValue;
import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsInOutputGroup;
import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsToBuild;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.bugreport.BugReporter;
import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId;
@@ -92,8 +93,8 @@
}
@Nullable
- private BuildEventId getConfigurationEventIdFromAspectKey(AspectKey aspectKey, Environment env)
- throws InterruptedException {
+ private static BuildEventId getConfigurationEventIdFromAspectKey(
+ AspectKey aspectKey, Environment env) throws InterruptedException {
if (aspectKey.getBaseConfiguredTargetKey().getConfigurationKey() == null) {
return BuildEventIdUtil.nullConfigurationId();
} else {
@@ -103,7 +104,7 @@
if (buildConfigurationValue == null) {
return null;
}
- return buildConfigurationValue.getConfiguration().getEventId();
+ return buildConfigurationValue.getEventId();
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCreationException.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCreationException.java
index 89897d6..e70a0e1 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCreationException.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCreationException.java
@@ -13,7 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId;
import com.google.devtools.build.lib.causes.AnalysisFailedCause;
import com.google.devtools.build.lib.causes.Cause;
@@ -29,7 +29,7 @@
/** An exception indicating that there was a problem creating an aspect. */
public final class AspectCreationException extends Exception implements SaneAnalysisException {
- private static ConfigurationId toId(BuildConfiguration config) {
+ private static ConfigurationId toId(BuildConfigurationValue config) {
return config == null ? null : config.getEventId().getConfiguration();
}
@@ -48,7 +48,7 @@
public AspectCreationException(
String message,
Label currentTarget,
- @Nullable BuildConfiguration configuration,
+ @Nullable BuildConfigurationValue configuration,
DetailedExitCode detailedExitCode) {
this(
message,
@@ -59,7 +59,7 @@
}
public AspectCreationException(
- String message, Label currentTarget, @Nullable BuildConfiguration configuration) {
+ String message, Label currentTarget, @Nullable BuildConfigurationValue configuration) {
this(
message,
currentTarget,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index 2633d47..a8f56d5 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -41,7 +41,7 @@
import com.google.devtools.build.lib.analysis.ResolvedToolchainContext;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.ToolchainCollection;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ConfigConditions;
import com.google.devtools.build.lib.analysis.config.ConfigurationResolver;
import com.google.devtools.build.lib.analysis.config.DependencyEvaluationException;
@@ -235,7 +235,7 @@
}
ConfiguredTargetValue baseConfiguredTargetValue;
- BuildConfiguration aspectConfiguration = null;
+ BuildConfigurationValue aspectConfiguration = null;
try {
baseConfiguredTargetValue =
@@ -248,9 +248,8 @@
if (aspectHasConfiguration) {
try {
aspectConfiguration =
- ((BuildConfigurationValue)
- baseAndAspectValues.get(key.getAspectConfigurationKey()).get())
- .getConfiguration();
+ (BuildConfigurationValue)
+ baseAndAspectValues.get(key.getAspectConfigurationKey()).get();
} catch (ConfiguredValueCreationException e) {
throw new IllegalStateException("Unexpected exception from BuildConfigurationFunction when "
+ "computing " + key.getAspectConfigurationKey(), e);
@@ -260,7 +259,7 @@
ConfiguredTarget associatedTarget = baseConfiguredTargetValue.getConfiguredTarget();
Package targetPkg;
- BuildConfiguration configuration = null;
+ BuildConfigurationValue configuration = null;
PackageValue.Key packageKey =
PackageValue.key(associatedTarget.getOriginalLabel().getPackageIdentifier());
if (associatedTarget.getConfigurationKey() == null) {
@@ -280,9 +279,7 @@
return null;
}
targetPkg = ((PackageValue) result.get(packageKey)).getPackage();
- configuration =
- ((BuildConfigurationValue) result.get(associatedTarget.getConfigurationKey()))
- .getConfiguration();
+ configuration = (BuildConfigurationValue) result.get(associatedTarget.getConfigurationKey());
}
Target target;
@@ -518,7 +515,10 @@
@Nullable
private static UnloadedToolchainContext getUnloadedToolchainContext(
- Environment env, AspectKey key, Aspect aspect, @Nullable BuildConfiguration configuration)
+ Environment env,
+ AspectKey key,
+ Aspect aspect,
+ @Nullable BuildConfigurationValue configuration)
throws InterruptedException, AspectCreationException {
// Determine what toolchains are needed by this target.
UnloadedToolchainContext unloadedToolchainContext = null;
@@ -531,7 +531,7 @@
(UnloadedToolchainContext)
env.getValueOrThrow(
ToolchainContextKey.key()
- .configurationKey(BuildConfigurationValue.key(configuration))
+ .configurationKey(configuration.getKey())
.requiredToolchainTypeLabels(requiredToolchains)
.build(),
ToolchainException.class);
@@ -553,7 +553,7 @@
*/
// TODO(#10523): Remove this when the migration period for toolchain transitions has ended.
private static boolean shouldUseToolchainTransition(
- @Nullable BuildConfiguration configuration, AspectDefinition definition) {
+ @Nullable BuildConfigurationValue configuration, AspectDefinition definition) {
// Check whether the global incompatible change flag is set.
if (configuration != null) {
PlatformOptions platformOptions = configuration.getOptions().get(PlatformOptions.class);
@@ -624,11 +624,11 @@
@Nullable
private AspectValue createAliasAspect(
Environment env,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
TargetAndConfiguration originalTarget,
Aspect aspect,
AspectKey originalKey,
- BuildConfiguration aspectConfiguration,
+ BuildConfigurationValue aspectConfiguration,
ConfiguredTarget configuredTarget)
throws AspectFunctionException, InterruptedException {
ImmutableList<Label> aliasChain =
@@ -827,7 +827,7 @@
Aspect aspect,
ConfiguredAspectFactory aspectFactory,
ConfiguredTargetAndData associatedTarget,
- BuildConfiguration aspectConfiguration,
+ BuildConfigurationValue aspectConfiguration,
ConfigConditions configConditions,
ResolvedToolchainContext toolchainContext,
OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> directDeps,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectKeyCreator.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectKeyCreator.java
index 10ba833..0d4c5ac 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectKeyCreator.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectKeyCreator.java
@@ -17,7 +17,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.actions.ActionLookupKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.packages.AspectClass;
@@ -38,21 +38,21 @@
public static AspectKey createAspectKey(
Label label,
- @Nullable BuildConfiguration baseConfiguration,
+ @Nullable BuildConfigurationValue baseConfiguration,
ImmutableList<AspectKey> baseKeys,
AspectDescriptor aspectDescriptor,
- @Nullable BuildConfiguration aspectConfiguration) {
+ @Nullable BuildConfigurationValue aspectConfiguration) {
return AspectKey.createAspectKey(
ConfiguredTargetKey.builder().setLabel(label).setConfiguration(baseConfiguration).build(),
baseKeys,
aspectDescriptor,
- aspectConfiguration == null ? null : BuildConfigurationValue.key(aspectConfiguration));
+ aspectConfiguration == null ? null : aspectConfiguration.getKey());
}
public static AspectKey createAspectKey(
AspectDescriptor aspectDescriptor,
ImmutableList<AspectKey> baseKeys,
- BuildConfigurationValue.Key aspectConfigurationKey,
+ BuildConfigurationKey aspectConfigurationKey,
ConfiguredTargetKey baseConfiguredTargetKey) {
return AspectKey.createAspectKey(
baseConfiguredTargetKey, baseKeys, aspectDescriptor, aspectConfigurationKey);
@@ -60,20 +60,20 @@
public static AspectKey createAspectKey(
Label label,
- @Nullable BuildConfiguration baseConfiguration,
+ @Nullable BuildConfigurationValue baseConfiguration,
AspectDescriptor aspectDescriptor,
- @Nullable BuildConfiguration aspectConfiguration) {
+ @Nullable BuildConfigurationValue aspectConfiguration) {
return AspectKey.createAspectKey(
ConfiguredTargetKey.builder().setLabel(label).setConfiguration(baseConfiguration).build(),
ImmutableList.of(),
aspectDescriptor,
- aspectConfiguration == null ? null : BuildConfigurationValue.key(aspectConfiguration));
+ aspectConfiguration == null ? null : aspectConfiguration.getKey());
}
public static TopLevelAspectsKey createTopLevelAspectsKey(
ImmutableList<AspectClass> topLevelAspectsClasses,
Label targetLabel,
- @Nullable BuildConfiguration configuration) {
+ @Nullable BuildConfigurationValue configuration) {
return TopLevelAspectsKey.createInternal(
topLevelAspectsClasses,
targetLabel,
@@ -110,14 +110,14 @@
@AutoCodec
public static final class AspectKey extends AspectBaseKey {
private final ImmutableList<AspectKey> baseKeys;
- @Nullable private final BuildConfigurationValue.Key aspectConfigurationKey;
+ @Nullable private final BuildConfigurationKey aspectConfigurationKey;
private final AspectDescriptor aspectDescriptor;
private AspectKey(
ConfiguredTargetKey baseConfiguredTargetKey,
ImmutableList<AspectKey> baseKeys,
AspectDescriptor aspectDescriptor,
- @Nullable BuildConfigurationValue.Key aspectConfigurationKey,
+ @Nullable BuildConfigurationKey aspectConfigurationKey,
int hashCode) {
super(baseConfiguredTargetKey, hashCode);
this.baseKeys = baseKeys;
@@ -131,7 +131,7 @@
ConfiguredTargetKey baseConfiguredTargetKey,
ImmutableList<AspectKey> baseKeys,
AspectDescriptor aspectDescriptor,
- @Nullable BuildConfigurationValue.Key aspectConfigurationKey) {
+ @Nullable BuildConfigurationKey aspectConfigurationKey) {
return aspectKeyInterner.intern(
new AspectKey(
baseConfiguredTargetKey,
@@ -207,7 +207,7 @@
* base target's configuration.
*/
@Nullable
- public BuildConfigurationValue.Key getAspectConfigurationKey() {
+ public BuildConfigurationKey getAspectConfigurationKey() {
return aspectConfigurationKey;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD
index 78f260b..4f2693f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD
@@ -109,7 +109,7 @@
":artifact_nested_set_key",
":aspect_creation_exception",
":aspect_key_creator",
- ":build_configuration_value",
+ ":build_configuration",
":build_driver_key",
":build_driver_value",
":build_info_collection_value",
@@ -815,7 +815,7 @@
name = "aspect_key_creator",
srcs = ["AspectKeyCreator.java"],
deps = [
- ":build_configuration_value",
+ ":build_configuration",
":configured_target_key",
":sky_functions",
"//src/main/java/com/google/devtools/build/lib/actions:action_lookup_key",
@@ -900,14 +900,13 @@
)
java_library(
- name = "build_configuration_value",
+ name = "build_configuration",
srcs = [
- "BuildConfigurationValue.java",
+ "BuildConfigurationKey.java",
"PlatformMappingValue.java",
],
deps = [
":sky_functions",
- "//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration",
"//src/main/java/com/google/devtools/build/lib/analysis:config/build_options",
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_class_set",
"//src/main/java/com/google/devtools/build/lib/analysis:config/fragment_options",
@@ -928,7 +927,7 @@
name = "build_info_collection_value",
srcs = ["BuildInfoCollectionValue.java"],
deps = [
- ":build_configuration_value",
+ ":build_configuration",
":sky_functions",
"//src/main/java/com/google/devtools/build/lib/actions",
"//src/main/java/com/google/devtools/build/lib/actions:action_lookup_key",
@@ -1140,7 +1139,7 @@
name = "configured_target_and_data",
srcs = ["ConfiguredTargetAndData.java"],
deps = [
- ":build_configuration_value",
+ ":build_configuration",
":package_value",
"//src/main/java/com/google/devtools/build/lib/analysis:config/build_configuration",
"//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
@@ -1156,7 +1155,7 @@
name = "configured_target_key",
srcs = ["ConfiguredTargetKey.java"],
deps = [
- ":build_configuration_value",
+ ":build_configuration",
":sky_functions",
":toolchain_context_key",
"//src/main/java/com/google/devtools/build/lib/actions:action_lookup_key",
@@ -2511,7 +2510,7 @@
name = "toolchain_context_key",
srcs = ["ToolchainContextKey.java"],
deps = [
- ":build_configuration_value",
+ ":build_configuration",
":sky_functions",
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
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 005646f..821ca32 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
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.actions.ActionEnvironment;
import com.google.devtools.build.lib.analysis.BlazeDirectories;
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.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.CoreOptions;
import com.google.devtools.build.lib.analysis.config.Fragment;
@@ -67,7 +67,7 @@
return null;
}
- BuildConfigurationValue.Key key = (BuildConfigurationValue.Key) skyKey.argument();
+ BuildConfigurationKey key = (BuildConfigurationKey) skyKey.argument();
ImmutableSortedMap<Class<? extends Fragment>, Fragment> fragments;
try {
fragments = getConfigurationFragments(key);
@@ -91,23 +91,21 @@
try {
return new BuildConfigurationValue(
- new BuildConfiguration(
- directories,
- fragments,
- fragmentClasses,
- key.getOptions(),
- ruleClassProvider.getReservedActionMnemonics(),
- actionEnvironment,
- RepositoryName.createFromValidStrippedName(workspaceNameValue.getName()),
- starlarkSemantics.getBool(
- BuildLanguageOptions.EXPERIMENTAL_SIBLING_REPOSITORY_LAYOUT)));
+ directories,
+ fragments,
+ fragmentClasses,
+ key.getOptions(),
+ ruleClassProvider.getReservedActionMnemonics(),
+ actionEnvironment,
+ RepositoryName.createFromValidStrippedName(workspaceNameValue.getName()),
+ starlarkSemantics.getBool(BuildLanguageOptions.EXPERIMENTAL_SIBLING_REPOSITORY_LAYOUT));
} catch (InvalidMnemonicException e) {
throw new BuildConfigurationFunctionException(e);
}
}
private ImmutableSortedMap<Class<? extends Fragment>, Fragment> getConfigurationFragments(
- BuildConfigurationValue.Key key) throws InvalidConfigurationException {
+ BuildConfigurationKey key) throws InvalidConfigurationException {
FragmentClassSet fragmentClasses = key.getFragments();
ImmutableSortedMap.Builder<Class<? extends Fragment>, Fragment> fragments =
ImmutableSortedMap.orderedBy(FragmentClassSet.LEXICAL_FRAGMENT_SORTER);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationKey.java
new file mode 100644
index 0000000..2a9b7ea
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationKey.java
@@ -0,0 +1,143 @@
+// Copyright 2021 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.skyframe;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Interner;
+import com.google.devtools.build.lib.analysis.config.BuildOptions;
+import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
+import com.google.devtools.build.lib.concurrent.BlazeInterners;
+import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.skyframe.SkyFunctionName;
+import com.google.devtools.build.skyframe.SkyKey;
+import com.google.devtools.common.options.OptionsParsingException;
+import java.io.Serializable;
+import java.util.Objects;
+
+/**
+ * {@link SkyKey} for {@link com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}.
+ */
+@AutoCodec
+public final class BuildConfigurationKey implements SkyKey, Serializable {
+
+ /**
+ * Creates a new configuration key based on the given options, after applying a platform mapping
+ * transformation.
+ *
+ * @param platformMappingValue sky value that can transform a configuration key based on a
+ * platform mapping
+ * @param fragments set of options fragments this configuration should cover
+ * @param options the desired configuration
+ * @throws OptionsParsingException if the platform mapping cannot be parsed
+ */
+ public static BuildConfigurationKey withPlatformMapping(
+ PlatformMappingValue platformMappingValue, FragmentClassSet fragments, BuildOptions options)
+ throws OptionsParsingException {
+ return platformMappingValue.map(withoutPlatformMapping(fragments, options));
+ }
+
+ /**
+ * Returns the key for a requested configuration.
+ *
+ * <p>Callers are responsible for applying the platform mapping or ascertaining that a platform
+ * mapping is not required.
+ *
+ * @param fragments the fragments the configuration should contain
+ * @param options the {@link BuildOptions} object the {@link BuildOptions} should be rebuilt from
+ */
+ @AutoCodec.Instantiator
+ public static BuildConfigurationKey withoutPlatformMapping(
+ FragmentClassSet fragments, BuildOptions options) {
+ return interner.intern(new BuildConfigurationKey(fragments, options));
+ }
+
+ private static final Interner<BuildConfigurationKey> interner = BlazeInterners.newWeakInterner();
+
+ private final FragmentClassSet fragments;
+ private final BuildOptions options;
+ private final int hashCode;
+
+ private BuildConfigurationKey(FragmentClassSet fragments, BuildOptions options) {
+ this.fragments = Preconditions.checkNotNull(fragments);
+ this.options = Preconditions.checkNotNull(options);
+ this.hashCode = Objects.hash(fragments, options);
+ }
+
+ public FragmentClassSet getFragments() {
+ return fragments;
+ }
+
+ public BuildOptions getOptions() {
+ return options;
+ }
+
+ @Override
+ public SkyFunctionName functionName() {
+ return SkyFunctions.BUILD_CONFIGURATION;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof BuildConfigurationKey)) {
+ return false;
+ }
+ BuildConfigurationKey otherConfig = (BuildConfigurationKey) o;
+ return options.equals(otherConfig.options) && fragments.equals(otherConfig.fragments);
+ }
+
+ @Override
+ public int hashCode() {
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ // This format is depended on by integration tests.
+ // TODO(blaze-configurability-team): This should at least include the length of fragments.
+ // to at least remind devs that this Key has TWO key parts.
+ return "BuildConfigurationKey[" + options.checksum() + "]";
+ }
+
+ /**
+ * Returns a string representation that can be safely used for comparison purposes.
+ *
+ * <p>Unlike toString, which is short and good for printing in debug contexts, this is long
+ * because it includes sufficient information in options and fragments. toString alone is
+ * insufficient because multiple Keys can have the same options checksum (and thus same toString)
+ * but different fragments.
+ *
+ * <p>This function is meant to address two potential, trimming-related scenarios: 1. If trimming
+ * by only trimming BuildOptions (e.g. --trim_test_configuration), then after the initial
+ * trimming, fragments has extra classes (corresponding to those trimmed). Notably, dependencies
+ * of trimmed targets will create Keys with a properly trimmed set of fragments. Thus, will easily
+ * have two Keys with the same (trimmed) BuildOptions but different fragments yet corresponding to
+ * the same (trimmed) BuildConfigurationValue.
+ *
+ * <p>2. If trimming by only trimming fragments (at time of this comment, unsure whether this is
+ * ever done in active code), then BuildOptions has extra classes. The returned
+ * BuildConfigurationValue is properly trimmed (with the extra classes BuildOptions removed)
+ * although notably with a different checksum compared to the Key checksum. Note that given a
+ * target that is doing trimming like this, the reverse dependency of the target (i.e. without
+ * trimming) could easily involve a Key with the same (untrimmed!) BuildOptions but different
+ * fragments. However, unlike in case 1, they will correspond to different
+ * BuildConfigurationValue.
+ */
+ public String toComparableString() {
+ return "BuildConfigurationKey[" + options.checksum() + ", " + fragments + "]";
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
deleted file mode 100644
index ef3588c..0000000
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright 2015 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.skyframe;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Interner;
-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.FragmentClassSet;
-import com.google.devtools.build.lib.concurrent.BlazeInterners;
-import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
-import com.google.devtools.build.skyframe.SkyFunctionName;
-import com.google.devtools.build.skyframe.SkyKey;
-import com.google.devtools.build.skyframe.SkyValue;
-import com.google.devtools.common.options.OptionsParsingException;
-import java.io.Serializable;
-import java.util.Objects;
-
-/** A Skyframe value representing a {@link BuildConfiguration}. */
-// TODO(bazel-team): mark this immutable when BuildConfiguration is immutable.
-// @Immutable
-@AutoCodec
-@ThreadSafe
-public class BuildConfigurationValue implements SkyValue {
- private final BuildConfiguration configuration;
-
- BuildConfigurationValue(BuildConfiguration configuration) {
- this.configuration = configuration;
- }
-
- public BuildConfiguration getConfiguration() {
- return configuration;
- }
-
- /**
- * Creates a new configuration key based on the given options, after applying a platform mapping
- * transformation.
- *
- * @param platformMappingValue sky value that can transform a configuration key based on a
- * platform mapping
- * @param fragments set of options fragments this configuration should cover
- * @param options the desired configuration
- * @throws OptionsParsingException if the platform mapping cannot be parsed
- */
- public static Key keyWithPlatformMapping(
- PlatformMappingValue platformMappingValue,
- FragmentClassSet fragments,
- BuildOptions options)
- throws OptionsParsingException {
- return platformMappingValue.map(keyWithoutPlatformMapping(fragments, options));
- }
-
- /**
- * Returns the key for a requested configuration.
- *
- * <p>Callers are responsible for applying the platform mapping or ascertaining that a platform
- * mapping is not required.
- *
- * @param fragments the fragments the configuration should contain
- * @param options the {@link BuildOptions} object the {@link BuildOptions} should be rebuilt from
- */
- public static Key keyWithoutPlatformMapping(FragmentClassSet fragments, BuildOptions options) {
- return Key.create(fragments, options);
- }
-
- /**
- * Returns a configuration key for the given configuration.
- *
- * <p>Note that this key creation method does not apply a platform mapping, it is assumed that the
- * passed configuration was created with one such and thus its key does not need to be mapped
- * again.
- *
- * @param buildConfiguration configuration whose key is requested
- */
- public static Key key(BuildConfiguration buildConfiguration) {
- return keyWithoutPlatformMapping(
- buildConfiguration.fragmentClasses(), buildConfiguration.getOptions());
- }
-
- /** {@link SkyKey} for {@link BuildConfigurationValue}. */
- @AutoCodec
- public static final class Key implements SkyKey, Serializable {
- private static final Interner<Key> keyInterner = BlazeInterners.newWeakInterner();
-
- private final FragmentClassSet fragments;
- private final BuildOptions options;
- private final int hashCode;
-
- @AutoCodec.Instantiator
- @VisibleForSerialization
- static Key create(FragmentClassSet fragments, BuildOptions options) {
- return keyInterner.intern(new Key(fragments, options));
- }
-
- private Key(FragmentClassSet fragments, BuildOptions options) {
- this.fragments = Preconditions.checkNotNull(fragments);
- this.options = Preconditions.checkNotNull(options);
- this.hashCode = Objects.hash(fragments, options);
- }
-
- public FragmentClassSet getFragments() {
- return fragments;
- }
-
- public BuildOptions getOptions() {
- return options;
- }
-
- @Override
- public SkyFunctionName functionName() {
- return SkyFunctions.BUILD_CONFIGURATION;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o) {
- return true;
- }
- if (!(o instanceof Key)) {
- return false;
- }
- Key otherConfig = (Key) o;
- return options.equals(otherConfig.options) && fragments.equals(otherConfig.fragments);
- }
-
- @Override
- public int hashCode() {
- return hashCode;
- }
-
- @Override
- public String toString() {
- // This format is depended on by integration tests.
- // TODO(blaze-configurability-team): This should at least include the length of fragments.
- // to at least remind devs that this Key has TWO key parts.
- return "BuildConfigurationValue.Key[" + options.checksum() + "]";
- }
-
- /**
- * Return a string representation that can be safely used for comparison purposes.
- *
- * <p>Unlike toString, which is short and good for printing in debug contexts, this is long
- * because it includes sufficient information in options and fragments. toString alone is
- * insufficient because multiple Keys can have the same options checksum (and thus same
- * toString) but different fragments.
- *
- * <p>This function is meant to address two potential, trimming-related scenarios: 1. If
- * trimming by only trimming BuildOptions (e.g. --trim_test_configuration), then after the
- * initial trimming, fragments has extra classes (corresponding to those trimmed). Notably,
- * dependencies of trimmed targets will create Keys with a properly trimmed set of fragments.
- * Thus, will easily have two Keys with the same (trimmed) BuildOptions but different fragments
- * yet corresponding to the same (trimmed) BuildConfigurationValue.
- *
- * <p>2. If trimming by only trimming fragments (at time of this comment, unsure whether this is
- * ever done in active code), then BuildOptions has extra classes. The returned
- * BuildConfigurationValue is properly trimmed (with the extra classes BuildOptions removed)
- * although notably with a different checksum compared to the Key checksum. Note that given a
- * target that is doing trimming like this, the reverse dependency of the target (i.e. without
- * trimming) could easily involve a Key with the same (untrimmed!) BuildOptions but different
- * fragments. However, unlike in case 1, they will correspond to different
- * BuildConfigurationValue.
- */
- public String toComparableString() {
- return "BuildConfigurationValue.Key[" + options.checksum() + ", " + fragments + "]";
- }
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
index dda34ba..bf97a1f 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java
@@ -25,7 +25,7 @@
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoContext;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoType;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.skyframe.BuildInfoCollectionValue.BuildInfoKeyAndConfig;
import com.google.devtools.build.lib.skyframe.PrecomputedValue.Precomputed;
import com.google.devtools.build.skyframe.SkyFunction;
@@ -65,8 +65,8 @@
WorkspaceStatusValue infoArtifactValue =
(WorkspaceStatusValue) result.get(WorkspaceStatusValue.BUILD_INFO_KEY);
- BuildConfiguration config =
- ((BuildConfigurationValue) result.get(keyAndConfig.getConfigKey())).getConfiguration();
+ BuildConfigurationValue config =
+ (BuildConfigurationValue) result.get(keyAndConfig.getConfigKey());
Map<BuildInfoKey, BuildInfoFactory> buildInfoFactories = BUILD_INFO_FACTORIES.get(env);
BuildInfoFactory buildInfoFactory = buildInfoFactories.get(keyAndConfig.getInfoKey());
Preconditions.checkState(buildInfoFactory.isEnabled(config));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
index 79588e2..76dc915 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java
@@ -20,7 +20,7 @@
import com.google.devtools.build.lib.actions.BasicActionLookupValue;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
@@ -50,9 +50,9 @@
return getStringHelper().add("collection", collection).toString();
}
- public static BuildInfoKeyAndConfig key(BuildInfoKey key, @Nullable BuildConfiguration config) {
- return BuildInfoKeyAndConfig.create(
- key, config == null ? null : BuildConfigurationValue.key(config));
+ public static BuildInfoKeyAndConfig key(
+ BuildInfoKey key, @Nullable BuildConfigurationValue config) {
+ return BuildInfoKeyAndConfig.create(key, config == null ? null : config.getKey());
}
/** Key for BuildInfoCollectionValues. */
@@ -62,16 +62,15 @@
BlazeInterners.newWeakInterner();
private final BuildInfoKey infoKey;
- private final BuildConfigurationValue.Key configKey;
+ private final BuildConfigurationKey configKey;
- private BuildInfoKeyAndConfig(BuildInfoKey key, BuildConfigurationValue.Key configKey) {
+ private BuildInfoKeyAndConfig(BuildInfoKey key, BuildConfigurationKey configKey) {
this.infoKey = Preconditions.checkNotNull(key, configKey);
this.configKey = Preconditions.checkNotNull(configKey, key);
}
@AutoCodec.Instantiator
- static BuildInfoKeyAndConfig create(
- BuildInfoKey infoKey, BuildConfigurationValue.Key configKey) {
+ static BuildInfoKeyAndConfig create(BuildInfoKey infoKey, BuildConfigurationKey configKey) {
return keyInterner.intern(new BuildInfoKeyAndConfig(infoKey, configKey));
}
@@ -84,7 +83,7 @@
return infoKey;
}
- BuildConfigurationValue.Key getConfigKey() {
+ BuildConfigurationKey getConfigKey() {
return configKey;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java
index 1d06228..00fef49 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java
@@ -19,7 +19,7 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.skyframe.SkyFunction;
@@ -30,25 +30,26 @@
/**
* A container class for a {@link ConfiguredTarget} and associated data, {@link Target}, {@link
- * BuildConfiguration}, and transition keys. In the future, {@link ConfiguredTarget} objects will no
- * longer contain their associated {@link BuildConfiguration}. Consumers that need the {@link
- * Target} or {@link BuildConfiguration} must therefore have access to one of these objects.
+ * BuildConfigurationValue}, and transition keys. In the future, {@link ConfiguredTarget} objects
+ * will no longer contain their associated {@link BuildConfigurationValue}. Consumers that need the
+ * {@link Target} or {@link BuildConfigurationValue} must therefore have access to one of these
+ * objects.
*
* <p>These objects are intended to be short-lived, never stored in Skyframe, since they pair three
* heavyweight objects, a {@link ConfiguredTarget}, a {@link Target} (which holds a {@link
- * com.google.devtools.build.lib.packages.Package}), and a {@link BuildConfiguration}.
+ * com.google.devtools.build.lib.packages.Package}), and a {@link BuildConfigurationValue}.
*/
public class ConfiguredTargetAndData {
private final ConfiguredTarget configuredTarget;
private final Target target;
- private final BuildConfiguration configuration;
+ private final BuildConfigurationValue configuration;
private final ImmutableList<String> transitionKeys;
@VisibleForTesting
public ConfiguredTargetAndData(
ConfiguredTarget configuredTarget,
Target target,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
ImmutableList<String> transitionKeys) {
this.configuredTarget = configuredTarget;
this.target = target;
@@ -60,7 +61,7 @@
+ " ConfiguredTarget's label %s is not equal to Target's label %s",
configuredTarget.getLabel(),
target.getLabel());
- BuildConfigurationValue.Key innerConfigurationKey = configuredTarget.getConfigurationKey();
+ BuildConfigurationKey innerConfigurationKey = configuredTarget.getConfigurationKey();
if (configuration == null) {
Preconditions.checkState(
innerConfigurationKey == null,
@@ -68,7 +69,7 @@
configuredTarget,
target);
} else {
- BuildConfigurationValue.Key configurationKey = BuildConfigurationValue.key(configuration);
+ BuildConfigurationKey configurationKey = configuration.getKey();
Preconditions.checkState(
innerConfigurationKey.equals(configurationKey),
"Configurations don't match: %s %s %s (%s %s)",
@@ -83,10 +84,10 @@
@Nullable
static ConfiguredTargetAndData fromConfiguredTargetInSkyframe(
ConfiguredTarget ct, SkyFunction.Environment env) throws InterruptedException {
- BuildConfiguration configuration = null;
+ BuildConfigurationValue configuration = null;
ImmutableSet<SkyKey> packageAndMaybeConfiguration;
PackageValue.Key packageKey = PackageValue.key(ct.getLabel().getPackageIdentifier());
- BuildConfigurationValue.Key configurationKeyMaybe = ct.getConfigurationKey();
+ BuildConfigurationKey configurationKeyMaybe = ct.getConfigurationKey();
if (configurationKeyMaybe == null) {
packageAndMaybeConfiguration = ImmutableSet.of(packageKey);
} else {
@@ -100,12 +101,11 @@
return null;
}
if (configurationKeyMaybe != null) {
- BuildConfigurationValue buildConfigurationValue =
+ configuration =
(BuildConfigurationValue) packageAndMaybeConfigurationValues.get(configurationKeyMaybe);
- if (buildConfigurationValue == null) {
+ if (configuration == null) {
return null;
}
- configuration = buildConfigurationValue.getConfiguration();
}
try {
return new ConfiguredTargetAndData(
@@ -130,7 +130,7 @@
return target;
}
- public BuildConfiguration getConfiguration() {
+ public BuildConfigurationValue getConfiguration() {
return configuration;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
index 7bdd7a7..4ee1e37 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
@@ -45,7 +45,7 @@
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.ToolchainCollection;
import com.google.devtools.build.lib.analysis.ToolchainContext;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.BuildOptionsView;
import com.google.devtools.build.lib.analysis.config.ConfigConditions;
@@ -199,7 +199,7 @@
ConfiguredTargetKey configuredTargetKey = (ConfiguredTargetKey) key.argument();
Label label = configuredTargetKey.getLabel();
- BuildConfiguration configuration = null;
+ BuildConfigurationValue configuration = null;
ImmutableSet<SkyKey> packageAndMaybeConfiguration;
SkyKey packageKey = PackageValue.key(label.getPackageIdentifier());
SkyKey configurationKeyMaybe = configuredTargetKey.getConfigurationKey();
@@ -216,8 +216,7 @@
PackageValue packageValue = (PackageValue) packageAndMaybeConfigurationValues.get(packageKey);
if (configurationKeyMaybe != null) {
configuration =
- ((BuildConfigurationValue) packageAndMaybeConfigurationValues.get(configurationKeyMaybe))
- .getConfiguration();
+ (BuildConfigurationValue) packageAndMaybeConfigurationValues.get(configurationKeyMaybe);
}
// TODO(ulfjack): This tries to match the logic in TransitiveTargetFunction /
@@ -470,7 +469,7 @@
return new ComputedToolchainContexts();
}
Rule rule = ((Rule) targetAndConfig.getTarget());
- BuildConfiguration configuration = targetAndConfig.getConfiguration();
+ BuildConfigurationValue configuration = targetAndConfig.getConfiguration();
ImmutableSet<Label> requiredDefaultToolchains =
rule.getRuleClassObject().getRequiredToolchains();
@@ -522,8 +521,8 @@
toolchainTaggedTrimmingTransition.requiresOptionFragments()),
env.getListener());
- BuildConfigurationValue.Key toolchainConfig =
- BuildConfigurationValue.keyWithoutPlatformMapping(
+ BuildConfigurationKey toolchainConfig =
+ BuildConfigurationKey.withoutPlatformMapping(
configuration.fragmentClasses(), toolchainOptions);
Map<String, ToolchainContextKey> toolchainContextKeys = new HashMap<>();
@@ -639,14 +638,14 @@
@Nullable ToolchainCollection<ToolchainContext> toolchainContexts,
boolean useToolchainTransition,
RuleClassProvider ruleClassProvider,
- BuildConfiguration hostConfiguration,
+ BuildConfigurationValue hostConfiguration,
@Nullable NestedSetBuilder<Package> transitivePackagesForPackageRootResolution,
NestedSetBuilder<Cause> transitiveRootCauses)
throws DependencyEvaluationException, ConfiguredValueCreationException,
AspectCreationException, InterruptedException {
// Create the map from attributes to set of (target, transition) pairs.
OrderedSetMultimap<DependencyKind, DependencyKey> initialDependencies;
- BuildConfiguration configuration = ctgValue.getConfiguration();
+ BuildConfigurationValue configuration = ctgValue.getConfiguration();
Label label = ctgValue.getLabel();
try {
initialDependencies =
@@ -891,12 +890,10 @@
}
}
try {
- BuildConfiguration depConfiguration = dep.getConfiguration();
- BuildConfigurationValue.Key depKey =
- depValue.getConfiguredTarget().getConfigurationKey();
- if (depKey != null && !depKey.equals(BuildConfigurationValue.key(depConfiguration))) {
- depConfiguration =
- ((BuildConfigurationValue) env.getValue(depKey)).getConfiguration();
+ BuildConfigurationValue depConfiguration = dep.getConfiguration();
+ BuildConfigurationKey depKey = depValue.getConfiguredTarget().getConfigurationKey();
+ if (depKey != null && !depKey.equals(depConfiguration.getKey())) {
+ depConfiguration = (BuildConfigurationValue) env.getValue(depKey);
}
result.put(
key,
@@ -959,7 +956,7 @@
@Nullable NestedSetBuilder<Package> transitivePackagesForPackageRootResolution)
throws ConfiguredValueCreationException, InterruptedException {
Target target = ctgValue.getTarget();
- BuildConfiguration configuration = ctgValue.getConfiguration();
+ BuildConfigurationValue configuration = ctgValue.getConfiguration();
// Should be successfully evaluated and cached from the loading phase.
StarlarkBuiltinsValue starlarkBuiltinsValue =
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
index 0457e20..58d7587 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetKey.java
@@ -20,7 +20,7 @@
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.actions.ActionLookupKey;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
@@ -29,34 +29,34 @@
import javax.annotation.Nullable;
/**
- * In simple form, a ({@link Label}, {@link BuildConfiguration}) pair used to trigger immediate
+ * In simple form, a ({@link Label}, {@link BuildConfigurationValue}) pair used to trigger immediate
* dependency resolution and the rule analysis.
*
- * <p>In practice, a ({@link Label}, canonical and post-transition {@link
- * BuildConfigurationValue.Key}) pair plus a possible execution platform override {@link Label} with
- * special constraints. To elaborate, in order of highest to lowest potential for concern:
+ * <p>In practice, a ({@link Label}, canonical and post-transition {@link BuildConfigurationKey})
+ * pair plus a possible execution platform override {@link Label} with special constraints. To
+ * elaborate, in order of highest to lowest potential for concern:
*
- * <p>1. The {@link BuildConfigurationValue.Key} must be post-transition and thus ready for
- * immediate use in dependency resolution and analysis. In practice, this means that if the rule has
- * an incoming-edge transition (cfg in {@link RuleClass}) or there are global trimming transitions,
+ * <p>1. The {@link BuildConfigurationKey} must be post-transition and thus ready for immediate use
+ * in dependency resolution and analysis. In practice, this means that if the rule has an
+ * incoming-edge transition (cfg in {@link RuleClass}) or there are global trimming transitions,
* THOSE TRANSITIONS MUST ALREADY BE DONE before creating the key. Failure to do so will lead to
- * build graphs with ConfiguredTarget that have seemingly impossible {@link BuildConfiguration} (due
- * to the skipped transitions).
+ * build graphs with ConfiguredTarget that have seemingly impossible {@link BuildConfigurationValue}
+ * (due to the skipped transitions).
*
- * <p>2. The {@link BuildConfigurationValue.Key} must be canonical. Multiple keys can correspond to
- * the same {@link BuildConfiguration}. The canonical key is the one returned by {@link
- * BuildConfigurationValue.key}. Failure to use a canonical key can result in build graphs with
+ * <p>2. The {@link BuildConfigurationKey} must be canonical. Multiple keys can correspond to the
+ * same {@link BuildConfigurationValue}. The canonical key is the one returned by {@link
+ * BuildConfigurationValue#getKey}. Failure to use a canonical key can result in build graphs with
* multiple seemingly-identical ConfiguredTarget that have the same ({@link Label}, {@link
- * BuildConfiguration}) pair. This is non-performant in all cases and incorrect if those
+ * BuildConfigurationValue}) pair. This is non-performant in all cases and incorrect if those
* duplications lead to action conflicts due to unsharable actions.
*
- * <p>3. A build should not request keys with equal ({@link Label}, {@link BuildConfiguration})
+ * <p>3. A build should not request keys with equal ({@link Label}, {@link BuildConfigurationValue})
* pairs but different execution platform override {@link Label} if the invoked rule will register
* actions. (This is potentially OK if all outputs of all registered actions incorporate the
* execution platform in their name unless the build also requests keys without an override that
* happen to resolve to the same execution platform.) In practice, this issue has not been seen in
* any 'real' builds; however, pathologically failure could lead to multiple (potentially different)
- * ConfiguredTarget that have the same ({@link Label}, {@link BuildConfiguration}) pair.
+ * ConfiguredTarget that have the same ({@link Label}, {@link BuildConfigurationValue}) pair.
*
* <p>Note that this key may be used to look up the generating action of an artifact.
*/
@@ -69,12 +69,11 @@
private static final Interner<ConfiguredTargetKey> interner = BlazeInterners.newWeakInterner();
private final Label label;
- @Nullable private final BuildConfigurationValue.Key configurationKey;
+ @Nullable private final BuildConfigurationKey configurationKey;
private final transient int hashCode;
- ConfiguredTargetKey(
- Label label, @Nullable BuildConfigurationValue.Key configurationKey, int hashCode) {
+ ConfiguredTargetKey(Label label, @Nullable BuildConfigurationKey configurationKey, int hashCode) {
this.label = checkNotNull(label);
this.configurationKey = configurationKey;
this.hashCode = hashCode;
@@ -82,8 +81,7 @@
@AutoCodec.VisibleForSerialization
@AutoCodec.Instantiator
- static ConfiguredTargetKey create(
- Label label, @Nullable BuildConfigurationValue.Key configurationKey) {
+ static ConfiguredTargetKey create(Label label, @Nullable BuildConfigurationKey configurationKey) {
int hashCode = computeHashCode(label, configurationKey, /*executionPlatformLabel=*/ null);
return interner.intern(new ConfiguredTargetKey(label, configurationKey, hashCode));
}
@@ -106,7 +104,7 @@
}
@Nullable
- public final BuildConfigurationValue.Key getConfigurationKey() {
+ public final BuildConfigurationKey getConfigurationKey() {
return configurationKey;
}
@@ -122,7 +120,7 @@
private static int computeHashCode(
Label label,
- @Nullable BuildConfigurationValue.Key configurationKey,
+ @Nullable BuildConfigurationKey configurationKey,
@Nullable Label executionPlatformLabel) {
int configVal = configurationKey == null ? 79 : configurationKey.hashCode();
int executionPlatformLabelVal =
@@ -175,7 +173,7 @@
private ToolchainDependencyConfiguredTargetKey(
Label label,
- @Nullable BuildConfigurationValue.Key configurationKey,
+ @Nullable BuildConfigurationKey configurationKey,
int hashCode,
Label executionPlatformLabel) {
super(label, configurationKey, hashCode);
@@ -186,7 +184,7 @@
@AutoCodec.Instantiator
static ToolchainDependencyConfiguredTargetKey create(
Label label,
- @Nullable BuildConfigurationValue.Key configurationKey,
+ @Nullable BuildConfigurationKey configurationKey,
Label executionPlatformLabel) {
int hashCode = computeHashCode(label, configurationKey, executionPlatformLabel);
return toolchainDependencyConfiguredTargetKeyInterner.intern(
@@ -208,7 +206,7 @@
/** A helper class to create instances of {@link ConfiguredTargetKey}. */
public static final class Builder {
private Label label = null;
- private BuildConfigurationValue.Key configurationKey = null;
+ private BuildConfigurationKey configurationKey = null;
private Label executionPlatformLabel = null;
private Builder() {}
@@ -232,17 +230,13 @@
return this;
}
- /** Sets the {@link BuildConfiguration} for the configured target. */
- public Builder setConfiguration(@Nullable BuildConfiguration buildConfiguration) {
- if (buildConfiguration == null) {
- return setConfigurationKey(null);
- } else {
- return setConfigurationKey(BuildConfigurationValue.key(buildConfiguration));
- }
+ /** Sets the {@link BuildConfigurationValue} for the configured target. */
+ public Builder setConfiguration(@Nullable BuildConfigurationValue buildConfiguration) {
+ return setConfigurationKey(buildConfiguration == null ? null : buildConfiguration.getKey());
}
/** Sets the configuration key for the configured target. */
- public Builder setConfigurationKey(@Nullable BuildConfigurationValue.Key configurationKey) {
+ public Builder setConfigurationKey(@Nullable BuildConfigurationKey configurationKey) {
this.configurationKey = configurationKey;
return this;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PlatformMappingValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PlatformMappingValue.java
index d2d5687..2f614ae 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PlatformMappingValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PlatformMappingValue.java
@@ -48,7 +48,7 @@
/**
* Stores contents of a platforms/flags mapping file for transforming one {@link
- * BuildConfigurationValue.Key} into another.
+ * BuildConfigurationKey} into another.
*
* <p>See <a href=https://docs.google.com/document/d/1Vg_tPgiZbSrvXcJ403vZVAGlsWhH9BUDrAxMOYnO0Ls>
* the design</a> for more details on how the mapping can be defined and the desired logic on how it
@@ -140,7 +140,7 @@
private final ImmutableMap<ImmutableSet<String>, Label> flagsToPlatforms;
private final ImmutableSet<Class<? extends FragmentOptions>> optionsClasses;
private final LoadingCache<ImmutableSet<String>, OptionsParsingResult> parserCache;
- private final LoadingCache<BuildConfigurationValue.Key, BuildConfigurationValue.Key> mappingCache;
+ private final LoadingCache<BuildConfigurationKey, BuildConfigurationKey> mappingCache;
/**
* Creates a new mapping value which will match on the given platforms (if a target platform is
@@ -167,7 +167,7 @@
}
/**
- * Maps one {@link BuildConfigurationValue.Key} to another by way of mappings provided in a file.
+ * Maps one {@link BuildConfigurationKey} to another by way of mappings provided in a file.
*
* <p>The <a href=https://docs.google.com/document/d/1Vg_tPgiZbSrvXcJ403vZVAGlsWhH9BUDrAxMOYnO0Ls>
* full design</a> contains the details for the mapping logic but in short:
@@ -186,8 +186,7 @@
* @throws IllegalArgumentException if the original does not contain a {@link PlatformOptions}
* fragment
*/
- public BuildConfigurationValue.Key map(BuildConfigurationValue.Key original)
- throws OptionsParsingException {
+ public BuildConfigurationKey map(BuildConfigurationKey original) throws OptionsParsingException {
try {
return mappingCache.get(original);
} catch (CompletionException e) {
@@ -196,7 +195,7 @@
}
}
- private BuildConfigurationValue.Key computeMapping(BuildConfigurationValue.Key original)
+ private BuildConfigurationKey computeMapping(BuildConfigurationKey original)
throws OptionsParsingException {
BuildOptions originalOptions = original.getOptions();
@@ -238,8 +237,7 @@
}
}
- return BuildConfigurationValue.keyWithoutPlatformMapping(
- original.getFragments(), modifiedOptions);
+ return BuildConfigurationKey.withoutPlatformMapping(original.getFragments(), modifiedOptions);
}
private OptionsParsingResult parseWithCache(ImmutableSet<String> args)
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseFunction.java
index 1a92d5e..45a4629 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseFunction.java
@@ -22,7 +22,7 @@
import com.google.devtools.build.lib.analysis.DependencyKey;
import com.google.devtools.build.lib.analysis.PlatformOptions;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.BuildOptionsView;
import com.google.devtools.build.lib.analysis.config.ConfigurationResolver;
@@ -93,17 +93,17 @@
List<BuildOptions> topLevelBuildOptions =
getTopLevelBuildOptions(targetOptions, options.getMultiCpu());
- ImmutableList.Builder<BuildConfigurationValue.Key> targetConfigurationKeysBuilder =
+ ImmutableList.Builder<BuildConfigurationKey> targetConfigurationKeysBuilder =
ImmutableList.builderWithExpectedSize(topLevelBuildOptions.size());
- BuildConfigurationValue.Key hostConfigurationKey;
+ BuildConfigurationKey hostConfigurationKey;
try {
hostConfigurationKey =
- BuildConfigurationValue.keyWithPlatformMapping(
+ BuildConfigurationKey.withPlatformMapping(
platformMappingValue, allFragments, hostOptions);
for (BuildOptions buildOptions :
getTopLevelBuildOptions(targetOptions, options.getMultiCpu())) {
targetConfigurationKeysBuilder.add(
- BuildConfigurationValue.keyWithPlatformMapping(
+ BuildConfigurationKey.withPlatformMapping(
platformMappingValue, allFragments, buildOptions));
}
} catch (OptionsParsingException e) {
@@ -117,7 +117,7 @@
throw new PrepareAnalysisPhaseFunctionException(e);
}
- ImmutableList<BuildConfigurationValue.Key> targetConfigurationKeys =
+ ImmutableList<BuildConfigurationKey> targetConfigurationKeys =
targetConfigurationKeysBuilder.build();
Map<SkyKey, SkyValue> configs = env.getValues(targetConfigurationKeys);
@@ -127,7 +127,7 @@
targetConfigurationKeys.stream()
.map(configs::get)
.filter(Objects::nonNull)
- .map(v -> ((BuildConfigurationValue) v).getConfiguration())
+ .map(BuildConfigurationValue.class::cast)
.forEach(config -> config.reportInvalidOptions(nosyEventHandler));
if (nosyEventHandler.hasErrors()) {
throw new PrepareAnalysisPhaseFunctionException(
@@ -148,9 +148,8 @@
// groups.
LinkedHashSet<TargetAndConfiguration> nodes = new LinkedHashSet<>(targets.size());
for (Target target : targets) {
- for (BuildConfigurationValue.Key configKey : targetConfigurationKeys) {
- BuildConfiguration config =
- ((BuildConfigurationValue) configs.get(configKey)).getConfiguration();
+ for (BuildConfigurationKey configKey : targetConfigurationKeys) {
+ BuildConfigurationValue config = (BuildConfigurationValue) configs.get(configKey);
nodes.add(new TargetAndConfiguration(target, config));
}
}
@@ -160,7 +159,7 @@
// for now, to satisfy its API we resolve transitions and repackage each target as a Dependency
// (with a NONE transition if necessary).
// Keep this in sync with AnalysisUtils#getTargetsWithConfigs.
- Multimap<BuildConfiguration, DependencyKey> asDeps =
+ Multimap<BuildConfigurationValue, DependencyKey> asDeps =
AnalysisUtils.targetsToDeps(nodes, ruleClassProvider);
LinkedHashSet<TargetAndConfiguration> topLevelTargetsWithConfigs;
try {
@@ -212,7 +211,7 @@
private LinkedHashSet<TargetAndConfiguration> resolveConfigurations(
SkyFunction.Environment env,
Iterable<TargetAndConfiguration> nodes,
- Multimap<BuildConfiguration, DependencyKey> asDeps)
+ Multimap<BuildConfigurationValue, DependencyKey> asDeps)
throws InterruptedException, TransitionException, OptionsParsingException {
Map<Label, Target> labelsToTargets = new LinkedHashMap<>();
for (TargetAndConfiguration node : nodes) {
@@ -223,13 +222,14 @@
// could be successfully Skyframe-evaluated.
Map<TargetAndConfiguration, TargetAndConfiguration> successfullyEvaluatedTargets =
new LinkedHashMap<>();
- for (BuildConfiguration fromConfig : asDeps.keySet()) {
- Multimap<DependencyKey, BuildConfiguration> trimmedTargets =
+ for (BuildConfigurationValue fromConfig : asDeps.keySet()) {
+ Multimap<DependencyKey, BuildConfigurationValue> trimmedTargets =
getConfigurations(env, fromConfig.getOptions(), asDeps.get(fromConfig));
if (trimmedTargets == null) {
continue;
}
- for (Map.Entry<DependencyKey, BuildConfiguration> trimmedTarget : trimmedTargets.entries()) {
+ for (Map.Entry<DependencyKey, BuildConfigurationValue> trimmedTarget :
+ trimmedTargets.entries()) {
Target target = labelsToTargets.get(trimmedTarget.getKey().getLabel());
successfullyEvaluatedTargets.put(
new TargetAndConfiguration(target, fromConfig),
@@ -251,10 +251,10 @@
// Keep in sync with {@link SkyframeExecutor#getConfigurations}.
// Note: this implementation runs inside Skyframe, so it has access to SkyFunction.Environment.
- private Multimap<DependencyKey, BuildConfiguration> getConfigurations(
+ private Multimap<DependencyKey, BuildConfigurationValue> getConfigurations(
SkyFunction.Environment env, BuildOptions fromOptions, Iterable<DependencyKey> keys)
throws InterruptedException, TransitionException, OptionsParsingException {
- Multimap<DependencyKey, BuildConfiguration> builder = ArrayListMultimap.create();
+ Multimap<DependencyKey, BuildConfigurationValue> builder = ArrayListMultimap.create();
FragmentClassSet allFragments = ruleClassProvider.getFragmentRegistry().getAllFragments();
@@ -284,7 +284,7 @@
.values();
for (BuildOptions toOption : toOptions) {
configSkyKeys.add(
- BuildConfigurationValue.keyWithPlatformMapping(
+ BuildConfigurationKey.withPlatformMapping(
platformMappingValue, allFragments, toOption));
}
}
@@ -310,14 +310,13 @@
.values();
for (BuildOptions toOption : toOptions) {
SkyKey configKey =
- BuildConfigurationValue.keyWithPlatformMapping(
- platformMappingValue, allFragments, toOption);
+ BuildConfigurationKey.withPlatformMapping(platformMappingValue, allFragments, toOption);
BuildConfigurationValue configValue =
- ((BuildConfigurationValue) configsResult.get(configKey));
+ (BuildConfigurationValue) configsResult.get(configKey);
// configValue will be null here if there was an exception thrown during configuration
// creation. This will be reported elsewhere.
if (configValue != null) {
- builder.put(key, configValue.getConfiguration());
+ builder.put(key, configValue);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseValue.java
index 2556a89..d722007 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseValue.java
@@ -20,8 +20,8 @@
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
-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.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigurationResolver.TopLevelTargetsAndConfigsResult;
import com.google.devtools.build.lib.analysis.config.FragmentClassSet;
@@ -63,13 +63,13 @@
@ThreadSafe
@AutoCodec
public final class PrepareAnalysisPhaseValue implements SkyValue {
- private final BuildConfigurationValue.Key hostConfigurationKey;
- private final ImmutableList<BuildConfigurationValue.Key> targetConfigurationKeys;
+ private final BuildConfigurationKey hostConfigurationKey;
+ private final ImmutableList<BuildConfigurationKey> targetConfigurationKeys;
private final ImmutableList<ConfiguredTargetKey> topLevelCtKeys;
PrepareAnalysisPhaseValue(
- BuildConfigurationValue.Key hostConfigurationKey,
- ImmutableList<BuildConfigurationValue.Key> targetConfigurationKeys,
+ BuildConfigurationKey hostConfigurationKey,
+ ImmutableList<BuildConfigurationKey> targetConfigurationKeys,
ImmutableList<ConfiguredTargetKey> topLevelCtKeys) {
this.hostConfigurationKey = Preconditions.checkNotNull(hostConfigurationKey);
this.targetConfigurationKeys = Preconditions.checkNotNull(targetConfigurationKeys);
@@ -83,9 +83,9 @@
public BuildConfigurationCollection getConfigurations(
ExtendedEventHandler eventHandler, SkyframeExecutor skyframeExecutor)
throws InvalidConfigurationException {
- BuildConfiguration hostConfiguration =
+ BuildConfigurationValue hostConfiguration =
skyframeExecutor.getConfiguration(eventHandler, hostConfigurationKey);
- ImmutableList<BuildConfiguration> targetConfigurations =
+ ImmutableList<BuildConfigurationValue> targetConfigurations =
ImmutableList.copyOf(
skyframeExecutor.getConfigurations(eventHandler, targetConfigurationKeys).values());
return new BuildConfigurationCollection(targetConfigurations, hostConfiguration);
@@ -102,7 +102,7 @@
public TopLevelTargetsAndConfigsResult getTopLevelCts(
ExtendedEventHandler eventHandler, SkyframeExecutor skyframeExecutor) {
List<TargetAndConfiguration> result = new ArrayList<>();
- Map<BuildConfigurationValue.Key, BuildConfiguration> configs =
+ Map<BuildConfigurationKey, BuildConfigurationValue> configs =
skyframeExecutor.getConfigurations(
eventHandler,
topLevelCtKeys.stream()
@@ -124,7 +124,7 @@
hasError = true;
continue;
}
- BuildConfiguration config =
+ BuildConfigurationValue config =
key.getConfigurationKey() == null ? null : configs.get(key.getConfigurationKey());
result.add(new TargetAndConfiguration(target, config));
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java
index 60d6ca2..cc47b00 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.analysis.platform.PlatformProviderUtils;
import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionValue;
@@ -67,7 +67,7 @@
public SkyValue compute(SkyKey skyKey, Environment env)
throws RegisteredExecutionPlatformsFunctionException, InterruptedException {
- BuildConfigurationValue buildConfigurationValue =
+ BuildConfigurationValue configuration =
(BuildConfigurationValue)
env.getValue(((RegisteredExecutionPlatformsValue.Key) skyKey).getConfigurationKey());
RepositoryMappingValue mainRepoMapping =
@@ -75,7 +75,6 @@
if (env.valuesMissing()) {
return null;
}
- BuildConfiguration configuration = buildConfigurationValue.getConfiguration();
TargetPattern.Parser mainRepoParser =
new TargetPattern.Parser(
@@ -186,7 +185,7 @@
}
private static ImmutableList<ConfiguredTargetKey> configureRegisteredExecutionPlatforms(
- Environment env, BuildConfiguration configuration, List<Label> labels)
+ Environment env, BuildConfigurationValue configuration, List<Label> labels)
throws InterruptedException, RegisteredExecutionPlatformsFunctionException {
ImmutableList<ConfiguredTargetKey> keys =
labels.stream()
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsValue.java
index b552777..df534c0 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsValue.java
@@ -31,7 +31,7 @@
public abstract class RegisteredExecutionPlatformsValue implements SkyValue {
/** Returns the {@link SkyKey} for {@link RegisteredExecutionPlatformsValue}s. */
- public static SkyKey key(BuildConfigurationValue.Key configurationKey) {
+ public static SkyKey key(BuildConfigurationKey configurationKey) {
return Key.of(configurationKey);
}
@@ -41,15 +41,15 @@
static class Key implements SkyKey {
private static final Interner<Key> interners = BlazeInterners.newWeakInterner();
- private final BuildConfigurationValue.Key configurationKey;
+ private final BuildConfigurationKey configurationKey;
- private Key(BuildConfigurationValue.Key configurationKey) {
+ private Key(BuildConfigurationKey configurationKey) {
this.configurationKey = configurationKey;
}
@AutoCodec.Instantiator
@AutoCodec.VisibleForSerialization
- static Key of(BuildConfigurationValue.Key configurationKey) {
+ static Key of(BuildConfigurationKey configurationKey) {
return interners.intern(new Key(configurationKey));
}
@@ -58,7 +58,7 @@
return SkyFunctions.REGISTERED_EXECUTION_PLATFORMS;
}
- BuildConfigurationValue.Key getConfigurationKey() {
+ BuildConfigurationKey getConfigurationKey() {
return configurationKey;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java
index d22fe77..1e0e17b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsFunction.java
@@ -21,7 +21,7 @@
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.platform.DeclaredToolchainInfo;
import com.google.devtools.build.lib.analysis.platform.PlatformProviderUtils;
import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionValue;
@@ -59,7 +59,7 @@
public SkyValue compute(SkyKey skyKey, Environment env)
throws SkyFunctionException, InterruptedException {
- BuildConfigurationValue buildConfigurationValue =
+ BuildConfigurationValue configuration =
(BuildConfigurationValue)
env.getValue(((RegisteredToolchainsValue.Key) skyKey).getConfigurationKey());
RepositoryMappingValue mainRepoMapping =
@@ -67,7 +67,6 @@
if (env.valuesMissing()) {
return null;
}
- BuildConfiguration configuration = buildConfigurationValue.getConfiguration();
TargetPattern.Parser mainRepoParser =
new TargetPattern.Parser(
@@ -176,7 +175,7 @@
}
private static ImmutableList<DeclaredToolchainInfo> configureRegisteredToolchains(
- Environment env, BuildConfiguration configuration, List<Label> labels)
+ Environment env, BuildConfigurationValue configuration, List<Label> labels)
throws InterruptedException, RegisteredToolchainsFunctionException {
ImmutableList<SkyKey> keys =
labels.stream()
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
index 17c7fca..49e8042 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredToolchainsValue.java
@@ -33,7 +33,7 @@
public abstract class RegisteredToolchainsValue implements SkyValue {
/** Returns the {@link SkyKey} for {@link RegisteredToolchainsValue}s. */
- public static Key key(BuildConfigurationValue.Key configurationKey) {
+ public static Key key(BuildConfigurationKey configurationKey) {
return Key.of(configurationKey);
}
@@ -42,15 +42,15 @@
static class Key implements SkyKey {
private static final Interner<Key> interners = BlazeInterners.newWeakInterner();
- private final BuildConfigurationValue.Key configurationKey;
+ private final BuildConfigurationKey configurationKey;
- private Key(BuildConfigurationValue.Key configurationKey) {
+ private Key(BuildConfigurationKey configurationKey) {
this.configurationKey = configurationKey;
}
@AutoCodec.Instantiator
@AutoCodec.VisibleForSerialization
- static Key of(BuildConfigurationValue.Key configurationKey) {
+ static Key of(BuildConfigurationKey configurationKey) {
return interners.intern(new Key(configurationKey));
}
@@ -59,7 +59,7 @@
return SkyFunctions.REGISTERED_TOOLCHAINS;
}
- BuildConfigurationValue.Key getConfigurationKey() {
+ BuildConfigurationKey getConfigurationKey() {
return configurationKey;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunction.java
index f8eef44..bbdbf6a 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunction.java
@@ -21,7 +21,7 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.platform.ConstraintCollection;
import com.google.devtools.build.lib.analysis.platform.ConstraintSettingInfo;
@@ -58,11 +58,11 @@
// This call could be combined with the call below, but this SkyFunction is evaluated so rarely
// it's not worth optimizing.
- BuildConfigurationValue value = (BuildConfigurationValue) env.getValue(key.configurationKey());
+ BuildConfigurationValue configuration =
+ (BuildConfigurationValue) env.getValue(key.configurationKey());
if (env.valuesMissing()) {
return null;
}
- BuildConfiguration configuration = value.getConfiguration();
// Get all toolchains.
RegisteredToolchainsValue toolchains;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionValue.java
index a503798..e021b47 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionValue.java
@@ -35,7 +35,7 @@
// A key representing the input data.
public static SingleToolchainResolutionKey key(
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
Label toolchainTypeLabel,
ConfiguredTargetKey targetPlatformKey,
List<ConfiguredTargetKey> availableExecutionPlatformKeys) {
@@ -48,7 +48,7 @@
}
public static SingleToolchainResolutionKey key(
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
Label toolchainTypeLabel,
ConfiguredTargetKey targetPlatformKey,
List<ConfiguredTargetKey> availableExecutionPlatformKeys,
@@ -72,7 +72,7 @@
return SkyFunctions.SINGLE_TOOLCHAIN_RESOLUTION;
}
- abstract BuildConfigurationValue.Key configurationKey();
+ abstract BuildConfigurationKey configurationKey();
public abstract Label toolchainTypeLabel();
@@ -84,7 +84,7 @@
@AutoCodec.Instantiator
static SingleToolchainResolutionKey create(
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
Label toolchainTypeLabel,
ConfiguredTargetKey targetPlatformKey,
List<ConfiguredTargetKey> availableExecutionPlatformKeys,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
index a7eb585..6c5f9fe 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java
@@ -53,8 +53,8 @@
import com.google.devtools.build.lib.analysis.ToolchainCollection;
import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
-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.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.BuildOptions.OptionsDiff;
import com.google.devtools.build.lib.analysis.config.ConfigConditions;
@@ -144,7 +144,7 @@
private final ConfiguredRuleClassProvider ruleClassProvider;
// The host configuration containing all fragments used by this build's transitive closure.
- private BuildConfiguration topLevelHostConfiguration;
+ private BuildConfigurationValue topLevelHostConfiguration;
private BuildConfigurationCollection configurations;
@@ -206,15 +206,16 @@
return null;
}
- ImmutableList<BuildConfiguration> oldTargetConfigs =
+ ImmutableList<BuildConfigurationValue> oldTargetConfigs =
this.configurations.getTargetConfigurations();
- ImmutableList<BuildConfiguration> newTargetConfigs = configurations.getTargetConfigurations();
+ ImmutableList<BuildConfigurationValue> newTargetConfigs =
+ configurations.getTargetConfigurations();
// TODO(schmitt): We are only checking the first of the new configurations, even though (through
// split transitions) we could have more than one. There is some special handling for
// --cpu changing below but other options may also be changed and should be covered.
- BuildConfiguration oldConfig = oldTargetConfigs.get(0);
- BuildConfiguration newConfig = newTargetConfigs.get(0);
+ BuildConfigurationValue oldConfig = oldTargetConfigs.get(0);
+ BuildConfigurationValue newConfig = newTargetConfigs.get(0);
OptionsDiff diff = BuildOptions.diff(oldConfig.getOptions(), newConfig.getOptions());
ImmutableSet<OptionDefinition> nativeCacheInvalidatingDifferences =
@@ -264,9 +265,9 @@
// TODO(schmitt): This method assumes that the only option that can cause multiple target
// configurations is --cpu which (with the presence of split transitions) is no longer true.
private ImmutableSet<OptionDefinition> getNativeCacheInvalidatingDifferences(
- ImmutableList<BuildConfiguration> oldTargetConfigs,
- ImmutableList<BuildConfiguration> newTargetConfigs,
- BuildConfiguration newConfig,
+ ImmutableList<BuildConfigurationValue> oldTargetConfigs,
+ ImmutableList<BuildConfigurationValue> newTargetConfigs,
+ BuildConfigurationValue newConfig,
OptionsDiff diff) {
Stream<OptionDefinition> nativeCacheInvalidatingDifferences =
diff.getFirst().keySet().stream()
@@ -292,9 +293,9 @@
nativeCacheInvalidatingDifferences.filter(
(definition) -> !CoreOptions.CPU.equals(definition));
ImmutableSet<String> oldCpus =
- oldTargetConfigs.stream().map(BuildConfiguration::getCpu).collect(toImmutableSet());
+ oldTargetConfigs.stream().map(BuildConfigurationValue::getCpu).collect(toImmutableSet());
ImmutableSet<String> newCpus =
- newTargetConfigs.stream().map(BuildConfiguration::getCpu).collect(toImmutableSet());
+ newTargetConfigs.stream().map(BuildConfigurationValue::getCpu).collect(toImmutableSet());
if (!Objects.equals(oldCpus, newCpus)) {
// --experimental_multi_cpu has changed, so inject that in the diff stream.
nativeCacheInvalidatingDifferences =
@@ -347,7 +348,7 @@
* Sets the host configuration consisting of all fragments that will be used by the top level
* targets' transitive closures.
*/
- private void setTopLevelHostConfiguration(BuildConfiguration topLevelHostConfiguration) {
+ private void setTopLevelHostConfiguration(BuildConfigurationValue topLevelHostConfiguration) {
if (!topLevelHostConfiguration.equals(this.topLevelHostConfiguration)) {
this.topLevelHostConfiguration = topLevelHostConfiguration;
}
@@ -375,7 +376,7 @@
ExtendedEventHandler eventHandler,
List<ConfiguredTargetKey> ctKeys,
ImmutableList<TopLevelAspectsKey> topLevelAspectsKeys,
- Supplier<Map<BuildConfigurationValue.Key, BuildConfiguration>> configurationLookupSupplier,
+ Supplier<Map<BuildConfigurationKey, BuildConfigurationValue>> configurationLookupSupplier,
TopLevelArtifactContext topLevelArtifactContextForConflictPruning,
EventBus eventBus,
boolean keepGoing,
@@ -565,7 +566,7 @@
}
AnalysisFailedCause failedCause =
makeArtifactConflictAnalysisFailedCause(configurationLookupSupplier, e.get());
- BuildConfigurationValue.Key configKey =
+ BuildConfigurationKey configKey =
ctKey instanceof ConfiguredTargetKey
? ((ConfiguredTargetKey) ctKey).getConfigurationKey()
: ((AspectKey) ctKey).getAspectConfigurationKey();
@@ -695,7 +696,7 @@
}
private static AnalysisFailedCause makeArtifactConflictAnalysisFailedCause(
- Supplier<Map<BuildConfigurationValue.Key, BuildConfiguration>> configurationLookupSupplier,
+ Supplier<Map<BuildConfigurationKey, BuildConfigurationValue>> configurationLookupSupplier,
ConflictException e) {
try {
throw e.rethrowTyped();
@@ -707,16 +708,16 @@
}
private static AnalysisFailedCause makeArtifactConflictAnalysisFailedCause(
- Supplier<Map<BuildConfigurationValue.Key, BuildConfiguration>> configurationLookupSupplier,
+ Supplier<Map<BuildConfigurationKey, BuildConfigurationValue>> configurationLookupSupplier,
ActionConflictException ace) {
DetailedExitCode detailedExitCode = ace.getDetailedExitCode();
Label causeLabel = ace.getArtifact().getArtifactOwner().getLabel();
- BuildConfigurationValue.Key causeConfigKey = null;
+ BuildConfigurationKey causeConfigKey = null;
if (ace.getArtifact().getArtifactOwner() instanceof ConfiguredTargetKey) {
causeConfigKey =
((ConfiguredTargetKey) ace.getArtifact().getArtifactOwner()).getConfigurationKey();
}
- BuildConfiguration causeConfig =
+ BuildConfigurationValue causeConfig =
causeConfigKey == null ? null : configurationLookupSupplier.get().get(causeConfigKey);
return new AnalysisFailedCause(
causeLabel,
@@ -797,14 +798,15 @@
* keepGoing} is false.
*
* <p>Visible only for use by tests via {@link
- * SkyframeExecutor#getConfiguredTargetMapForTesting(ExtendedEventHandler, BuildConfiguration,
- * Iterable)}. When called there, {@code eventBus} must be null to indicate that this is a test,
- * and so there may be additional {@link SkyKey}s in the {@code result} that are not {@link
- * AspectKeyCreator}s or {@link ConfiguredTargetKey}s. Those keys will be ignored.
+ * SkyframeExecutor#getConfiguredTargetMapForTesting(ExtendedEventHandler,
+ * BuildConfigurationValue, Iterable)}. When called there, {@code eventBus} must be null to
+ * indicate that this is a test, and so there may be additional {@link SkyKey}s in the {@code
+ * result} that are not {@link AspectKeyCreator}s or {@link ConfiguredTargetKey}s. Those keys will
+ * be ignored.
*/
static Pair<Boolean, ViewCreationFailedException> processErrors(
EvaluationResult<? extends SkyValue> result,
- Supplier<Map<BuildConfigurationValue.Key, BuildConfiguration>> configurationLookupSupplier,
+ Supplier<Map<BuildConfigurationKey, BuildConfigurationValue>> configurationLookupSupplier,
SkyframeExecutor skyframeExecutor,
ExtendedEventHandler eventHandler,
boolean keepGoing,
@@ -897,7 +899,7 @@
} else if (cause instanceof NoSuchPackageException) {
// This branch is only taken in --nokeep_going builds. In a --keep_going build, the
// AnalysisFailedCause is properly reported through the ConfiguredValueCreationException.
- BuildConfiguration configuration =
+ BuildConfigurationValue configuration =
configurationLookupSupplier.get().get(label.getConfigurationKey());
ConfigurationId configId = configuration.getEventId().getConfiguration();
AnalysisFailedCause analysisFailedCause =
@@ -922,7 +924,7 @@
}
if (!inTest) {
- BuildConfiguration configuration =
+ BuildConfigurationValue configuration =
configurationLookupSupplier.get().get(label.getConfigurationKey());
eventBus.post(
new AnalysisFailureEvent(
@@ -1067,7 +1069,7 @@
ActionLookupKey owner,
ExtendedEventHandler eventHandler,
Environment env,
- BuildConfiguration config,
+ BuildConfigurationValue config,
StarlarkBuiltinsValue starlarkBuiltinsValue) {
boolean extendedSanityChecks = config != null && config.extendedSanityChecks();
boolean allowAnalysisFailures = config != null && config.allowAnalysisFailures();
@@ -1092,7 +1094,7 @@
@Nullable
ConfiguredTarget createConfiguredTarget(
Target target,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
CachingAnalysisEnvironment analysisEnvironment,
ConfiguredTargetKey configuredTargetKey,
OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> prerequisiteMap,
@@ -1124,7 +1126,7 @@
* <p>This may only be called after {@link #setTopLevelHostConfiguration} has set the correct host
* configuration at the top-level.
*/
- public BuildConfiguration getHostConfiguration() {
+ public BuildConfigurationValue getHostConfiguration() {
return topLevelHostConfiguration;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
index c176128..bc7cd48 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java
@@ -20,7 +20,7 @@
import com.google.devtools.build.lib.analysis.DependencyKind;
import com.google.devtools.build.lib.analysis.DependencyResolver;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId;
import com.google.devtools.build.lib.causes.AnalysisFailedCause;
import com.google.devtools.build.lib.causes.Cause;
@@ -145,7 +145,7 @@
fromTarget.getLabel(), label, label.getRepository(), e.getMessage())));
continue;
}
- @Nullable BuildConfiguration configuration = fromNode.getConfiguration();
+ @Nullable BuildConfigurationValue configuration = fromNode.getConfiguration();
@Nullable ConfigurationId configId = null;
if (configuration != null) {
configId = configuration.getEventId().getConfiguration();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index da36b1d..2bb0fd1 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -13,13 +13,16 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
+import static com.google.common.collect.ImmutableList.toImmutableList;
import static com.google.devtools.build.lib.concurrent.Uninterruptibles.callUninterruptibly;
import static com.google.devtools.build.lib.skyframe.ArtifactConflictFinder.ACTION_CONFLICTS;
import static com.google.devtools.build.lib.skyframe.ArtifactConflictFinder.NUM_JOBS;
+import static java.util.stream.Collectors.toMap;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Functions;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
@@ -85,8 +88,8 @@
import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
import com.google.devtools.build.lib.analysis.WorkspaceStatusAction;
import com.google.devtools.build.lib.analysis.WorkspaceStatusAction.Factory;
-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.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.BuildOptionsView;
import com.google.devtools.build.lib.analysis.config.ConfigurationResolver;
@@ -230,7 +233,6 @@
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.function.Supplier;
-import java.util.stream.Collectors;
import javax.annotation.Nullable;
import net.starlark.java.eval.StarlarkSemantics;
@@ -1141,14 +1143,14 @@
return basicAnalysisInvalidatingPredicate(key) || key instanceof ActionLookupData;
}
- // We may also want to remove BuildConfigurationValue.Keys to fix a minor memory leak there.
+ // We may also want to remove BuildConfigurationKey to fix a minor memory leak there.
private static boolean fullAnalysisInvalidatingPredicate(SkyKey key) {
- return basicAnalysisInvalidatingPredicate(key) || key instanceof BuildConfigurationValue.Key;
+ return basicAnalysisInvalidatingPredicate(key) || key instanceof BuildConfigurationKey;
}
private static boolean fullAnalysisInvalidatingPredicateWithActions(SkyKey key) {
return basicAnalysisInvalidatingPredicateWithActions(key)
- || key instanceof BuildConfigurationValue.Key;
+ || key instanceof BuildConfigurationKey;
}
private WorkspaceStatusAction makeWorkspaceStatusAction(String workspaceName) {
@@ -1538,14 +1540,14 @@
configuredTargetProgress.reset();
}
- ImmutableList<BuildConfiguration> topLevelTargetConfigs =
+ ImmutableList<BuildConfigurationValue> topLevelTargetConfigs =
getConfigurations(
eventHandler,
PrepareAnalysisPhaseFunction.getTopLevelBuildOptions(buildOptions, multiCpu),
buildOptions,
keepGoing);
- BuildConfiguration firstTargetConfig = topLevelTargetConfigs.get(0);
+ BuildConfigurationValue firstTargetConfig = topLevelTargetConfigs.get(0);
BuildOptions targetOptions = firstTargetConfig.getOptions();
BuildOptionsView hostTransitionOptionsView =
@@ -1555,7 +1557,7 @@
targetOptions.get(CoreOptions.class).useDistinctHostConfiguration
? HostTransition.INSTANCE.patch(hostTransitionOptionsView, eventHandler)
: targetOptions;
- BuildConfiguration hostConfig = getConfiguration(eventHandler, hostOptions, keepGoing);
+ BuildConfigurationValue hostConfig = getConfiguration(eventHandler, hostOptions, keepGoing);
// TODO(gregce): cache invalid option errors in BuildConfigurationFunction, then use a dedicated
// accessor (i.e. not the event handler) to trigger the exception below.
@@ -1759,7 +1761,7 @@
@ThreadSafety.ThreadSafe
public ImmutableList<ConfiguredTargetAndData> getConfiguredTargetsForTesting(
ExtendedEventHandler eventHandler,
- BuildConfiguration originalConfig,
+ BuildConfigurationValue originalConfig,
Iterable<DependencyKey> keys)
throws TransitionException, InvalidConfigurationException, InterruptedException {
return getConfiguredTargetMapForTesting(eventHandler, originalConfig, keys).values().asList();
@@ -1777,7 +1779,7 @@
@ThreadSafety.ThreadSafe
public ImmutableMultimap<DependencyKey, ConfiguredTargetAndData> getConfiguredTargetMapForTesting(
ExtendedEventHandler eventHandler,
- BuildConfigurationValue.Key originalConfig,
+ BuildConfigurationKey originalConfig,
Iterable<DependencyKey> keys)
throws InvalidConfigurationException, InterruptedException {
return getConfiguredTargetMapForTesting(
@@ -1797,12 +1799,12 @@
private ImmutableMultimap<DependencyKey, ConfiguredTargetAndData>
getConfiguredTargetMapForTesting(
ExtendedEventHandler eventHandler,
- BuildConfiguration originalConfig,
+ BuildConfigurationValue originalConfig,
Iterable<DependencyKey> keys)
throws InvalidConfigurationException, InterruptedException {
checkActive();
- Multimap<DependencyKey, BuildConfiguration> configs;
+ Multimap<DependencyKey, BuildConfigurationValue> configs;
if (originalConfig != null) {
configs =
getConfigurations(eventHandler, originalConfig.getOptions(), keys).getConfigurationMap();
@@ -1820,7 +1822,7 @@
// it couldn't be loaded). Exclude it from the results.
continue;
}
- for (BuildConfiguration depConfig : configs.get(key)) {
+ for (BuildConfigurationValue depConfig : configs.get(key)) {
skyKeys.add(
ConfiguredTargetKey.builder()
.setLabel(key.getLabel())
@@ -1853,7 +1855,7 @@
// it couldn't be loaded). Exclude it from the results.
continue;
}
- for (BuildConfiguration depConfig : configs.get(key)) {
+ for (BuildConfigurationValue depConfig : configs.get(key)) {
SkyKey configuredTargetKey =
ConfiguredTargetKey.builder()
.setLabel(key.getLabel())
@@ -1896,13 +1898,13 @@
try {
ConfiguredTarget mergedTarget =
MergedConfiguredTarget.of(configuredTarget, configuredAspects);
- BuildConfigurationValue.Key configKey = mergedTarget.getConfigurationKey();
- BuildConfiguration resolvedConfig = depConfig;
+ BuildConfigurationKey configKey = mergedTarget.getConfigurationKey();
+ BuildConfigurationValue resolvedConfig = depConfig;
if (configKey == null) {
// Unfortunately, it's possible to get a configured target with a null configuration
// when depConfig is non-null, so we need to explicitly override it in that case.
resolvedConfig = null;
- } else if (!configKey.equals(BuildConfigurationValue.key(depConfig))) {
+ } else if (!configKey.equals(depConfig.getKey())) {
resolvedConfig = getConfiguration(eventHandler, mergedTarget.getConfigurationKey());
}
cts.put(
@@ -1924,12 +1926,10 @@
aliasPackageValues = evaluateSkyKeys(eventHandler, aliasPackagesToFetch);
keysToProcess = aliasKeysToRedo;
}
- Supplier<Map<BuildConfigurationValue.Key, BuildConfiguration>> configurationLookupSupplier =
+ Supplier<Map<BuildConfigurationKey, BuildConfigurationValue>> configurationLookupSupplier =
() ->
configs.values().stream()
- .collect(
- Collectors.toMap(
- BuildConfigurationValue::key, java.util.function.Function.identity()));
+ .collect(toMap(BuildConfigurationValue::getKey, Functions.identity()));
// We ignore the return value here because tests effectively run with --keep_going, and the
// loading-phase-error bit is only needed if we're constructing a SkyframeAnalysisResult.
SkyframeBuildView.processErrors(
@@ -1949,31 +1949,29 @@
* @throws InvalidConfigurationException if the build options produces an invalid configuration
*/
@Deprecated
- public BuildConfiguration getConfiguration(
+ public BuildConfigurationValue getConfiguration(
ExtendedEventHandler eventHandler, BuildOptions options, boolean keepGoing)
throws InvalidConfigurationException {
return Iterables.getOnlyElement(
getConfigurations(eventHandler, ImmutableList.of(options), options, keepGoing));
}
- public BuildConfiguration getConfiguration(
- ExtendedEventHandler eventHandler, BuildConfigurationValue.Key configurationKey) {
+ public BuildConfigurationValue getConfiguration(
+ ExtendedEventHandler eventHandler, BuildConfigurationKey configurationKey) {
if (configurationKey == null) {
return null;
}
- return ((BuildConfigurationValue)
- evaluateSkyKeys(eventHandler, ImmutableList.of(configurationKey)).get(configurationKey))
- .getConfiguration();
+ return (BuildConfigurationValue)
+ evaluateSkyKeys(eventHandler, ImmutableList.of(configurationKey)).get(configurationKey);
}
- public Map<BuildConfigurationValue.Key, BuildConfiguration> getConfigurations(
- ExtendedEventHandler eventHandler, Collection<BuildConfigurationValue.Key> keys) {
+ public Map<BuildConfigurationKey, BuildConfigurationValue> getConfigurations(
+ ExtendedEventHandler eventHandler, Collection<BuildConfigurationKey> keys) {
EvaluationResult<SkyValue> evaluationResult = evaluateSkyKeys(eventHandler, keys);
return keys.stream()
.collect(
- Collectors.toMap(
- java.util.function.Function.identity(),
- (key) -> ((BuildConfigurationValue) evaluationResult.get(key)).getConfiguration()));
+ toMap(
+ Functions.identity(), key -> (BuildConfigurationValue) evaluationResult.get(key)));
}
/**
* Returns the configurations corresponding to the given sets of build options. Output order is
@@ -1982,7 +1980,7 @@
* @throws InvalidConfigurationException if any build options produces an invalid configuration
*/
// TODO(ulfjack): Remove this legacy method after switching to the Skyframe-based implementation.
- private ImmutableList<BuildConfiguration> getConfigurations(
+ private ImmutableList<BuildConfigurationValue> getConfigurations(
ExtendedEventHandler eventHandler,
List<BuildOptions> optionsList,
BuildOptions referenceBuildOptions,
@@ -2028,8 +2026,8 @@
// Prepare and return the results.
return configSkyKeys.stream()
- .map(key -> ((BuildConfigurationValue) evalResult.get(key)).getConfiguration())
- .collect(ImmutableList.toImmutableList());
+ .map(key -> (BuildConfigurationValue) evalResult.get(key))
+ .collect(toImmutableList());
}
/**
@@ -2096,12 +2094,12 @@
}
for (BuildOptions toOption : toOptions) {
- BuildConfigurationValue.Key configKey =
+ BuildConfigurationKey configKey =
toConfigurationKey(platformMappingValue, allFragments, toOption);
BuildConfigurationValue configValue =
(BuildConfigurationValue) configsResult.get(configKey);
if (configValue != null) {
- builder.put(key, configValue.getConfiguration());
+ builder.put(key, configValue);
} else if (configsResult.errorMap().containsKey(configKey)) {
ErrorInfo configError = configsResult.getError(configKey);
if (configError.getException() instanceof InvalidConfigurationException) {
@@ -2117,11 +2115,11 @@
return builder.build();
}
- /** Returns every {@link BuildConfigurationValue.Key} in the graph. */
+ /** Returns every {@link BuildConfigurationKey} in the graph. */
public Collection<SkyKey> getTransitiveConfigurationKeys() {
return memoizingEvaluator.getDoneValues().keySet().stream()
.filter(key -> SkyFunctions.BUILD_CONFIGURATION.equals(key.functionName()))
- .collect(ImmutableList.toImmutableList());
+ .collect(toImmutableList());
}
private PlatformMappingValue getPlatformMappingValue(
@@ -2141,13 +2139,13 @@
return (PlatformMappingValue) evaluationResult.get(platformMappingKey);
}
- private static BuildConfigurationValue.Key toConfigurationKey(
+ private static BuildConfigurationKey toConfigurationKey(
PlatformMappingValue platformMappingValue,
FragmentClassSet depFragments,
BuildOptions toOption)
throws InvalidConfigurationException {
try {
- return BuildConfigurationValue.keyWithPlatformMapping(
+ return BuildConfigurationKey.withPlatformMapping(
platformMappingValue, depFragments, toOption);
} catch (OptionsParsingException e) {
throw new InvalidConfigurationException(Code.INVALID_BUILD_OPTIONS, e);
@@ -2241,28 +2239,26 @@
* options.
*/
@VisibleForTesting
- public BuildConfiguration getConfigurationForTesting(
+ public BuildConfigurationValue getConfigurationForTesting(
ExtendedEventHandler eventHandler, FragmentClassSet fragments, BuildOptions options)
throws InterruptedException, OptionsParsingException, InvalidConfigurationException {
SkyKey key =
- BuildConfigurationValue.keyWithPlatformMapping(
+ BuildConfigurationKey.withPlatformMapping(
getPlatformMappingValue(eventHandler, options), fragments, options);
- BuildConfigurationValue result =
- (BuildConfigurationValue)
- evaluate(
- ImmutableList.of(key),
- /*keepGoing=*/ false,
- /*numThreads=*/ DEFAULT_THREAD_COUNT,
- eventHandler)
- .get(key);
- return result.getConfiguration();
+ return (BuildConfigurationValue)
+ evaluate(
+ ImmutableList.of(key),
+ /*keepGoing=*/ false,
+ /*numThreads=*/ DEFAULT_THREAD_COUNT,
+ eventHandler)
+ .get(key);
}
/** Returns a particular configured target. */
@VisibleForTesting
@Nullable
public ConfiguredTarget getConfiguredTargetForTesting(
- ExtendedEventHandler eventHandler, Label label, BuildConfiguration configuration)
+ ExtendedEventHandler eventHandler, Label label, BuildConfigurationValue configuration)
throws TransitionException, InvalidConfigurationException, InterruptedException {
return getConfiguredTargetForTesting(eventHandler, label, configuration, NoTransition.INSTANCE);
}
@@ -2273,7 +2269,7 @@
public ConfiguredTarget getConfiguredTargetForTesting(
ExtendedEventHandler eventHandler,
Label label,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
ConfigurationTransition transition)
throws TransitionException, InvalidConfigurationException, InterruptedException {
ConfiguredTargetAndData configuredTargetAndData =
@@ -2286,7 +2282,7 @@
public ConfiguredTargetAndData getConfiguredTargetAndDataForTesting(
ExtendedEventHandler eventHandler,
Label label,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
ConfigurationTransition transition)
throws TransitionException, InvalidConfigurationException, InterruptedException {
@@ -2303,7 +2299,7 @@
@VisibleForTesting
@Nullable
public ConfiguredTargetAndData getConfiguredTargetAndDataForTesting(
- ExtendedEventHandler eventHandler, Label label, BuildConfiguration configuration)
+ ExtendedEventHandler eventHandler, Label label, BuildConfigurationValue configuration)
throws TransitionException, InvalidConfigurationException, InterruptedException {
return getConfiguredTargetAndDataForTesting(
eventHandler, label, configuration, NoTransition.INSTANCE);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainContextKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainContextKey.java
index 3033a02..786b3bd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainContextKey.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainContextKey.java
@@ -42,7 +42,7 @@
return SkyFunctions.TOOLCHAIN_RESOLUTION;
}
- abstract BuildConfigurationValue.Key configurationKey();
+ abstract BuildConfigurationKey configurationKey();
abstract ImmutableSet<Label> requiredToolchainTypeLabels();
@@ -55,7 +55,7 @@
/** Builder for {@link ToolchainContextKey}. */
@AutoValue.Builder
public interface Builder {
- Builder configurationKey(BuildConfigurationValue.Key key);
+ Builder configurationKey(BuildConfigurationKey key);
Builder requiredToolchainTypeLabels(ImmutableSet<Label> requiredToolchainTypeLabels);
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunction.java
index f579293..a8390ec 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainResolutionFunction.java
@@ -27,7 +27,7 @@
import com.google.common.collect.Iterables;
import com.google.common.collect.Table;
import com.google.devtools.build.lib.analysis.PlatformConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue;
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.analysis.platform.ToolchainTypeInfo;
@@ -70,12 +70,11 @@
UnloadedToolchainContextImpl.builder().setKey(key);
// Determine the configuration being used.
- BuildConfigurationValue value =
+ BuildConfigurationValue configuration =
(BuildConfigurationValue) env.getValue(key.configurationKey());
- if (value == null) {
+ if (configuration == null) {
throw new ValueMissingException();
}
- BuildConfiguration configuration = value.getConfiguration();
PlatformConfiguration platformConfiguration =
Preconditions.checkNotNull(configuration.getFragment(PlatformConfiguration.class));
@@ -149,7 +148,7 @@
/** Returns a map from the requested toolchain type to the {@link ToolchainTypeInfo} provider. */
private static ImmutableMap<Label, ToolchainTypeInfo> loadToolchainTypes(
Environment environment,
- BuildConfiguration configuration,
+ BuildConfigurationValue configuration,
ImmutableSet<Label> requestedToolchainTypeLabels)
throws InvalidToolchainTypeException, InterruptedException, ValueMissingException {
ImmutableSet<ConfiguredTargetKey> toolchainTypeKeys =
@@ -208,8 +207,8 @@
private static PlatformKeys loadPlatformKeys(
SkyFunction.Environment environment,
boolean debug,
- BuildConfigurationValue.Key configurationKey,
- BuildConfiguration configuration,
+ BuildConfigurationKey configurationKey,
+ BuildConfigurationValue configuration,
PlatformConfiguration platformConfiguration,
ImmutableSet<Label> execConstraintLabels)
throws InterruptedException, ValueMissingException, InvalidConstraintValueException,
@@ -251,8 +250,8 @@
private static ImmutableList<ConfiguredTargetKey> loadExecutionPlatformKeys(
SkyFunction.Environment environment,
boolean debug,
- BuildConfigurationValue.Key configurationKey,
- BuildConfiguration configuration,
+ BuildConfigurationKey configurationKey,
+ BuildConfigurationValue configuration,
ConfiguredTargetKey defaultPlatformKey,
ImmutableSet<Label> execConstraintLabels)
throws InterruptedException, ValueMissingException, InvalidConstraintValueException,
@@ -352,7 +351,7 @@
private static void determineToolchainImplementations(
Environment environment,
- BuildConfigurationValue.Key configurationKey,
+ BuildConfigurationKey configurationKey,
ImmutableSet<Label> requiredToolchainTypeLabels,
Optional<ConfiguredTargetKey> forcedExecutionPlatform,
UnloadedToolchainContextImpl.Builder builder,
@@ -428,7 +427,7 @@
platformKeys.executionPlatformKeys(),
resolvedToolchains);
- if (!selectedExecutionPlatformKey.isPresent()) {
+ if (selectedExecutionPlatformKey.isEmpty()) {
throw new NoMatchingPlatformException(
requiredToolchainTypeLabels,
platformKeys.executionPlatformKeys(),