aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Liam Miller-Cushon <cushon@google.com>2015-12-15 19:45:43 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2015-12-16 11:39:17 +0000
commitcd1f3db862548a77f912ba4cc566f624da7d326d (patch)
treeda06619b065456386af981cae52a1d784f9afc57
parent5d6a0196cdef78e1069468db4c13dc18fe0ad47e (diff)
Fix transitive native library collection in android_library
Native dependencies should be collected from both deps and exports. -- MOS_MIGRATED_REVID=110279453
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java9
2 files changed, 13 insertions, 7 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 11c9b0b7e0..4b1262a343 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -103,6 +103,17 @@ public class AndroidCommon {
return builder.build();
}
+ public static final Iterable<TransitiveInfoCollection> collectTransitiveInfo(
+ RuleContext ruleContext, Mode mode) {
+ ImmutableList.Builder<TransitiveInfoCollection> builder = ImmutableList.builder();
+ for (String attr : TRANSITIVE_ATTRIBUTES) {
+ if (ruleContext.getAttribute(attr) != null) {
+ builder.addAll(ruleContext.getPrerequisites(attr, mode));
+ }
+ }
+ return builder.build();
+ }
+
private final RuleContext ruleContext;
private final JavaCommon javaCommon;
private final boolean asNeverLink;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
index 565162b22e..9cb6d2d73c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java
@@ -21,7 +21,6 @@ import com.google.devtools.build.lib.analysis.OutputGroupProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
-import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -43,8 +42,6 @@ import com.google.devtools.build.lib.rules.java.ProguardSpecProvider;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.vfs.PathFragment;
-import java.util.List;
-
/**
* An implementation for the "android_library" rule.
*/
@@ -60,12 +57,11 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
if (!AndroidSdkProvider.verifyPresence(ruleContext)) {
return null;
}
- List<? extends TransitiveInfoCollection> deps =
- ruleContext.getPrerequisites("deps", Mode.TARGET);
checkResourceInlining(ruleContext);
NestedSetBuilder<Aar> transitiveAars = collectTransitiveAars(ruleContext);
NestedSet<LinkerInput> transitiveNativeLibraries =
- AndroidCommon.collectTransitiveNativeLibraries(deps);
+ AndroidCommon.collectTransitiveNativeLibraries(
+ AndroidCommon.collectTransitiveInfo(ruleContext, Mode.TARGET));
NestedSet<Artifact> transitiveProguardConfigs =
new ProguardLibrary(ruleContext).collectProguardSpecs();
JavaCommon javaCommon = new JavaCommon(ruleContext, javaSemantics);
@@ -222,4 +218,3 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
return builder;
}
}
-