diff options
Diffstat (limited to 'src/main')
9 files changed, 87 insertions, 66 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 4a42915da3..41c5ab751d 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 @@ -83,6 +83,12 @@ public class AarGeneratorBuilder { List<Artifact> outs = new ArrayList<>(); List<Artifact> ins = new ArrayList<>(); List<String> args = new ArrayList<>(); + + // Set the busybox tool + args.add("--tool"); + args.add("GENERATE_AAR"); + // Deliminate between the tool and the tool arguments. + args.add("--"); args.add("--mainData"); addPrimaryResourceContainer(ins, args, primary); @@ -109,15 +115,16 @@ public class AarGeneratorBuilder { args.add(aarOut.getExecPathString()); outs.add(aarOut); - ruleContext.registerAction(this.builder - .addInputs(ImmutableList.<Artifact>copyOf(ins)) - .addOutputs(ImmutableList.<Artifact>copyOf(outs)) - .setCommandLine(CommandLine.of(args, false)) - .setExecutable( - ruleContext.getExecutablePrerequisite("$android_aar_generator", Mode.HOST)) - .setProgressMessage("Building AAR package for " + ruleContext.getLabel()) - .setMnemonic("AARGenerator") - .build(context)); + ruleContext.registerAction( + this.builder + .addInputs(ImmutableList.<Artifact>copyOf(ins)) + .addOutputs(ImmutableList.<Artifact>copyOf(outs)) + .setCommandLine(CommandLine.of(args, false)) + .setExecutable( + ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST)) + .setProgressMessage("Building AAR package for " + ruleContext.getLabel()) + .setMnemonic("AARGenerator") + .build(context)); } private void addPrimaryResourceContainer(List<Artifact> inputs, List<String> args, diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java index 56ab7bfcf2..1e3ae9ccce 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java @@ -35,7 +35,7 @@ import java.util.List; * $android_resource_validator action. For android_binary, see {@link * AndroidResourcesProcessorBuilder}. */ -class AndroidResourceMergingActionBuilder { +public class AndroidResourceMergingActionBuilder { private static final ResourceContainerConverter.ToArtifacts RESOURCE_CONTAINER_TO_ARTIFACTS = ResourceContainerConverter.builder() @@ -107,12 +107,15 @@ class AndroidResourceMergingActionBuilder { public ResourceContainer build(ActionConstructionContext context) { CustomCommandLine.Builder builder = new CustomCommandLine.Builder(); + + // Set the busybox tool. + builder.add("--tool").add("MERGE").add("--"); // Use a FluentIterable to avoid flattening the NestedSets NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder(); inputs.addAll( ruleContext - .getExecutablePrerequisite("$android_resource_merger", Mode.HOST) + .getExecutablePrerequisite("$android_resources_busybox", Mode.HOST) .getRunfilesSupport() .getRunfilesArtifactsWithoutMiddlemen()); @@ -162,7 +165,7 @@ class AndroidResourceMergingActionBuilder { .addOutputs(ImmutableList.copyOf(outs)) .setCommandLine(builder.build()) .setExecutable( - ruleContext.getExecutablePrerequisite("$android_resource_merger", Mode.HOST)) + ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST)) .setProgressMessage("Merging Android resources for " + ruleContext.getLabel()) .setMnemonic("AndroidResourceMerger") .build(context)); 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 0d86acf744..4a926fd8e4 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 @@ -112,11 +112,16 @@ public class AndroidResourceParsingActionBuilder { public ResourceContainer build(ActionConstructionContext context) { CustomCommandLine.Builder builder = new CustomCommandLine.Builder(); + + // Set the busybox tool. + builder.add("--tool").add("PARSE").add("--"); NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder(); - inputs.addAll(ruleContext.getExecutablePrerequisite("$android_resource_parser", Mode.HOST) - .getRunfilesSupport() - .getRunfilesArtifactsWithoutMiddlemen()); + inputs.addAll( + ruleContext + .getExecutablePrerequisite("$android_resources_busybox", Mode.HOST) + .getRunfilesSupport() + .getRunfilesArtifactsWithoutMiddlemen()); Preconditions.checkNotNull(primary); builder.add("--primaryData").add(RESOURCE_CONTAINER_TO_ARG.apply(primary)); @@ -136,7 +141,7 @@ public class AndroidResourceParsingActionBuilder { .addOutputs(ImmutableList.copyOf(outs)) .setCommandLine(builder.build()) .setExecutable( - ruleContext.getExecutablePrerequisite("$android_resource_parser", Mode.HOST)) + ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST)) .setProgressMessage("Parsing Android resources for " + ruleContext.getLabel()) .setMnemonic("AndroidResourceParser") .build(context)); 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 ce8df5f9fc..66e8b8b3cf 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 @@ -91,6 +91,9 @@ class AndroidResourceValidatorActionBuilder { public ResourceContainer build(ActionConstructionContext context) { CustomCommandLine.Builder builder = new CustomCommandLine.Builder(); + // Set the busybox tool. + builder.add("--tool").add("VALIDATE").add("--"); + if (!Strings.isNullOrEmpty(sdk.getBuildToolsVersion())) { builder.add("--buildToolsVersion").add(sdk.getBuildToolsVersion()); } @@ -101,7 +104,7 @@ class AndroidResourceValidatorActionBuilder { NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder(); inputs.addAll( ruleContext - .getExecutablePrerequisite("$android_resource_validator", Mode.HOST) + .getExecutablePrerequisite("$android_resources_busybox", Mode.HOST) .getRunfilesSupport() .getRunfilesArtifactsWithoutMiddlemen()); @@ -146,7 +149,7 @@ class AndroidResourceValidatorActionBuilder { .addOutputs(ImmutableList.copyOf(outs)) .setCommandLine(builder.build()) .setExecutable( - ruleContext.getExecutablePrerequisite("$android_resource_validator", Mode.HOST)) + ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST)) .setProgressMessage("Validating Android resources for " + ruleContext.getLabel()) .setMnemonic("AndroidResourceValidator") .build(context)); 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 81cec62e5d..c10228c707 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 @@ -201,6 +201,9 @@ public class AndroidResourcesProcessorBuilder { public ResourceContainer build(ActionConstructionContext context) { List<Artifact> outs = new ArrayList<>(); CustomCommandLine.Builder builder = new CustomCommandLine.Builder(); + + // Set the busybox tool. + builder.add("--tool").add("PACKAGE").add("--"); if (!Strings.isNullOrEmpty(sdk.getBuildToolsVersion())) { builder.add("--buildToolsVersion").add(sdk.getBuildToolsVersion()); @@ -209,7 +212,9 @@ public class AndroidResourcesProcessorBuilder { builder.addExecPath("--aapt", sdk.getAapt().getExecutable()); // Use a FluentIterable to avoid flattening the NestedSets NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder(); - inputs.addAll(ruleContext.getExecutablePrerequisite("$android_resources_processor", Mode.HOST) + inputs.addAll( + ruleContext + .getExecutablePrerequisite("$android_resources_busybox", Mode.HOST) .getRunfilesSupport() .getRunfilesArtifactsWithoutMiddlemen()); @@ -317,7 +322,7 @@ public class AndroidResourcesProcessorBuilder { .addOutputs(ImmutableList.<Artifact>copyOf(outs)) .setCommandLine(builder.build()) .setExecutable( - ruleContext.getExecutablePrerequisite("$android_resources_processor", Mode.HOST)) + ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST)) .setProgressMessage("Processing Android resources for " + ruleContext.getLabel()) .setMnemonic("AndroidAapt") .build(context)); 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 3ec2bb41a6..ba552078e5 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 @@ -163,14 +163,7 @@ public final class AndroidRuleClasses { "//tools/android:incremental_stub_application"; public static final String DEFAULT_INCREMENTAL_SPLIT_STUB_APPLICATION = "//tools/android:incremental_split_stub_application"; - public static final String DEFAULT_AAR_GENERATOR = "//tools/android:aar_generator"; - public static final String DEFAULT_MANIFEST_MERGER = "//tools/android:manifest_merger"; - public static final String DEFAULT_RCLASS_GENERATOR = "//tools/android:rclass_generator"; - public static final String DEFAULT_RESOURCES_PROCESSOR = "//tools/android:resources_processor"; - public static final String DEFAULT_RESOURCE_MERGER = "//tools/android:resource_merger"; - public static final String DEFAULT_RESOURCE_PARSER = "//tools/android:resource_parser"; - public static final String DEFAULT_RESOURCE_SHRINKER = "//tools/android:resource_shrinker"; - public static final String DEFAULT_RESOURCE_VALIDATOR = "//tools/android:resource_validator"; + public static final String DEFAULT_RESOURCES_BUSYBOX = "//tools/android:busybox"; public static final String DEFAULT_SDK = "//tools/android:sdk"; /** @@ -423,22 +416,11 @@ public final class AndroidRuleClasses { @Override public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) { return builder - .add(attr("$android_aar_generator", LABEL).cfg(HOST).exec().value( - env.getToolsLabel(DEFAULT_AAR_GENERATOR))) - .add(attr("$android_manifest_merger", LABEL).cfg(HOST).exec().value( - env.getToolsLabel(DEFAULT_MANIFEST_MERGER))) - .add(attr("$android_rclass_generator", LABEL).cfg(HOST).exec().value( - env.getToolsLabel(DEFAULT_RCLASS_GENERATOR))) - .add(attr("$android_resources_processor", LABEL).cfg(HOST).exec().value( - env.getToolsLabel(DEFAULT_RESOURCES_PROCESSOR))) - .add(attr("$android_resource_merger", LABEL).cfg(HOST).exec().value( - env.getToolsLabel(DEFAULT_RESOURCE_MERGER))) - .add(attr("$android_resource_parser", LABEL).cfg(HOST).exec().value( - env.getToolsLabel(DEFAULT_RESOURCE_PARSER))) - .add(attr("$android_resource_validator", LABEL).cfg(HOST).exec().value( - env.getToolsLabel(DEFAULT_RESOURCE_VALIDATOR))) - .add(attr("$android_resource_shrinker", LABEL).cfg(HOST).exec().value( - env.getToolsLabel(DEFAULT_RESOURCE_SHRINKER))) + .add( + attr("$android_resources_busybox", LABEL) + .cfg(HOST) + .exec() + .value(env.getToolsLabel(DEFAULT_RESOURCES_BUSYBOX))) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ManifestMergerActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/ManifestMergerActionBuilder.java index af679f0509..c84e3fd1a3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ManifestMergerActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ManifestMergerActionBuilder.java @@ -25,7 +25,6 @@ import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; - import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; @@ -89,10 +88,15 @@ public class ManifestMergerActionBuilder { NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder(); ImmutableList.Builder<Artifact> outputs = ImmutableList.builder(); CustomCommandLine.Builder builder = new CustomCommandLine.Builder(); + + // Set the busybox tool. + builder.add("--tool").add("MERGE_MANIFEST").add("--"); - inputs.addAll(ruleContext.getExecutablePrerequisite("$android_manifest_merger", Mode.HOST) - .getRunfilesSupport() - .getRunfilesArtifactsWithoutMiddlemen()); + inputs.addAll( + ruleContext + .getExecutablePrerequisite("$android_resources_busybox", Mode.HOST) + .getRunfilesSupport() + .getRunfilesArtifactsWithoutMiddlemen()); builder.addExecPath("--manifest", manifest); inputs.add(manifest); @@ -135,7 +139,7 @@ public class ManifestMergerActionBuilder { .addOutputs(outputs.build()) .setCommandLine(builder.build()) .setExecutable( - ruleContext.getExecutablePrerequisite("$android_manifest_merger", Mode.HOST)) + ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST)) .setProgressMessage("Merging manifest for " + ruleContext.getLabel()) .setMnemonic("ManifestMerger") .build(context)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java index f9597c4a57..aec168286d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java @@ -98,10 +98,16 @@ public class RClassGeneratorActionBuilder { public void build() { CustomCommandLine.Builder builder = new CustomCommandLine.Builder(); + + // Set the busybox tool. + builder.add("--tool").add("GENERATE_BINARY_R").add("--"); + NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder(); - inputs.addAll(ruleContext.getExecutablePrerequisite("$android_rclass_generator", Mode.HOST) - .getRunfilesSupport() - .getRunfilesArtifactsWithoutMiddlemen()); + inputs.addAll( + ruleContext + .getExecutablePrerequisite("$android_resources_busybox", Mode.HOST) + .getRunfilesSupport() + .getRunfilesArtifactsWithoutMiddlemen()); List<Artifact> outs = new ArrayList<>(); if (primary.getRTxt() != null) { @@ -138,7 +144,7 @@ public class RClassGeneratorActionBuilder { .useParameterFile(ParameterFileType.SHELL_QUOTED) .setCommandLine(builder.build()) .setExecutable( - ruleContext.getExecutablePrerequisite("$android_rclass_generator", Mode.HOST)) + ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST)) .setProgressMessage("Generating R Classes: " + ruleContext.getLabel()) .setMnemonic("RClassGenerator") .build(ruleContext)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceShrinkerActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceShrinkerActionBuilder.java index beb7370d5a..4d234291c6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceShrinkerActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceShrinkerActionBuilder.java @@ -144,10 +144,15 @@ public class ResourceShrinkerActionBuilder { ImmutableList.Builder<Artifact> outputs = ImmutableList.builder(); CustomCommandLine.Builder commandLine = new CustomCommandLine.Builder(); + + // Set the busybox tool. + commandLine.add("--tool").add("SHRINK").add("--"); - inputs.addAll(ruleContext.getExecutablePrerequisite("$android_resource_shrinker", Mode.HOST) - .getRunfilesSupport() - .getRunfilesArtifactsWithoutMiddlemen()); + inputs.addAll( + ruleContext + .getExecutablePrerequisite("$android_resources_busybox", Mode.HOST) + .getRunfilesSupport() + .getRunfilesArtifactsWithoutMiddlemen()); commandLine.addExecPath("--aapt", sdk.getAapt().getExecutable()); @@ -208,16 +213,17 @@ public class ResourceShrinkerActionBuilder { commandLine.addExecPath("--log", logOut); outputs.add(logOut); - ruleContext.registerAction(spawnActionBuilder - .addTool(sdk.getAapt()) - .addInputs(inputs.build()) - .addOutputs(outputs.build()) - .setCommandLine(commandLine.build()) - .setExecutable(ruleContext.getExecutablePrerequisite( - "$android_resource_shrinker", Mode.HOST)) - .setProgressMessage("Shrinking resources for " + ruleContext.getLabel()) - .setMnemonic("ResourceShrinker") - .build(ruleContext)); + ruleContext.registerAction( + spawnActionBuilder + .addTool(sdk.getAapt()) + .addInputs(inputs.build()) + .addOutputs(outputs.build()) + .setCommandLine(commandLine.build()) + .setExecutable( + ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST)) + .setProgressMessage("Shrinking resources for " + ruleContext.getLabel()) + .setMnemonic("ResourceShrinker") + .build(ruleContext)); return resourceApkOut; } |