In apple_binary, propagate cc_library dependencies for all child configurations of the split transition
--
MOS_MIGRATED_REVID=121146341
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index cc3118b..9c85ce9 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -696,8 +696,7 @@
AnalysisUtils.checkProvider(classType);
List<? extends TransitiveInfoCollection> transitiveInfoCollections =
getPrerequisites(attributeName, mode);
-
- // Use an ImmutableListMultimap.Builder here to preserve ordering.
+
ImmutableListMultimap.Builder<BuildConfiguration, C> result =
ImmutableListMultimap.builder();
for (TransitiveInfoCollection prerequisite : transitiveInfoCollections) {
@@ -710,6 +709,24 @@
}
/**
+ * For a given attribute, returns all {@link TransitiveInfoCollection}s provided by targets
+ * of that attribute. Each {@link TransitiveInfoCollection} is keyed by the
+ * {@link BuildConfiguration} under which the collection was created.
+ */
+ public ImmutableListMultimap<BuildConfiguration, TransitiveInfoCollection>
+ getPrerequisitesByConfiguration(String attributeName, Mode mode) {
+ List<? extends TransitiveInfoCollection> transitiveInfoCollections =
+ getPrerequisites(attributeName, mode);
+
+ ImmutableListMultimap.Builder<BuildConfiguration, TransitiveInfoCollection> result =
+ ImmutableListMultimap.builder();
+ for (TransitiveInfoCollection prerequisite : transitiveInfoCollections) {
+ result.put(prerequisite.getConfiguration(), prerequisite);
+ }
+ return result.build();
+ }
+
+ /**
* Returns all the providers of the specified type that are listed under the specified attribute
* of this target in the BUILD file.
*/