aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2018-04-02 09:26:42 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-02 09:27:48 -0700
commitcb16c5089953127690c8971d32dc3d4cf01b7620 (patch)
tree9769c8f778ef4eed4f3e241f60d4c929b985dcd0 /src/main/java/com/google/devtools
parent1592238818ce4235e689f7a77dd4fefc1a7dfc8a (diff)
Create proguard.txt in android_library AAR output.
The proguard.txt is the concatenation of the proguard_specs on the android_library rule itself. Note that it does not include transitively defined proguard_specs. Fixes https://github.com/bazelbuild/bazel/issues/4467 RELNOTES: android_library AAR output now contains proguard.txt PiperOrigin-RevId: 191302610
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java2
3 files changed, 16 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java
index fdeb38d739..f259a48cd1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarGeneratorBuilder.java
@@ -39,6 +39,7 @@ public class AarGeneratorBuilder {
private Artifact manifest;
private Artifact rTxt;
private Artifact classes;
+ private ImmutableList<Artifact> proguardSpecs = ImmutableList.of();
private Artifact aarOut;
private boolean throwOnResourceConflict;
@@ -81,6 +82,11 @@ public class AarGeneratorBuilder {
return this;
}
+ public AarGeneratorBuilder setProguardSpecs(ImmutableList<Artifact> proguardSpecs) {
+ this.proguardSpecs = proguardSpecs;
+ return this;
+ }
+
public AarGeneratorBuilder setThrowOnResourceConflict(boolean throwOnResourceConflict) {
this.throwOnResourceConflict = throwOnResourceConflict;
return this;
@@ -118,6 +124,12 @@ public class AarGeneratorBuilder {
ins.add(classes);
}
+ for (Artifact proguardSpec : proguardSpecs) {
+ args.add("--proguardSpec");
+ args.add(proguardSpec.getExecPathString());
+ ins.add(proguardSpec);
+ }
+
args.add("--aarOutput");
args.add(aarOut.getExecPathString());
outs.add(aarOut);
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 6aea0db21b..2a511f2c04 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
@@ -121,7 +121,8 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
collectTransitiveAars(ruleContext, transitiveAars, transitiveAarArtifacts);
NestedSetBuilder<Artifact> proguardConfigsbuilder = NestedSetBuilder.stableOrder();
- proguardConfigsbuilder.addTransitive(new ProguardLibrary(ruleContext).collectProguardSpecs());
+ ProguardLibrary proguardLibrary = new ProguardLibrary(ruleContext);
+ proguardConfigsbuilder.addTransitive(proguardLibrary.collectProguardSpecs());
AndroidIdlHelper.maybeAddSupportLibProguardConfigs(ruleContext, proguardConfigsbuilder);
NestedSet<Artifact> transitiveProguardConfigs = proguardConfigsbuilder.build();
@@ -237,6 +238,7 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
.withRtxt(primaryResources.getRTxt())
.withClasses(classesJar)
.setAAROut(aarOut)
+ .setProguardSpecs(proguardLibrary.collectLocalProguardSpecs())
.setThrowOnResourceConflict(
ruleContext.getFragment(AndroidConfiguration.class).throwOnResourceConflict())
.build(ruleContext);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java
index b412bb2057..cae0ac8ae3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/ProguardLibrary.java
@@ -89,7 +89,7 @@ public final class ProguardLibrary {
/**
* Collects the unvalidated proguard specs exported by this rule.
*/
- private Collection<Artifact> collectLocalProguardSpecs() {
+ public ImmutableList<Artifact> collectLocalProguardSpecs() {
if (!ruleContext.attributes().has(LOCAL_SPEC_ATTRIBUTE, BuildType.LABEL_LIST)) {
return ImmutableList.of();
}