From cbca207285f13945f6853357c8395f3c25ed4cac Mon Sep 17 00:00:00 2001 From: Googler Date: Fri, 17 Feb 2017 02:11:16 +0000 Subject: Guard incremental dexing of lite protos in android builds with flag -- PiperOrigin-RevId: 147793223 MOS_MIGRATED_REVID=147793223 --- .../build/lib/rules/android/DexArchiveAspect.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java') diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java index ebd734bb45..5ffd0fa70a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java @@ -104,10 +104,12 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu private static final String ASPECT_DEXBUILDER_PREREQ = "$dex_archive_dexbuilder"; /** Aspect-only label for desugaring executable, to avoid name clashes with labels on rules. */ private static final String ASPECT_DESUGAR_PREREQ = "$aspect_desugar"; + private static final ImmutableList TRANSITIVE_ATTRIBUTES_EXCEPT_FOR_PROTOS = + ImmutableList.of("deps", "exports", "runtime_deps"); private static final ImmutableList TRANSITIVE_ATTRIBUTES = - ImmutableList.of("deps", "exports", "runtime_deps", + ImmutableList.builder().addAll(TRANSITIVE_ATTRIBUTES_EXCEPT_FOR_PROTOS) // To get from proto_library through proto_lang_toolchain rule to proto runtime library. - JavaLiteProtoAspect.PROTO_TOOLCHAIN_ATTR, "runtime"); + .add(JavaLiteProtoAspect.PROTO_TOOLCHAIN_ATTR, "runtime").build(); private final String toolsRepository; @@ -215,14 +217,15 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu } AndroidRuntimeJarProvider.Builder desugaredJars = new AndroidRuntimeJarProvider.Builder() .addTransitiveProviders(collectPrerequisites(ruleContext, AndroidRuntimeJarProvider.class)); - if (isProtoLibrary(ruleContext)) { + if (isProtoLibrary(ruleContext) + && getAndroidConfig(ruleContext).incrementalDexingForLiteProtos()) { // TODO(b/33557068): Desugar protos if needed instead of assuming they don't need desugaring result.addProvider(desugaredJars.build()); return Functions.identity(); } JavaRuntimeJarProvider jarProvider = base.getProvider(JavaRuntimeJarProvider.class); - if (jarProvider != null) { + if (jarProvider != null && !isProtoLibrary(ruleContext)) { // These are all transitive hjars of dependencies and hjar of the jar itself NestedSet compileTimeClasspath = getJavaCompilationArgsProvider(base, ruleContext) @@ -245,7 +248,8 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu private static Iterable getProducedRuntimeJars(ConfiguredTarget base, RuleContext ruleContext) { - if (isProtoLibrary(ruleContext)) { + if (isProtoLibrary(ruleContext) + && getAndroidConfig(ruleContext).incrementalDexingForLiteProtos()) { JavaCompilationArgsAspectProvider javaProtos = base.getProvider(JavaCompilationArgsAspectProvider.class); if (javaProtos != null && !ruleContext.getPrerequisites("srcs", Mode.TARGET).isEmpty()) { @@ -285,8 +289,10 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu private static IterablesChain collectPrerequisites( RuleContext ruleContext, Class classType) { + ImmutableList attrs = getAndroidConfig(ruleContext).incrementalDexingForLiteProtos() + ? TRANSITIVE_ATTRIBUTES : TRANSITIVE_ATTRIBUTES_EXCEPT_FOR_PROTOS; IterablesChain.Builder result = IterablesChain.builder(); - for (String attr : TRANSITIVE_ATTRIBUTES) { + for (String attr : attrs) { if (ruleContext.attributes().getAttributeType(attr) != null) { result.add(ruleContext.getPrerequisites(attr, Mode.TARGET, classType)); } -- cgit v1.2.3