diff options
Diffstat (limited to 'src/main/java/com')
4 files changed, 23 insertions, 31 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 a42ad297e6..d893f140cb 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 @@ -48,7 +48,6 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.collect.IterablesChain; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; -import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.packages.TriState; @@ -216,17 +215,15 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { applicationManifest = ruleManifest.mergeWith(ruleContext, resourceDeps); - Artifact featureOfArtifact - = ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_of") - ? Iterables.getOnlyElement( - ruleContext.getPrerequisite("feature_of", Mode.TARGET, ApkProvider.class) - .getTransitiveApks()) + Artifact featureOfArtifact = + ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_of") + ? ruleContext.getPrerequisite("feature_of", Mode.TARGET, ApkProvider.class).getApk() : null; - Artifact featureAfterArtifact - = ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_after") - ? Iterables.getOnlyElement( - ruleContext.getPrerequisite("feature_after", Mode.TARGET, ApkProvider.class) - .getTransitiveApks()) + Artifact featureAfterArtifact = + ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_after") + ? ruleContext + .getPrerequisite("feature_after", Mode.TARGET, ApkProvider.class) + .getApk() : null; resourceApk = applicationManifest.packWithDataAndResources( @@ -595,10 +592,6 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { Iterables.concat(ImmutableList.of(zipAlignedApk), apksUnderTest), dataDeps); - NestedSet<Artifact> coverageMetadata = (androidCommon.getInstrumentedJar() != null) - ? NestedSetBuilder.create(Order.STABLE_ORDER, androidCommon.getInstrumentedJar()) - : NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER); - RuleConfiguredTargetBuilder builder = new RuleConfiguredTargetBuilder(ruleContext); @@ -830,9 +823,9 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { .addProvider( ApkProvider.class, ApkProvider.create( - NestedSetBuilder.create(Order.STABLE_ORDER, zipAlignedApk), - coverageMetadata, - NestedSetBuilder.create(Order.STABLE_ORDER, applicationManifest.getManifest()))) + zipAlignedApk, + androidCommon.getInstrumentedJar(), + applicationManifest.getManifest())) .addProvider(AndroidPreDexJarProvider.class, AndroidPreDexJarProvider.create(jarToDex)) .addProvider( AndroidFeatureFlagSetProvider.class, 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 c99c9fa704..8be37d96b3 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 @@ -995,7 +995,7 @@ public class AndroidCommon { // If ApkProvider is present, do not check FileProvider for .apk files. For example, // android_binary creates a FileProvider containing both the signed and unsigned APKs. if (apkProvider != null) { - supportApks.addTransitive(apkProvider.getTransitiveApks()); + supportApks.add(apkProvider.getApk()); } else if (fileProvider != null) { // The rule definition should enforce that only .apk files are allowed, however, it can't // hurt to double check. diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentation.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentation.java index 3f29e1f7c7..75587bc9b6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentation.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentation.java @@ -132,7 +132,7 @@ public class AndroidInstrumentation implements RuleConfiguredTargetFactory { Artifact existingApk; ApkProvider apkProvider = transitiveInfoCollection.getProvider(ApkProvider.class); if (apkProvider != null) { - existingApk = Iterables.getOnlyElement(apkProvider.getTransitiveApks()); + existingApk = apkProvider.getApk(); } else { existingApk = Iterables.getOnlyElement( diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java index c14c61cdb0..0242c4f172 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApkProvider.java @@ -16,29 +16,28 @@ package com.google.devtools.build.lib.rules.android; import com.google.auto.value.AutoValue; 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 javax.annotation.Nullable; -/** A provider for targets that can build .apk files. Currently used for coverage collection. */ +/** A provider for targets that produce an apk file. */ @AutoValue @Immutable public abstract class ApkProvider implements TransitiveInfoProvider { public static ApkProvider create( - NestedSet<Artifact> transitiveApks, - NestedSet<Artifact> coverageMetdata, - NestedSet<Artifact> mergedManifests) { - return new AutoValue_ApkProvider(transitiveApks, coverageMetdata, mergedManifests); + Artifact apk, @Nullable Artifact coverageMetdata, Artifact mergedManifest) { + return new AutoValue_ApkProvider(apk, coverageMetdata, mergedManifest); } - /** Returns the APK files generated in the transitive closure. */ - public abstract NestedSet<Artifact> getTransitiveApks(); + /** Returns the APK file built in the transitive closure. */ + public abstract Artifact getApk(); /** Returns the coverage metadata artifacts generated in the transitive closure. */ - public abstract NestedSet<Artifact> getCoverageMetadata(); + @Nullable + public abstract Artifact getCoverageMetadata(); - /** Returns the merged manifests */ - public abstract NestedSet<Artifact> getMergedManifests(); + /** Returns the merged manifest. */ + public abstract Artifact getMergedManifest(); ApkProvider() {} } |