Expose the build configuration key through `ConfiguredObjectValue`. PiperOrigin-RevId: 392535347
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectValue.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectValue.java index 0c18c7f..c78743f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AspectValue.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectValue.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.packages.Aspect; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.skyframe.AspectValueKey.AspectKey; +import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; import javax.annotation.Nullable; import net.starlark.java.syntax.Location; @@ -88,6 +89,17 @@ } @Override + public ProviderCollection getConfiguredObject() { + return getConfiguredAspect(); + } + + @Override + @Nullable + public BuildConfigurationValue.Key getConfigurationKey() { + return key.getAspectConfigurationKey(); + } + + @Override public String toString() { return getStringHelper() .add("key", key) @@ -96,9 +108,4 @@ .add("configuredAspect", configuredAspect) .toString(); } - - @Override - public ProviderCollection getConfiguredObject() { - return getConfiguredAspect(); - } }
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 4ed66f2..3e7d5c7 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -667,7 +667,9 @@ ":provider_collection", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//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/skyframe", + "//third_party:jsr305", ], ) @@ -700,6 +702,8 @@ deps = [ ":configured_object_value", ":configured_target", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//third_party:jsr305", ], )
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredObjectValue.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredObjectValue.java index b06000a..3a6b8eb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredObjectValue.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredObjectValue.java
@@ -15,7 +15,9 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.Package; +import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; import com.google.devtools.build.skyframe.NotComparableSkyValue; +import javax.annotation.Nullable; /** * Super-interface for {@link ConfiguredTargetValue} and {@link RuleConfiguredObjectValue} @@ -26,6 +28,13 @@ ProviderCollection getConfiguredObject(); /** + * Returns a key representing the configuration in which this value was analyzed, or {@code null} + * if no configuration was considered. + */ + @Nullable + BuildConfigurationValue.Key getConfigurationKey(); + + /** * Returns the set of packages transitively loaded by this value. Must only be used for * constructing the package -> source root map needed for some builds. If the caller has not * specified that this map needs to be constructed (via the constructor argument in {@link
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetValue.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetValue.java index 63376da..0cc86c9 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetValue.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetValue.java
@@ -14,6 +14,9 @@ package com.google.devtools.build.lib.analysis; +import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import javax.annotation.Nullable; + /** A {@link com.google.devtools.build.skyframe.SkyValue} for a {@link ConfiguredTarget}. */ public interface ConfiguredTargetValue extends ConfiguredObjectValue { @@ -24,4 +27,10 @@ default ConfiguredTarget getConfiguredObject() { return getConfiguredTarget(); } + + @Override + @Nullable + default BuildConfigurationValue.Key getConfigurationKey() { + return getConfiguredTarget().getConfigurationKey(); + } }
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValueKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValueKey.java index f97e08d..8ad02a8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectValueKey.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectValueKey.java
@@ -218,7 +218,7 @@ * base target's configuration. */ @Nullable - BuildConfigurationValue.Key getAspectConfigurationKey() { + public BuildConfigurationValue.Key getAspectConfigurationKey() { return aspectConfigurationKey; }