diff options
author | janakr <janakr@google.com> | 2018-01-11 15:49:42 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-11 15:51:40 -0800 |
commit | 3863b536bcab8de2000f342c85c31c7ea91cccbe (patch) | |
tree | 4797a2d516587e1cf99cc912bc3a18763c07e0ce /src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java | |
parent | 1a19b62bc493d83734c34c888401d5c45e8bf55c (diff) |
Stop including BuildConfiguration inside ConfiguredTargetKey: it's too heavyweight. For now, put a BuildConfigurationValue.Key in there. In the future, we may want to put some kind of "delta" key in.
PiperOrigin-RevId: 181673805
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.java | 25 |
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? |