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;
}