Add key() method to ToolchainContext.
Cleanup leading to toolchain transitions, #10523.
Closes #11337.
PiperOrigin-RevId: 311148682
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 e3e8b02..ad2a017 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -407,6 +407,7 @@
"//src/main/java/com/google/devtools/build/lib/skyframe:configured_value_creation_exception",
"//src/main/java/com/google/devtools/build/lib/skyframe:package_value",
"//src/main/java/com/google/devtools/build/lib/skyframe:precomputed_value",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:toolchain_context_key",
"//src/main/java/com/google/devtools/build/lib/skyframe:toolchain_exception",
"//src/main/java/com/google/devtools/build/lib/skyframe:transitive_target_key",
"//src/main/java/com/google/devtools/build/lib/skyframe:transitive_target_value",
@@ -1018,6 +1019,7 @@
deps = [
"//src/main/java/com/google/devtools/build/lib/analysis/platform",
"//src/main/java/com/google/devtools/build/lib/cmdline",
+ "//src/main/java/com/google/devtools/build/lib/skyframe:toolchain_context_key",
"//third_party:guava",
],
)
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ResolvedToolchainContext.java b/src/main/java/com/google/devtools/build/lib/analysis/ResolvedToolchainContext.java
index e5c79c4..66bec0b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ResolvedToolchainContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ResolvedToolchainContext.java
@@ -90,6 +90,7 @@
return new AutoValue_ResolvedToolchainContext(
// super:
+ unloadedToolchainContext.key(),
unloadedToolchainContext.executionPlatform(),
unloadedToolchainContext.targetPlatform(),
unloadedToolchainContext.requiredToolchainTypes(),
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ToolchainContext.java b/src/main/java/com/google/devtools/build/lib/analysis/ToolchainContext.java
index 5753223..a14c8e1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ToolchainContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ToolchainContext.java
@@ -17,9 +17,12 @@
import com.google.devtools.build.lib.analysis.platform.PlatformInfo;
import com.google.devtools.build.lib.analysis.platform.ToolchainTypeInfo;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.skyframe.ToolchainContextKey;
/** Represents the data needed for a specific target's use of toolchains and platforms. */
public interface ToolchainContext {
+ /** Returns the key that identifies this context. */
+ ToolchainContextKey key();
/** Returns the selected execution platform that these toolchains use. */
PlatformInfo executionPlatform();
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 4db4eaf..26f4ce5 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
@@ -65,7 +65,8 @@
ToolchainContextKey key = (ToolchainContextKey) skyKey.argument();
try {
- UnloadedToolchainContextImpl.Builder builder = UnloadedToolchainContextImpl.builder();
+ UnloadedToolchainContextImpl.Builder builder =
+ UnloadedToolchainContextImpl.builder().setKey(key);
// Determine the configuration being used.
BuildConfigurationValue value =
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/UnloadedToolchainContextImpl.java b/src/main/java/com/google/devtools/build/lib/skyframe/UnloadedToolchainContextImpl.java
index 424d642..67a547c 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/UnloadedToolchainContextImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/UnloadedToolchainContextImpl.java
@@ -37,6 +37,9 @@
/** Builder class to help create the {@link UnloadedToolchainContextImpl}. */
@AutoValue.Builder
public interface Builder {
+ /** Sets the key that identifies this context. */
+ Builder setKey(ToolchainContextKey key);
+
/** Sets the selected execution platform that these toolchains use. */
Builder setExecutionPlatform(PlatformInfo executionPlatform);