Save information about transitive packages in ConfiguredTargetValue and AspectValue.
--
MOS_MIGRATED_REVID=102643564
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 eb3b934..a4d54c0 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
@@ -25,10 +25,12 @@
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
+import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.AspectFactory;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
+import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.packages.Target;
@@ -61,6 +63,7 @@
public SkyValue compute(SkyKey skyKey, Environment env)
throws AspectFunctionException {
SkyframeBuildView view = buildViewProvider.getSkyframeBuildView();
+ NestedSetBuilder<Package> transitivePackages = NestedSetBuilder.stableOrder();
AspectKey key = (AspectKey) skyKey.argument();
ConfiguredAspectFactory aspectFactory =
(ConfiguredAspectFactory) AspectFactory.Util.create(key.getAspect());
@@ -109,8 +112,8 @@
try {
// Get the configuration targets that trigger this rule's configurable attributes.
- Set<ConfigMatchingProvider> configConditions =
- ConfiguredTargetFunction.getConfigConditions(target, env, resolver, ctgValue);
+ Set<ConfigMatchingProvider> configConditions = ConfiguredTargetFunction.getConfigConditions(
+ target, env, resolver, ctgValue, transitivePackages);
if (configConditions == null) {
// Those targets haven't yet been resolved.
return null;
@@ -119,9 +122,11 @@
ListMultimap<Attribute, ConfiguredTarget> depValueMap =
ConfiguredTargetFunction.computeDependencies(env, resolver, ctgValue,
aspectFactory.getDefinition(), key.getParameters(), configConditions,
- ruleClassProvider, view.getHostConfiguration(ctgValue.getConfiguration()));
+ ruleClassProvider, view.getHostConfiguration(ctgValue.getConfiguration()),
+ transitivePackages);
- return createAspect(env, key, associatedTarget, configConditions, depValueMap);
+ return createAspect(env, key, associatedTarget, configConditions, depValueMap,
+ transitivePackages);
} catch (DependencyEvaluationException e) {
throw new AspectFunctionException(e.getRootCauseSkyKey(), e.getCause());
}
@@ -130,7 +135,10 @@
@Nullable
private AspectValue createAspect(Environment env, AspectKey key,
RuleConfiguredTarget associatedTarget, Set<ConfigMatchingProvider> configConditions,
- ListMultimap<Attribute, ConfiguredTarget> directDeps) throws AspectFunctionException {
+ ListMultimap<Attribute, ConfiguredTarget> directDeps,
+ NestedSetBuilder<Package> transitivePackages)
+ throws AspectFunctionException {
+
SkyframeBuildView view = buildViewProvider.getSkyframeBuildView();
BuildConfiguration configuration = associatedTarget.getConfiguration();
@@ -168,7 +176,8 @@
associatedTarget.getLabel(),
associatedTarget.getTarget().getLocation(),
aspect,
- ImmutableList.copyOf(analysisEnvironment.getRegisteredActions()));
+ ImmutableList.copyOf(analysisEnvironment.getRegisteredActions()),
+ transitivePackages.build());
}
@Nullable
@@ -176,7 +185,7 @@
public String extractTag(SkyKey skyKey) {
return null;
}
-
+
/**
* An exception indicating that there was a problem creating an aspect.
*/