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.
    */