diff options
author | 2017-06-02 12:13:36 -0400 | |
---|---|---|
committer | 2017-06-05 10:18:31 -0400 | |
commit | 18dc43f1e11f61fd0c3f70e7b198e536d86c82e5 (patch) | |
tree | 5f1a908932acd05604021364c60f580de57c0744 /src/main/java/com/google/devtools/build/lib/rules | |
parent | 2347169c139da8e68ad30d9661ee243e7274758a (diff) |
Expose .ap_ artifact as a skylark provider
RELNOTES: none
PiperOrigin-RevId: 157837746
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
3 files changed, 28 insertions, 3 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 8be37d96b3..75290d124e 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 @@ -282,7 +282,8 @@ public class AndroidCommon { // Sets the possibly merged manifest and the raw manifest. .setGeneratedManifest(resourceApk.getPrimaryResource().getManifest()) .setManifest(ruleContext.getPrerequisiteArtifact("manifest", Mode.TARGET)) - .setJavaPackage(getJavaPackage(ruleContext)); + .setJavaPackage(getJavaPackage(ruleContext)) + .setResourceApk(resourceApk.getArtifact()); } else { semantics.addNonLocalResources(ruleContext, resourceApk, ideInfoProviderBuilder); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java index cc5b9bb4be..e09f002b88 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidIdeInfoProvider.java @@ -128,6 +128,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { private Artifact manifest = null; private Artifact generatedManifest = null; private Artifact apk = null; + private Artifact resourceApk = null; private Artifact idlClassJar = null; private Artifact idlSourceJar = null; private OutputJar resourceJar = null; @@ -163,7 +164,8 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { ImmutableList.copyOf(apksUnderTest), nativeLibs != null ? ImmutableMap.copyOf(nativeLibs) - : ImmutableMap.<String, NestedSet<Artifact>>of()); + : ImmutableMap.<String, NestedSet<Artifact>>of(), + resourceApk); } public Builder setJavaPackage(String javaPackage) { @@ -211,6 +213,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { return this; } + public Builder setResourceApk(Artifact resourceApk) { + this.resourceApk = resourceApk; + return this; + } + public Builder setAar(Artifact aar) { this.aar = aar; return this; @@ -314,6 +321,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { @Nullable private final Artifact idlClassJar; @Nullable private final Artifact idlSourceJar; @Nullable private final OutputJar resourceJar; + @Nullable private final Artifact resourceApk; private final ImmutableCollection<SourceDirectory> resourceDirs; private final boolean definesAndroidResources; private final Artifact aar; @@ -341,7 +349,8 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { ImmutableCollection<Artifact> idlSrcs, ImmutableCollection<Artifact> idlGeneratedJavaFiles, ImmutableCollection<Artifact> apksUnderTest, - ImmutableMap<String, NestedSet<Artifact>> nativeLibs) { + ImmutableMap<String, NestedSet<Artifact>> nativeLibs, + Artifact resourceApk) { this.javaPackage = javaPackage; this.idlImportRoot = idlImportRoot; this.manifest = manifest; @@ -359,6 +368,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { this.idlGeneratedJavaFiles = idlGeneratedJavaFiles; this.apksUnderTest = apksUnderTest; this.nativeLibs = nativeLibs; + this.resourceApk = resourceApk; } /** Returns java package for this target. */ @@ -417,6 +427,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { return aar; } + @Nullable + public Artifact getResourceApk() { + return resourceApk; + } + /** A list of the direct Resource directories. */ public ImmutableCollection<SourceDirectory> getResourceDirs() { return resourceDirs; diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java index 90d102911c..afad1131cc 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkApiProvider.java @@ -108,6 +108,15 @@ public class AndroidSkylarkApiProvider extends SkylarkApiProvider { } @SkylarkCallable( + name = "resource_apk", + structField = true, + doc = "Returns the resources container for the target." + ) + public Artifact getResourceApk() { + return getIdeInfoProvider().getResourceApk(); + } + + @SkylarkCallable( name = "apks_under_test", structField = true, allowReturnNones = true, |