aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-02-15 17:11:03 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-15 17:12:36 -0800
commit8c4c5eb324ead15bcf4476c1179dcffcd1caecf9 (patch)
tree9112eccbaad159221351b9e23e997172e08b53b0 /src/main
parentc7a56bc320211d638fec528f82a3ffb060303a6c (diff)
Expose aar native libs to skylark.
PiperOrigin-RevId: 185927949
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsInfo.java (renamed from src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsProvider.java)25
6 files changed, 34 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index 76ccfbf93e..6a90a1f51d 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -68,6 +68,7 @@ import com.google.devtools.build.lib.rules.android.AndroidSkylarkCommon;
import com.google.devtools.build.lib.rules.android.ApkInfo;
import com.google.devtools.build.lib.rules.android.DeviceBrokerInfo;
import com.google.devtools.build.lib.rules.android.DexArchiveAspect;
+import com.google.devtools.build.lib.rules.android.NativeLibsZipsInfo;
import com.google.devtools.build.lib.rules.config.ConfigRules;
import com.google.devtools.build.lib.rules.core.CoreRules;
import com.google.devtools.build.lib.rules.cpp.proto.CcProtoAspect;
@@ -221,6 +222,8 @@ public class BazelRuleClassProvider {
DeviceBrokerInfo.PROVIDER.getName(), DeviceBrokerInfo.PROVIDER);
builder.addSkylarkAccessibleTopLevels(
AndroidResourcesInfo.PROVIDER.getName(), AndroidResourcesInfo.PROVIDER);
+ builder.addSkylarkAccessibleTopLevels(
+ NativeLibsZipsInfo.PROVIDER.getName(), NativeLibsZipsInfo.PROVIDER);
try {
builder.addWorkspaceFilePrefix(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index 05e85d2467..c2b987b4a7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -162,9 +162,8 @@ public class AarImport implements RuleConfiguredTargetFactory {
JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext())
.addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY)
.addNativeDeclaredProvider(resourceApk.toResourceInfo(ruleContext.getLabel()))
- .addProvider(
- NativeLibsZipsProvider.class,
- new NativeLibsZipsProvider(
+ .addNativeDeclaredProvider(
+ new NativeLibsZipsInfo(
AndroidCommon.collectTransitiveNativeLibsZips(ruleContext).add(nativeLibs).build()))
.addProvider(
JavaRuntimeJarProvider.class, new JavaRuntimeJarProvider(ImmutableList.of(mergedJar)))
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 aae265a87e..d67430ce0f 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
@@ -367,10 +367,10 @@ public class AndroidCommon {
public static NestedSetBuilder<Artifact> collectTransitiveNativeLibsZips(
RuleContext ruleContext) {
NestedSetBuilder<Artifact> transitiveAarNativeLibs = NestedSetBuilder.naiveLinkOrder();
- Iterable<NativeLibsZipsProvider> providers =
- getTransitivePrerequisites(ruleContext, Mode.TARGET, NativeLibsZipsProvider.class);
- for (NativeLibsZipsProvider nativeLibsZipsProvider : providers) {
- transitiveAarNativeLibs.addTransitive(nativeLibsZipsProvider.getAarNativeLibs());
+ Iterable<NativeLibsZipsInfo> infos =
+ getTransitivePrerequisites(ruleContext, Mode.TARGET, NativeLibsZipsInfo.PROVIDER);
+ for (NativeLibsZipsInfo nativeLibsZipsInfo : infos) {
+ transitiveAarNativeLibs.addTransitive(nativeLibsZipsInfo.getAarNativeLibs());
}
return transitiveAarNativeLibs;
}
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 207cec8dfa..3617299db4 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
@@ -257,9 +257,8 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
}
builder
- .addProvider(
- NativeLibsZipsProvider.class,
- new NativeLibsZipsProvider(
+ .addNativeDeclaredProvider(
+ new NativeLibsZipsInfo(
AndroidCommon.collectTransitiveNativeLibsZips(ruleContext).build()))
.add(
JavaSourceInfoProvider.class,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index 11c95ab531..81615d0857 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -570,6 +570,7 @@ public final class AndroidRuleClasses {
.exec()
.value(env.getToolsLabel(AndroidRuleClasses.MANIFEST_MERGE_TOOL_LABEL)))
.advertiseSkylarkProvider(AndroidResourcesInfo.PROVIDER.id())
+ .advertiseSkylarkProvider(NativeLibsZipsInfo.PROVIDER.id())
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsInfo.java
index e2ce1ae68c..2b802adebd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsInfo.java
@@ -14,22 +14,41 @@
package com.google.devtools.build.lib.rules.android;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.packages.NativeInfo;
+import com.google.devtools.build.lib.packages.NativeProvider;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
/**
* Provider of transitively available ZIPs of native libs that should be directly copied into the
* APK.
*/
+@SkylarkModule(
+ name = "AndroidNativeLibsZipsInfo",
+ doc = "Native Libraries zips provided by a rule",
+ category = SkylarkModuleCategory.PROVIDER
+)
@Immutable
-public final class NativeLibsZipsProvider implements TransitiveInfoProvider {
+public final class NativeLibsZipsInfo extends NativeInfo {
+
+ private static final String SKYLARK_NAME = "AndroidNativeLibsZipsInfo";
+ public static final NativeProvider<NativeLibsZipsInfo> PROVIDER =
+ new NativeProvider<NativeLibsZipsInfo>(NativeLibsZipsInfo.class, SKYLARK_NAME) {};
private final NestedSet<Artifact> aarNativeLibs;
- public NativeLibsZipsProvider(NestedSet<Artifact> aarNativeLibs) {
+ public NativeLibsZipsInfo(NestedSet<Artifact> aarNativeLibs) {
+ super(PROVIDER);
this.aarNativeLibs = aarNativeLibs;
}
+ @SkylarkCallable(
+ name = "native_libs_zips",
+ doc = "Returns the native libraries zip produced by the rule.",
+ structField = true
+ )
public NestedSet<Artifact> getAarNativeLibs() {
return aarNativeLibs;
}