aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2018-04-04 09:37:31 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-04 09:38:38 -0700
commit77777d1a769e938839b82c65ff320e09b1e7a715 (patch)
treea1785162cade0bff9ed837077c0b3ed2d073d58b /src/main/java/com/google/devtools/build/lib
parent8c2b4816ca4406d4f2843c49022794a76db72f46 (diff)
Fix crash from mobile-install with --device but no --adb_args.
Fixes #4922. RELNOTES: None PiperOrigin-RevId: 191602647
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java24
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java2
2 files changed, 14 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java
index 1f995f140c..a160811227 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/WriteAdbArgsAction.java
@@ -18,7 +18,6 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionKeyContext;
import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.actions.ExecException;
import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.util.Fingerprint;
@@ -113,6 +112,16 @@ public final class WriteAdbArgsAction extends AbstractFileWriteAction {
expansion = {"--start=DEBUG"}
)
public Void debugApp;
+
+ public ImmutableList<String> getAdbArgs() {
+ ImmutableList.Builder<String> allAdbArgs = ImmutableList.builder();
+ allAdbArgs.addAll(adbArgs);
+ if (!device.isEmpty()) {
+ allAdbArgs.add("-s");
+ allAdbArgs.add(device);
+ }
+ return allAdbArgs.build();
+ }
}
public WriteAdbArgsAction(ActionOwner owner, Artifact outputFile) {
@@ -120,16 +129,14 @@ public final class WriteAdbArgsAction extends AbstractFileWriteAction {
}
@Override
- public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx)
- throws IOException, InterruptedException, ExecException {
+ public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) {
Options options = ctx.getOptions().getOptions(Options.class);
- final List<String> args = options.adbArgs;
final String adb = options.adb;
- final String device = options.device;
final String incrementalInstallVerbosity = options.incrementalInstallVerbosity;
final StartType start = options.start;
final String userHomeDirectory =
ctx.getContext(WriteAdbArgsActionContext.class).getUserHomeDirectory();
+ ImmutableList<String> adbArgs = options.getAdbArgs();
return new DeterministicWriter() {
@Override
@@ -140,12 +147,7 @@ public final class WriteAdbArgsAction extends AbstractFileWriteAction {
ps.printf("--adb=%s\n", adb);
}
- if (!device.isEmpty()) {
- args.add("-s");
- args.add(device);
- }
-
- for (String arg : args) {
+ for (String arg : adbArgs) {
ps.printf("--extra_adb_arg=%s\n", arg);
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
index c65b401c12..6484bbe3f2 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java
@@ -262,7 +262,7 @@ public class MobileInstallCommand implements BlazeCommand {
if (!adbOptions.adb.isEmpty()) {
cmdLine.add("--adb=" + adbOptions.adb);
}
- for (String adbArg : adbOptions.adbArgs) {
+ for (String adbArg : adbOptions.getAdbArgs()) {
if (!adbArg.isEmpty()) {
cmdLine.add("--adb_arg=" + adbArg);
}