diff options
author | Googler <noreply@google.com> | 2016-09-08 14:08:40 +0000 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2016-09-09 09:02:24 +0000 |
commit | daf62aeddbd35a3c3959769507112d400fc38bbe (patch) | |
tree | 7a7a55563ebdc7ba5b0fc4ab2434941750b5c03d /src/main/java/com/google | |
parent | 4138ae2eea34ab8e29a2f18f3bbee6e3ea3e46cf (diff) |
Expose aar to Skylark.
--
MOS_MIGRATED_REVID=132551909
Diffstat (limited to 'src/main/java/com/google')
5 files changed, 32 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index b47e914b78..0b6b467aea 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -678,7 +678,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { debugKeystore); androidCommon.addTransitiveInfoProviders( - builder, androidSemantics, resourceApk, zipAlignedApk, apksUnderTest); + builder, androidSemantics, null /* aar */, resourceApk, zipAlignedApk, apksUnderTest); androidSemantics.addTransitiveInfoProviders( builder, ruleContext, javaCommon, androidCommon, jarToDex); 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 c12804f3d2..4f42250a97 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 @@ -246,6 +246,7 @@ public class AndroidCommon { AndroidSemantics semantics, AndroidIdlHelper idlHelper, OutputJar resourceJar, + Artifact aar, ResourceApk resourceApk, Artifact zipAlignedApk, Iterable<Artifact> apksUnderTest) { @@ -254,6 +255,7 @@ public class AndroidCommon { .setIdlClassJar(idlHelper.getIdlClassJar()) .setIdlSourceJar(idlHelper.getIdlSourceJar()) .setResourceJar(resourceJar) + .setAar(aar) .addIdlParcelables(idlHelper.getIdlParcelables()) .addIdlSrcs(idlHelper.getIdlSources()) .addIdlGeneratedJavaFiles(idlHelper.getIdlGeneratedJavaSources()) @@ -697,6 +699,7 @@ public class AndroidCommon { public RuleConfiguredTargetBuilder addTransitiveInfoProviders( RuleConfiguredTargetBuilder builder, AndroidSemantics androidSemantics, + Artifact aar, ResourceApk resourceApk, Artifact zipAlignedApk, Iterable<Artifact> apksUnderTest) { @@ -729,6 +732,7 @@ public class AndroidCommon { androidSemantics, idlHelper, resourceJar, + aar, resourceApk, zipAlignedApk, apksUnderTest)) 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 39f8ba9f7a..2f0836dea3 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 @@ -138,6 +138,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { private final Set<Artifact> idlGeneratedJavaFiles = new LinkedHashSet<>(); private final Set<Artifact> apksUnderTest = new LinkedHashSet<>(); private boolean definesAndroidResources; + private Artifact aar = null; public AndroidIdeInfoProvider build() { return new AndroidIdeInfoProvider( @@ -149,6 +150,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { idlSourceJar, resourceJar, definesAndroidResources, + aar, ImmutableList.copyOf(assetDirs), ImmutableList.copyOf(resourceDirs), ImmutableList.copyOf(idlDirs), @@ -202,6 +204,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { return this; } + public Builder setAar(Artifact aar) { + this.aar = aar; + return this; + } + /** * Add "idl_srcs" contents. */ @@ -291,6 +298,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { @Nullable private final OutputJar resourceJar; private final ImmutableCollection<SourceDirectory> resourceDirs; private final boolean definesAndroidResources; + private final Artifact aar; private final ImmutableCollection<SourceDirectory> assetDirs; private final ImmutableCollection<SourceDirectory> idlImports; private final ImmutableCollection<Artifact> idlSrcs; @@ -306,6 +314,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { @Nullable Artifact idlSourceJar, @Nullable OutputJar resourceJar, boolean definesAndroidResources, + @Nullable Artifact aar, ImmutableCollection<SourceDirectory> assetDirs, ImmutableCollection<SourceDirectory> resourceDirs, ImmutableCollection<SourceDirectory> idlImports, @@ -320,6 +329,7 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { this.idlSourceJar = idlSourceJar; this.resourceJar = resourceJar; this.definesAndroidResources = definesAndroidResources; + this.aar = aar; this.assetDirs = assetDirs; this.resourceDirs = resourceDirs; this.idlImports = idlImports; @@ -374,6 +384,11 @@ public final class AndroidIdeInfoProvider implements TransitiveInfoProvider { return resourceJar; } + @Nullable + public Artifact getAar() { + return aar; + } + /** 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/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java index 676f9cde71..fbe88ff92f 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 @@ -186,8 +186,8 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { .build(ruleContext); RuleConfiguredTargetBuilder builder = new RuleConfiguredTargetBuilder(ruleContext); - androidCommon.addTransitiveInfoProviders(builder, androidSemantics, resourceApk, null, - ImmutableList.<Artifact>of()); + androidCommon.addTransitiveInfoProviders(builder, androidSemantics, aarOut, + resourceApk, null, ImmutableList.<Artifact>of()); androidSemantics.addTransitiveInfoProviders( builder, ruleContext, javaCommon, androidCommon, null); 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 ed8434de93..6bf1d0f177 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 @@ -132,6 +132,16 @@ public class AndroidSkylarkApiProvider extends SkylarkApiProvider { return getIdeInfoProvider().getResourceJar(); } + @SkylarkCallable( + name = "aar", + structField = true, + allowReturnNones = true, + doc = "Returns the aar output of this target." + ) + public Artifact getAar() { + return getIdeInfoProvider().getAar(); + } + private NestedSet<Artifact> collectDirectArtifacts(final ResourceType resources) { AndroidResourcesProvider provider = getInfo().getProvider(AndroidResourcesProvider.class); if (provider == null) { |