aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java25
1 files changed, 19 insertions, 6 deletions
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 258223b3f0..4a80c7ab24 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
@@ -139,16 +139,29 @@ public final class ConfiguredTargetFunction implements SkyFunction {
NestedSetBuilder<Package> transitivePackagesForPackageRootResolution =
storeTransitivePackagesForPackageRootResolution ? NestedSetBuilder.stableOrder() : null;
NestedSetBuilder<Label> transitiveLoadingRootCauses = NestedSetBuilder.stableOrder();
+
ConfiguredTargetKey configuredTargetKey = (ConfiguredTargetKey) key.argument();
Label label = configuredTargetKey.getLabel();
-
- BuildConfiguration configuration = configuredTargetKey.getConfiguration();
-
- PackageValue packageValue =
- (PackageValue) env.getValue(PackageValue.key(label.getPackageIdentifier()));
- if (packageValue == null) {
+ BuildConfiguration configuration = null;
+ ImmutableSet<SkyKey> packageAndMaybeConfiguration;
+ SkyKey packageKey = PackageValue.key(label.getPackageIdentifier());
+ SkyKey configurationKeyMaybe = configuredTargetKey.getConfigurationKey();
+ if (configurationKeyMaybe == null) {
+ packageAndMaybeConfiguration = ImmutableSet.of(packageKey);
+ } else {
+ packageAndMaybeConfiguration = ImmutableSet.of(packageKey, configurationKeyMaybe);
+ }
+ Map<SkyKey, SkyValue> packageAndMaybeConfigurationValues =
+ env.getValues(packageAndMaybeConfiguration);
+ if (env.valuesMissing()) {
return null;
}
+ PackageValue packageValue = (PackageValue) packageAndMaybeConfigurationValues.get(packageKey);
+ if (configurationKeyMaybe != null) {
+ configuration =
+ ((BuildConfigurationValue) packageAndMaybeConfigurationValues.get(configurationKeyMaybe))
+ .getConfiguration();
+ }
// TODO(ulfjack): This tries to match the logic in TransitiveTargetFunction /
// TargetMarkerFunction. Maybe we can merge the two?