Fix users of toolchain resolution to call the new skyfunction.
Part of work on execution transitions, #7935.
Closes #8102.
PiperOrigin-RevId: 244878862
diff --git a/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java
index dff58a5..edefd40 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.query2;
+
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -368,17 +369,26 @@
protected abstract RuleConfiguredTarget getRuleConfiguredTarget(T target);
+ protected Collection<T> targetifyValues(Iterable<SkyKey> dependencies)
+ throws InterruptedException {
+ Collection<T> values = new ArrayList<>();
+ for (SkyKey key : dependencies) {
+ if (key.functionName().equals(SkyFunctions.CONFIGURED_TARGET)) {
+ values.add(getValueFromKey(key));
+ } else if (key.functionName().equals(SkyFunctions.TOOLCHAIN_RESOLUTION)) {
+ // Also fetch these dependencies.
+ Collection<T> toolchainDeps = targetifyValues(graph.getDirectDeps(key));
+ values.addAll(toolchainDeps);
+ }
+ }
+ return values;
+ }
+
protected Map<SkyKey, Collection<T>> targetifyValues(
Map<SkyKey, ? extends Iterable<SkyKey>> input) throws InterruptedException {
Map<SkyKey, Collection<T>> result = new HashMap<>();
for (Map.Entry<SkyKey, ? extends Iterable<SkyKey>> entry : input.entrySet()) {
- Collection<T> value = new ArrayList<>();
- for (SkyKey key : entry.getValue()) {
- if (key.functionName().equals(SkyFunctions.CONFIGURED_TARGET)) {
- value.add(getValueFromKey(key));
- }
- }
- result.put(entry.getKey(), value);
+ result.put(entry.getKey(), targetifyValues(entry.getValue()));
}
return result;
}