aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-02-17 02:11:16 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2017-02-17 14:54:17 +0000
commitcbca207285f13945f6853357c8395f3c25ed4cac (patch)
tree930c9e6e22fdc97a4b2dd38117fd31abb7ce966b /src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
parentae634640dcea09c10dba1f21daa4603221e5bcc9 (diff)
Guard incremental dexing of lite protos in android builds with flag
-- PiperOrigin-RevId: 147793223 MOS_MIGRATED_REVID=147793223
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java18
1 files changed, 12 insertions, 6 deletions
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<String> TRANSITIVE_ATTRIBUTES_EXCEPT_FOR_PROTOS =
+ ImmutableList.of("deps", "exports", "runtime_deps");
private static final ImmutableList<String> TRANSITIVE_ATTRIBUTES =
- ImmutableList.of("deps", "exports", "runtime_deps",
+ ImmutableList.<String>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<Artifact> compileTimeClasspath =
getJavaCompilationArgsProvider(base, ruleContext)
@@ -245,7 +248,8 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
private static Iterable<Artifact> 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 <T extends TransitiveInfoProvider> IterablesChain<T> collectPrerequisites(
RuleContext ruleContext, Class<T> classType) {
+ ImmutableList<String> attrs = getAndroidConfig(ruleContext).incrementalDexingForLiteProtos()
+ ? TRANSITIVE_ATTRIBUTES : TRANSITIVE_ATTRIBUTES_EXCEPT_FOR_PROTOS;
IterablesChain.Builder<T> 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));
}