aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-09-29 21:32:25 +0200
committerGravatar Klaus Aehlig <aehlig@google.com>2017-10-02 10:31:36 +0200
commit6ff77f8f7b6b1617b1c20e4c63d1b597a95813d4 (patch)
tree546a47678f05199fd29ea82b72990e9ab9405ecd /src/main
parentae32398146a05ecbe60966b0fe16e409e7b3e3ae (diff)
Use intermediate compiled resource symbols for linking rather than static resource library APK's.
RELNOTES: none PiperOrigin-RevId: 170517806
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceValidatorActionBuilder.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java34
5 files changed, 63 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceValidatorActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceValidatorActionBuilder.java
index 43778e21a9..74d30bc033 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceValidatorActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceValidatorActionBuilder.java
@@ -15,7 +15,6 @@ package com.google.devtools.build.lib.rules.android;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
-import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
@@ -160,16 +159,8 @@ public class AndroidResourceValidatorActionBuilder {
builder.addExecPath("--aapt2", sdk.getAapt2().getExecutable());
- FluentIterable<Artifact> libraries =
- FluentIterable.from(resourceDeps.getResources()).transform(
- ResourceContainer::getStaticLibrary).append(sdk.getAndroidJar());
-
- builder
- .add("--libraries")
- .addExecPaths(
- VectorArg.join(context.getConfiguration().getHostPathSeparator())
- .each(libraries.toList()));
- inputs.addAll(libraries);
+ builder.add("--libraries").addExecPath(sdk.getAndroidJar());
+ inputs.add(sdk.getAndroidJar());
builder.addExecPath("--compiled", compiledSymbols);
inputs.add(compiledSymbols);
@@ -183,6 +174,15 @@ public class AndroidResourceValidatorActionBuilder {
builder.add("--packageForR", customJavaPackage);
}
+ if (!resourceDeps.getTransitiveCompiledSymbols().isEmpty()) {
+ builder
+ .addExecPaths(
+ "--compiledDep",
+ VectorArg.join(context.getConfiguration().getHostPathSeparator())
+ .each(resourceDeps.getTransitiveCompiledSymbols()));
+ inputs.addAll(resourceDeps.getTransitiveCompiledSymbols());
+ }
+
builder.addExecPath("--sourceJarOut", aapt2SourceJarOut);
outs.add(aapt2SourceJarOut);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
index 297c8d9760..cb59ea4302 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
@@ -44,7 +44,7 @@ public class AndroidResourcesProcessorBuilder {
.includeManifest()
.includeAapt2RTxt()
.includeSymbolsBin()
- .includeStaticLibrary()
+ .includeCompiledSymbols()
.withSeparator(SeparatorType.COLON_COMMA)
.toArgConverter();
@@ -268,7 +268,7 @@ public class AndroidResourcesProcessorBuilder {
.addTransitive(dependencies.getTransitiveManifests())
.addTransitive(dependencies.getTransitiveAapt2RTxt())
.addTransitive(dependencies.getTransitiveSymbolsBin())
- .addTransitive(dependencies.getTransitiveStaticLib());
+ .addTransitive(dependencies.getTransitiveCompiledSymbols());
}
configureCommonFlags(outs, inputs, builder);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java
index d152872aa7..0768ebdee3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProvider.java
@@ -33,6 +33,7 @@ public abstract class AndroidResourcesProvider implements TransitiveInfoProvider
NestedSet<Artifact> transitiveManifests,
NestedSet<Artifact> transitiveAapt2RTxt,
NestedSet<Artifact> transitiveSymbolsBin,
+ NestedSet<Artifact> transitiveCompiledSymbols,
NestedSet<Artifact> transitiveStaticLib,
NestedSet<Artifact> transitiveRTxt,
boolean isResourcesOnly) {
@@ -44,6 +45,7 @@ public abstract class AndroidResourcesProvider implements TransitiveInfoProvider
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
+ transitiveCompiledSymbols,
transitiveStaticLib,
transitiveRTxt,
isResourcesOnly);
@@ -66,6 +68,8 @@ public abstract class AndroidResourcesProvider implements TransitiveInfoProvider
public abstract NestedSet<Artifact> getTransitiveSymbolsBin();
+ public abstract NestedSet<Artifact> getTransitiveCompiledSymbols();
+
public abstract NestedSet<Artifact> getTransitiveStaticLib();
public abstract NestedSet<Artifact> getTransitiveRTxt();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java
index 22037439d4..e09de1a1b1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java
@@ -48,6 +48,7 @@ public class ResourceContainerConverter {
private boolean includeManifest;
private boolean includeRTxt;
private boolean includeSymbolsBin;
+ private boolean includeCompiledSymbols;
private boolean includeStaticLibrary;
private boolean includeAapt2RTxt;
private SeparatorType separatorType;
@@ -98,6 +99,11 @@ public class ResourceContainerConverter {
return this;
}
+ Builder includeCompiledSymbols() {
+ includeCompiledSymbols = true;
+ return this;
+ }
+
Builder withSeparator(SeparatorType type) {
separatorType = type;
return this;
@@ -152,6 +158,12 @@ public class ResourceContainerConverter {
? ""
: container.getStaticLibrary().getExecPathString());
}
+ if (includeCompiledSymbols) {
+ cmdPieces.add(
+ container.getCompiledSymbols() == null
+ ? ""
+ : container.getCompiledSymbols().getExecPathString());
+ }
if (includeSymbolsBin) {
cmdPieces.add(
container.getSymbols() == null ? "" : container.getSymbols().getExecPathString());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
index f260e24e01..652759d522 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
@@ -57,6 +57,8 @@ public final class ResourceDependencies {
private final NestedSet<Artifact> transitiveSymbolsBin;
+ private final NestedSet<Artifact> transitiveCompiledSymbols;
+
private final NestedSet<Artifact> transitiveStaticLib;
private final NestedSet<Artifact> transitiveRTxt;
@@ -75,6 +77,7 @@ public final class ResourceDependencies {
NestedSetBuilder<Artifact> transitiveManifests = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveAapt2RTxt = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveSymbolsBin = NestedSetBuilder.naiveLinkOrder();
+ NestedSetBuilder<Artifact> transitiveCompiledSymbols = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveStaticLib = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveRTxt = NestedSetBuilder.naiveLinkOrder();
extractFromAttributes(
@@ -86,6 +89,7 @@ public final class ResourceDependencies {
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
+ transitiveCompiledSymbols,
transitiveStaticLib,
transitiveRTxt);
return new ResourceDependencies(
@@ -96,6 +100,7 @@ public final class ResourceDependencies {
transitiveManifests.build(),
transitiveAapt2RTxt.build(),
transitiveSymbolsBin.build(),
+ transitiveCompiledSymbols.build(),
transitiveStaticLib.build(),
transitiveRTxt.build());
}
@@ -107,6 +112,7 @@ public final class ResourceDependencies {
NestedSetBuilder<Artifact> transitiveManifests = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveAapt2RTxt = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveSymbolsBin = NestedSetBuilder.naiveLinkOrder();
+ NestedSetBuilder<Artifact> transitiveCompiledSymbols = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveStaticLib = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveRTxt = NestedSetBuilder.naiveLinkOrder();
extractFromAttributes(
@@ -118,6 +124,7 @@ public final class ResourceDependencies {
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
+ transitiveCompiledSymbols,
transitiveStaticLib,
transitiveRTxt);
return new ResourceDependencies(
@@ -128,6 +135,7 @@ public final class ResourceDependencies {
transitiveManifests.build(),
transitiveAapt2RTxt.build(),
transitiveSymbolsBin.build(),
+ transitiveCompiledSymbols.build(),
transitiveStaticLib.build(),
transitiveRTxt.build());
}
@@ -140,6 +148,7 @@ public final class ResourceDependencies {
NestedSetBuilder<Artifact> transitiveManifests = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveAapt2RTxt = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveSymbolsBin = NestedSetBuilder.naiveLinkOrder();
+ NestedSetBuilder<Artifact> transitiveCompiledSymbols = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveStaticLib = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveRTxt = NestedSetBuilder.naiveLinkOrder();
if (hasResourceAttribute(ruleContext)) {
@@ -152,6 +161,7 @@ public final class ResourceDependencies {
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
+ transitiveCompiledSymbols,
transitiveStaticLib,
transitiveRTxt);
}
@@ -167,6 +177,7 @@ public final class ResourceDependencies {
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
+ transitiveCompiledSymbols,
transitiveStaticLib,
transitiveRTxt);
} else {
@@ -182,6 +193,7 @@ public final class ResourceDependencies {
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
+ transitiveCompiledSymbols,
transitiveStaticLib,
transitiveRTxt);
}
@@ -193,6 +205,7 @@ public final class ResourceDependencies {
transitiveManifests.build(),
transitiveAapt2RTxt.build(),
transitiveSymbolsBin.build(),
+ transitiveCompiledSymbols.build(),
transitiveStaticLib.build(),
transitiveRTxt.build());
}
@@ -206,6 +219,7 @@ public final class ResourceDependencies {
NestedSetBuilder<Artifact> transitiveManifests,
NestedSetBuilder<Artifact> transitiveAapt2RTxt,
NestedSetBuilder<Artifact> transitiveSymbolsBin,
+ NestedSetBuilder<Artifact> transitiveCompiledSymbols,
NestedSetBuilder<Artifact> transitiveStaticLib,
NestedSetBuilder<Artifact> transitiveRTxt) {
AttributeMap attributes = ruleContext.attributes();
@@ -221,6 +235,7 @@ public final class ResourceDependencies {
transitiveManifests.addTransitive(resources.getTransitiveManifests());
transitiveAapt2RTxt.addTransitive(resources.getTransitiveAapt2RTxt());
transitiveSymbolsBin.addTransitive(resources.getTransitiveSymbolsBin());
+ transitiveCompiledSymbols.addTransitive(resources.getTransitiveCompiledSymbols());
transitiveStaticLib.addTransitive(resources.getTransitiveStaticLib());
transitiveRTxt.addTransitive(resources.getTransitiveRTxt());
}
@@ -260,6 +275,7 @@ public final class ResourceDependencies {
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
+ NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER));
}
@@ -271,6 +287,7 @@ public final class ResourceDependencies {
NestedSet<Artifact> transitiveManifests,
NestedSet<Artifact> transitiveAapt2RTxt,
NestedSet<Artifact> transitiveSymbolsBin,
+ NestedSet<Artifact> transitiveCompiledSymbols,
NestedSet<Artifact> transitiveStaticLib,
NestedSet<Artifact> transitiveRTxt) {
this.neverlink = neverlink;
@@ -280,6 +297,7 @@ public final class ResourceDependencies {
this.transitiveManifests = transitiveManifests;
this.transitiveAapt2RTxt = transitiveAapt2RTxt;
this.transitiveSymbolsBin = transitiveSymbolsBin;
+ this.transitiveCompiledSymbols = transitiveCompiledSymbols;
this.transitiveStaticLib = transitiveStaticLib;
this.transitiveRTxt = transitiveRTxt;
}
@@ -297,6 +315,7 @@ public final class ResourceDependencies {
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
+ transitiveCompiledSymbols,
transitiveStaticLib,
transitiveRTxt);
}
@@ -339,6 +358,11 @@ public final class ResourceDependencies {
if (newDirectResource.getSymbols() != null) {
transitiveSymbolsBin.add(newDirectResource.getSymbols());
}
+ NestedSetBuilder<Artifact> transitiveCompiledSymbols = NestedSetBuilder.naiveLinkOrder();
+ transitiveCompiledSymbols.addTransitive(this.transitiveCompiledSymbols);
+ if (newDirectResource.getCompiledSymbols() != null) {
+ transitiveCompiledSymbols.add(newDirectResource.getCompiledSymbols());
+ }
NestedSetBuilder<Artifact> transitiveStaticLib = NestedSetBuilder.naiveLinkOrder();
transitiveStaticLib.addTransitive(this.transitiveStaticLib);
if (newDirectResource.getStaticLibrary() != null) {
@@ -360,6 +384,7 @@ public final class ResourceDependencies {
transitiveManifests.build(),
transitiveAapt2RTxt.build(),
transitiveSymbolsBin.build(),
+ transitiveCompiledSymbols.build(),
transitiveStaticLib.build(),
transitiveRTxt.build(),
isResourcesOnly);
@@ -390,6 +415,7 @@ public final class ResourceDependencies {
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
+ transitiveCompiledSymbols,
transitiveStaticLib,
transitiveRTxt,
isResourcesOnly);
@@ -427,6 +453,14 @@ public final class ResourceDependencies {
return transitiveSymbolsBin;
}
+ /**
+ * @return The transitive closure of compiled symbols.
+ * Compiled symbols are zip files containing the compiled resource output of aapt2 compile
+ */
+ public NestedSet<Artifact> getTransitiveCompiledSymbols() {
+ return transitiveCompiledSymbols;
+ }
+
public NestedSet<Artifact> getTransitiveStaticLib() {
return transitiveStaticLib;
}