diff options
author | 2018-02-15 17:11:03 -0800 | |
---|---|---|
committer | 2018-02-15 17:12:36 -0800 | |
commit | 8c4c5eb324ead15bcf4476c1179dcffcd1caecf9 (patch) | |
tree | 9112eccbaad159221351b9e23e997172e08b53b0 /src/main | |
parent | c7a56bc320211d638fec528f82a3ffb060303a6c (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.java | 3 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java | 5 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java | 5 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java | 1 | ||||
-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; } |