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/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,