aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceValidatorActionBuilder.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/RClassGeneratorActionBuilder.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceContainerConverter.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceShrinkerActionBuilder.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java9
9 files changed, 49 insertions, 28 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index d8d856cd58..ec5f03a7ae 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -43,6 +43,7 @@ import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.CommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction.Builder;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -1016,7 +1017,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
CommandLine mergeCommandLine =
CustomCommandLine.builder()
- .addBeforeEachExecPath("--input_zip", shardDexes)
+ .addExecPaths(VectorArg.addBefore("--input_zip").each(shardDexes))
.addExecPath("--output_zip", classesDex)
.build();
ruleContext.registerAction(
@@ -1247,7 +1248,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
CustomCommandLine.Builder shardCommandLine =
CustomCommandLine.builder()
- .addBeforeEachExecPath("--output_jar", shards)
+ .addExecPaths(VectorArg.addBefore("--output_jar").each(shards))
.addExecPath("--output_resources", javaResourceJar);
if (mainDexList != null) {
@@ -1302,7 +1303,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
} else {
classpath = classpath.stream().map(derivedJarFunction::apply).collect(toImmutableList());
}
- shardCommandLine.addBeforeEachExecPath("--input_jar", classpath);
+ shardCommandLine.addExecPaths(VectorArg.addBefore("--input_jar").each(classpath));
shardAction.addInputs(classpath);
if (inclusionFilterJar != null) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index 01c4e6b89b..9c46ee398e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -34,6 +34,7 @@ import com.google.devtools.build.lib.analysis.RunfilesProvider;
import com.google.devtools.build.lib.analysis.RunfilesSupport;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.android.AndroidLibraryAarProvider.Aar;
@@ -255,12 +256,14 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
CustomCommandLine.Builder cmdLineArgs = CustomCommandLine.builder();
if (!transitiveAars.isEmpty()) {
- cmdLineArgs.addJoined(
- "--android_libraries", ",", transitiveAars, AndroidLocalTestBase::aarCmdLineArg);
+ cmdLineArgs.addAll(
+ "--android_libraries",
+ VectorArg.join(",").each(transitiveAars).mapped(AndroidLocalTestBase::aarCmdLineArg));
}
if (!strictAars.isEmpty()) {
- cmdLineArgs.addJoined(
- "--strict_libraries", ",", strictAars, AndroidLocalTestBase::aarCmdLineArg);
+ cmdLineArgs.addAll(
+ "--strict_libraries",
+ VectorArg.join(",").each(strictAars).mapped(AndroidLocalTestBase::aarCmdLineArg));
}
RunfilesSupport runfilesSupport =
RunfilesSupport.withExecutable(
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 9117465a22..50cfa8acb3 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
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import java.util.ArrayList;
import java.util.List;
@@ -164,8 +165,9 @@ public class AndroidResourceValidatorActionBuilder {
builder
.add("--libraries")
- .addJoinedExecPaths(
- context.getConfiguration().getHostPathSeparator(), ImmutableList.copyOf(libraries));
+ .addExecPaths(
+ VectorArg.join(context.getConfiguration().getHostPathSeparator())
+ .each(libraries.toList()));
inputs.addAll(libraries);
builder.addExecPath("--compiled", compiledSymbols);
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 9f0b04bc0a..19ac49e21a 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
@@ -22,6 +22,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.Builder;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
@@ -464,16 +465,16 @@ public class AndroidResourcesProcessorBuilder {
}
ImmutableList<String> filteredResources = resourceFilter.getResourcesToIgnoreInExecution();
if (!filteredResources.isEmpty()) {
- builder.addJoined("--prefilteredResources", ",", filteredResources);
+ builder.addAll("--prefilteredResources", VectorArg.join(",").each(filteredResources));
}
if (!uncompressedExtensions.isEmpty()) {
- builder.addJoined("--uncompressedExtensions", ",", uncompressedExtensions);
+ builder.addAll("--uncompressedExtensions", VectorArg.join(",").each(uncompressedExtensions));
}
if (!crunchPng) {
builder.add("--useAaptCruncher=no");
}
if (!assetsToIgnore.isEmpty()) {
- builder.addJoined("--assetsToIgnore", ",", assetsToIgnore);
+ builder.addAll("--assetsToIgnore", VectorArg.join(",").each(assetsToIgnore));
}
if (debug) {
builder.add("--debug");
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 7abcc34319..bf5491f132 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
@@ -43,6 +43,7 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.WrappingProvider;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.Builder;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.cmdline.Label;
@@ -374,8 +375,8 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
new Builder()
.addExecPath("--input", jar)
.addExecPath("--output", result)
- .addBeforeEachExecPath("--classpath_entry", classpath)
- .addBeforeEachExecPath("--bootclasspath_entry", bootclasspath)
+ .addExecPaths(VectorArg.addBefore("--classpath_entry").each(classpath))
+ .addExecPaths(VectorArg.addBefore("--bootclasspath_entry").each(bootclasspath))
.build();
// Just use params file, since classpaths can get long
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 4835d09ebb..137bd653cb 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
@@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -102,9 +103,11 @@ public class RClassGeneratorActionBuilder {
// TODO(corysmith): Remove NestedSet as we are already flattening it.
Iterable<ResourceContainer> depResources = dependencies.getResources();
if (!Iterables.isEmpty(depResources)) {
- builder.addBeforeEach(
- "--library",
- ImmutableList.copyOf(Iterables.transform(depResources, chooseDepsToArg(version))));
+ builder.addAll(
+ VectorArg.addBefore("--library")
+ .each(
+ ImmutableList.copyOf(
+ Iterables.transform(depResources, chooseDepsToArg(version)))));
inputs.addTransitive(
NestedSetBuilder.wrap(
Order.NAIVE_LINK_ORDER,
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 041059e9a4..16a8c2845a 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
@@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterators;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
@@ -240,12 +241,18 @@ public class ResourceContainerConverter {
if (dependencies != null) {
if (!dependencies.getTransitiveResources().isEmpty()) {
- cmdBuilder.addJoined(
- "--data", toArg.listSeparator(), dependencies.getTransitiveResources(), toArg);
+ cmdBuilder.addAll(
+ "--data",
+ VectorArg.join(toArg.listSeparator())
+ .each(dependencies.getTransitiveResources())
+ .mapped(toArg));
}
if (!dependencies.getDirectResources().isEmpty()) {
- cmdBuilder.addJoined(
- "--directData", toArg.listSeparator(), dependencies.getDirectResources(), toArg);
+ cmdBuilder.addAll(
+ "--directData",
+ VectorArg.join(toArg.listSeparator())
+ .each(dependencies.getDirectResources())
+ .mapped(toArg));
}
// This flattens the nested set. Since each ResourceContainer needs to be transformed into
// Artifacts, and the NestedSetBuilder.wrap doesn't support lazy Iterator evaluation
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 fb0c79d19f..b38898a8dd 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
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
@@ -170,10 +171,11 @@ public class ResourceShrinkerActionBuilder {
inputs.add(sdk.getAndroidJar());
if (!uncompressedExtensions.isEmpty()) {
- commandLine.addJoined("--uncompressedExtensions", ",", uncompressedExtensions);
+ commandLine.addAll(
+ "--uncompressedExtensions", VectorArg.join(",").each(uncompressedExtensions));
}
if (!assetsToIgnore.isEmpty()) {
- commandLine.addJoined("--assetsToIgnore", ",", assetsToIgnore);
+ commandLine.addAll("--assetsToIgnore", VectorArg.join(",").each(assetsToIgnore));
}
if (ruleContext.getConfiguration().getCompilationMode() != CompilationMode.OPT) {
commandLine.add("--debug");
@@ -213,7 +215,7 @@ public class ResourceShrinkerActionBuilder {
ImmutableList<String> resourcePackages =
getResourcePackages(primaryResources, dependencyResources);
- commandLine.addJoined("--resourcePackages", ",", resourcePackages);
+ commandLine.addAll("--resourcePackages", VectorArg.join(",").each(resourcePackages));
commandLine.addExecPath("--shrunkResourceApk", resourceApkOut);
outputs.add(resourceApkOut);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java
index fa537bfa95..64b99d3d66 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java
@@ -20,6 +20,7 @@ import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
+import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -85,11 +86,11 @@ public class RobolectricResourceSymbolsActionBuilder {
inputs.add(sdk.getAndroidJar());
if (!Iterables.isEmpty(dependencies.getResources())) {
- builder.addJoined(
+ builder.addAll(
"--data",
- RESOURCE_CONTAINER_TO_ARG.listSeparator(),
- dependencies.getResources(),
- RESOURCE_CONTAINER_TO_ARG);
+ VectorArg.join(RESOURCE_CONTAINER_TO_ARG.listSeparator())
+ .each(dependencies.getResources())
+ .mapped(RESOURCE_CONTAINER_TO_ARG));
}
// This flattens the nested set.