Push DependencyKind a bit further in the call stack, up until RuleContext.
This allows the code to be a bit saner by not pretending that all dependencies are attributes or (arguably worse) putting items with null keys in the prerequisite map (was used for visibility and generating rule dependencies)
RELNOTES: None.
PiperOrigin-RevId: 233023131
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index 789ce09..6175761 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -26,6 +26,8 @@
import com.google.devtools.build.lib.analysis.ConfiguredAspect;
import com.google.devtools.build.lib.analysis.ConfiguredAspectFactory;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.DependencyResolver;
+import com.google.devtools.build.lib.analysis.DependencyResolver.DependencyKind;
import com.google.devtools.build.lib.analysis.DependencyResolver.InconsistentAspectOrderException;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.ToolchainContext;
@@ -48,7 +50,6 @@
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.Aspect;
import com.google.devtools.build.lib.packages.AspectDescriptor;
-import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.BuildFileContainsErrorsException;
import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
@@ -432,7 +433,7 @@
}
}
- OrderedSetMultimap<Attribute, ConfiguredTargetAndData> depValueMap;
+ OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> depValueMap;
try {
depValueMap =
ConfiguredTargetFunction.computeDependencies(
@@ -463,7 +464,8 @@
// Load the requested toolchains into the ToolchainContext, now that we have dependencies.
ToolchainContext toolchainContext = null;
if (unloadedToolchainContext != null) {
- toolchainContext = unloadedToolchainContext.load(depValueMap);
+ toolchainContext =
+ unloadedToolchainContext.load(depValueMap.get(DependencyResolver.TOOLCHAIN_DEPENDENCY));
}
return createAspect(
@@ -601,7 +603,7 @@
BuildConfiguration aspectConfiguration,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
ToolchainContext toolchainContext,
- OrderedSetMultimap<Attribute, ConfiguredTargetAndData> directDeps,
+ OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> directDeps,
@Nullable NestedSetBuilder<Package> transitivePackagesForPackageRootResolution)
throws AspectFunctionException, InterruptedException {