diff options
author | Googler <noreply@google.com> | 2017-01-23 18:29:47 +0000 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-01-23 19:39:52 +0000 |
commit | ca43c878a28bfd183933a6228cbad937d9c79f2a (patch) | |
tree | 5deb957df4ed31f43ee193dfac0a9581958985ad /src/main/java | |
parent | 7a089cf25bcc2972f95d14cbb5b73b4eb668cee2 (diff) |
Add getImplicitOutputArtifact to BuildViewTestCase. This vastly simplifies
finding actions based on intermediate artifacts.
--
PiperOrigin-RevId: 145303065
MOS_MIGRATED_REVID=145303065
Diffstat (limited to 'src/main/java')
3 files changed, 16 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java index 9b6edbaff6..024fb104b6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceParsingActionBuilder.java @@ -31,10 +31,8 @@ import com.google.devtools.build.lib.vfs.PathFragment; import java.util.ArrayList; import java.util.List; -/** - * Builder for creating $android_resource_parser action. - */ -class AndroidResourceParsingActionBuilder { +/** Builder for creating $android_resource_parser action. */ +public class AndroidResourceParsingActionBuilder { private static final ResourceContainerToArtifacts RESOURCE_CONTAINER_TO_ARTIFACTS = new ResourceContainerToArtifacts(); @@ -46,6 +44,8 @@ class AndroidResourceParsingActionBuilder { private LocalResourceContainer primary; private Artifact output; + private ResourceContainer resourceContainer; + /** * @param ruleContext The RuleContext that was used to create the SpawnAction.Builder. */ @@ -69,6 +69,12 @@ class AndroidResourceParsingActionBuilder { return this; } + /** Set the primary resources. */ + public AndroidResourceParsingActionBuilder withPrimary(ResourceContainer resourceContainer) { + this.resourceContainer = resourceContainer; + return this; + } + private static class ResourceContainerToArg implements Function<LocalResourceContainer, String> { public ResourceContainerToArg() { @@ -103,7 +109,7 @@ class AndroidResourceParsingActionBuilder { return Joiner.on("#").join(Iterables.transform(roots, Functions.toStringFunction())); } - public Artifact build(ActionConstructionContext context) { + public ResourceContainer build(ActionConstructionContext context) { CustomCommandLine.Builder builder = new CustomCommandLine.Builder(); NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder(); @@ -132,6 +138,7 @@ class AndroidResourceParsingActionBuilder { .setProgressMessage("Parsing Android resources for " + ruleContext.getLabel()) .setMnemonic("AndroidResourceParser") .build(context)); - return output; + + return resourceContainer.toBuilder().setSymbols(output).build(); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java index 786fde860d..9148e849f9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java @@ -114,6 +114,8 @@ public final class AndroidRuleClasses { fromTemplates("%{name}_filtered.jar"); public static final SafeImplicitOutputsFunction ANDROID_R_TXT = fromTemplates("%{name}_symbols/R.txt"); + public static final SafeImplicitOutputsFunction ANDROID_LOCAL_SYMBOLS = + fromTemplates("%{name}_symbols/local.bin"); public static final SafeImplicitOutputsFunction ANDROID_SYMBOLS = fromTemplates("%{name}_symbols/symbols.bin"); public static final ImplicitOutputsFunction ANDROID_PROCESSED_MANIFEST = diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java index 7c6ba63296..05c896a96f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java @@ -453,6 +453,7 @@ public final class ApplicationManifest { if (resourceContainer.getSymbols() != null) { new AndroidResourceParsingActionBuilder(ruleContext) + .withPrimary(resourceContainer) .setParse(data) .setOutput(resourceContainer.getSymbols()) .build(ruleContext); |