diff options
author | Eric Fellheimer <felly@google.com> | 2015-10-19 13:57:39 +0000 |
---|---|---|
committer | Philipp Wollermann <philwo@google.com> | 2015-10-20 16:35:16 +0000 |
commit | 40229e3cf37b30bc7a68693e337de41e276b8659 (patch) | |
tree | ec33d33081df65ae0ce5de76f19071325c4206f8 /src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java | |
parent | 30c0a635ba50c43467c80527a6c12abc4f8ed29e (diff) |
Automated [] rollback of [].
*** Reason for rollback ***
Breaks many android targets in the depot.
*** Original change description ***
Trying again with checking for the presence of the "resources" attribute.
Change the resource dependency handling to separate between the transitive and direct resources from libraries.
This slightly increases the complexity of resource propagation. The initial algorithm was to simply merge all transitive ResourceContainers together with any new ResourceContainer and propagate them via the AndroidResourcesProvider. The new algorithm is encapsulated inside a new ResourceDependencies class which...
***
ROLLBACK_OF=105631635
--
MOS_MIGRATED_REVID=105752015
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java | 18 |
1 files changed, 9 insertions, 9 deletions
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 0eec811d57..bb90189242 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 @@ -62,6 +62,8 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { List<? extends TransitiveInfoCollection> deps = ruleContext.getPrerequisites("deps", Mode.TARGET); checkResourceInlining(ruleContext); + NestedSet<AndroidResourcesProvider.ResourceContainer> transitiveResources = + AndroidCommon.getTransitiveResourceContainers(ruleContext, true); NestedSetBuilder<Aar> transitiveAars = collectTransitiveAars(ruleContext); NestedSet<LinkerInput> transitiveNativeLibraries = AndroidCommon.collectTransitiveNativeLibraries(deps); @@ -82,8 +84,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { try { resourceApk = applicationManifest.packWithDataAndResources( ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_APK), - ruleContext, - ResourceDependencies.fromRuleDeps(ruleContext), + ruleContext, transitiveResources, ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT), ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_SYMBOLS_TXT), ImmutableList.<String>of(), /* configurationFilters */ @@ -101,8 +102,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { return null; } } else { - resourceApk = ResourceApk.fromTransitiveResources( - ResourceDependencies.fromRuleResourceAndDeps(ruleContext)); + resourceApk = ResourceApk.fromTransitiveResources(transitiveResources); } JavaTargetAttributes javaTargetAttributes = androidCommon.init( @@ -129,7 +129,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { transitiveAars.add(aar); } else if (AndroidCommon.getAndroidResources(ruleContext) != null) { primaryResources = Iterables.getOnlyElement( - AndroidCommon.getAndroidResources(ruleContext).getDirectAndroidResources()); + AndroidCommon.getAndroidResources(ruleContext).getTransitiveAndroidResources()); aar = new Aar(aarOut, primaryResources.getManifest()); transitiveAars.add(aar); } else { @@ -157,7 +157,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { .setSourceJarOut(resourceContainer.getJavaSourceJar()) .setJavaPackage(resourceContainer.getJavaPackage()) .withPrimary(resourceContainer) - .withDependencies(resourceApk.getResourceDependencies()) + .withDependencies(transitiveResources) .setDebug( ruleContext.getConfiguration().getCompilationMode() != CompilationMode.OPT) .build(ruleContext); @@ -172,8 +172,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, + definesLocalResources ? resourceApk : null, null, ImmutableList.<Artifact>of()); androidSemantics.addTransitiveInfoProviders( builder, ruleContext, javaCommon, androidCommon, null); @@ -220,7 +220,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { } ResourceContainer container = Iterables.getOnlyElement( - resources.getDirectAndroidResources()); + resources.getTransitiveAndroidResources()); if (container.getConstantsInlined() && !container.getArtifacts(ResourceType.RESOURCES).isEmpty()) { |