Revision: 291
Author:
b...@google.com
Date: Thu Apr 18 17:30:59 2013
Log: Add --vm-command option to allow vm executable to be overridden
http://code.google.com/p/vogar/source/detail?r=291
Modified:
/trunk/src/vogar/JavaVm.java
/trunk/src/vogar/ModeId.java
/trunk/src/vogar/Run.java
/trunk/src/vogar/Vogar.java
/trunk/src/vogar/android/AppProcessMode.java
/trunk/src/vogar/android/DeviceDalvikVm.java
/trunk/src/vogar/android/HostDalvikVm.java
=======================================
--- /trunk/src/vogar/JavaVm.java Mon Jan 7 11:43:07 2013
+++ /trunk/src/vogar/JavaVm.java Thu Apr 18 17:30:59 2013
@@ -43,7 +43,7 @@
@Override public VmCommandBuilder newVmCommandBuilder(Action action,
File workingDirectory) {
List<String> vmCommand = new ArrayList<String>();
Iterables.addAll(vmCommand, run.invokeWith());
- vmCommand.add(run.javaPath("java"));
+ vmCommand.add(run.javaPath(run.vmCommand));
if (run.profile) {
vmCommand.add("-agentlib:hprof="
+ "cpu=samples,"
=======================================
--- /trunk/src/vogar/ModeId.java Mon Jul 9 13:16:28 2012
+++ /trunk/src/vogar/ModeId.java Thu Apr 18 17:30:59 2013
@@ -30,4 +30,17 @@
public boolean requiresAndroidSdk() {
return this != JVM;
}
+
+ public String defaultVmCommand() {
+ if (this == DEVICE || this == HOST) {
+ return "dalvikvm";
+ }
+ if (this == JVM) {
+ return "java";
+ }
+ if (this == APP_PROCESS) {
+ return "app_process";
+ }
+ return null;
+ }
}
=======================================
--- /trunk/src/vogar/Run.java Mon Dec 3 16:21:40 2012
+++ /trunk/src/vogar/Run.java Thu Apr 18 17:30:59 2013
@@ -80,6 +80,8 @@
public final File deviceUserHome;
public final Console console;
public final int smallTimeoutSeconds;
+ public final String vmCommand;
+ public final String dalvikCache;
public final List<String> additionalVmArgs;
public final List<String> targetArgs;
public final boolean useBootClasspath;
@@ -115,6 +117,8 @@
this.target = new AdbTarget(this);
}
+ this.vmCommand = vogar.vmCommand;
+ this.dalvikCache = vogar.dalvikCache;
this.additionalVmArgs = vogar.vmArgs;
this.benchmark = vogar.benchmark;
this.cleanBefore = vogar.cleanBefore;
@@ -272,7 +276,7 @@
}
public File dalvikCache() {
- return new File(runnerDir.getParentFile(), "dalvik-cache");
+ return new File(runnerDir.getParentFile(), dalvikCache);
}
/**
=======================================
--- /trunk/src/vogar/Vogar.java Mon Dec 3 16:21:40 2012
+++ /trunk/src/vogar/Vogar.java Thu Apr 18 17:30:59 2013
@@ -107,6 +107,12 @@
@Option(names = { "--vm-arg" })
List<String> vmArgs = new ArrayList<String>();
+ @Option(names = { "--vm-command" })
+ String vmCommand;
+
+ @Option(names = { "--dalvik-cache" })
+ String dalvikCache = "dalvik-cache";
+
@Option(names = { "--java-home" })
File javaHome;
@@ -278,6 +284,9 @@
System.out.println(" --vm-arg <argument>: include the specified
argument when spawning a");
System.out.println(" virtual machine. Examples: -Xint:fast,
-ea, -Xmx16M");
System.out.println();
+ System.out.println(" --vm-command <argument>: override default vm
executable name.");
+ System.out.println(" Default is java for the host and
dalvikvm for the target.");
+ System.out.println();
System.out.println(" --java-home <java_home>: execute the actions
on the local workstation");
System.out.println(" using the specified java home directory.
This does not impact");
System.out.println(" which javac gets used. When unset, java
is used from the PATH.");
@@ -328,6 +337,9 @@
System.out.println(" --javac-arg <argument>: include the
specified argument when invoking");
System.out.println(" javac. Examples: --javac-arg -Xmaxerrs
--javac-arg 1");
System.out.println();
+ System.out.println(" --dalvik-cache <argument>: override default
dalvik-cache location.");
+ System.out.println(" Default is: " + dalvikCache);
+ System.out.println();
System.out.println(" --first-monitor-port <port>: the port on the
host (and possibly target)");
System.out.println(" used to traffic control messages between
vogar and forked processes.");
System.out.println(" Use this to avoid port conflicts when
running multiple vogar instances");
@@ -396,6 +408,10 @@
// Post-processing arguments
//
+ if (vmCommand == null) {
+ vmCommand = mode.defaultVmCommand();
+ }
+
// disable timeout when benchmarking or debugging
if (benchmark || debugPort != null) {
timeoutSeconds = 0;
=======================================
--- /trunk/src/vogar/android/AppProcessMode.java Tue Dec 6 16:25:31 2011
+++ /trunk/src/vogar/android/AppProcessMode.java Thu Apr 18 17:30:59 2013
@@ -37,7 +37,7 @@
vmCommand.addAll(run.target.targetProcessPrefix(workingDirectory));
vmCommand.add(run.getAndroidData());
Iterables.addAll(vmCommand, run.invokeWith());
- vmCommand.add("app_process");
+ vmCommand.add(run.vmCommand);
return new VmCommandBuilder(run.log)
.vmCommand(vmCommand)
=======================================
--- /trunk/src/vogar/android/DeviceDalvikVm.java Mon Jan 7 11:43:07 2013
+++ /trunk/src/vogar/android/DeviceDalvikVm.java Thu Apr 18 17:30:59 2013
@@ -75,7 +75,7 @@
vmCommand.addAll(run.target.targetProcessPrefix(workingDirectory));
vmCommand.add(run.getAndroidData());
Iterables.addAll(vmCommand, run.invokeWith());
- vmCommand.add("dalvikvm");
+ vmCommand.add(run.vmCommand);
// If you edit this, see also HostDalvikVm...
VmCommandBuilder vmCommandBuilder = new VmCommandBuilder(run.log)
=======================================
--- /trunk/src/vogar/android/HostDalvikVm.java Mon Jan 7 11:43:07 2013
+++ /trunk/src/vogar/android/HostDalvikVm.java Thu Apr 18 17:30:59 2013
@@ -47,7 +47,7 @@
}
private File dalvikCache() {
- return run.localFile("android-data", "dalvik-cache");
+ return run.localFile("android-data", run.dalvikCache);
}
@Override public Set<Task> installTasks() {
@@ -88,7 +88,7 @@
List<String> vmCommand = new ArrayList<String>();
Iterables.addAll(vmCommand, run.invokeWith());
- vmCommand.add(buildRoot + "/out/host/linux-x86/bin/dalvikvm");
+ vmCommand.add(buildRoot + "/out/host/linux-x86/bin/" +
run.vmCommand);
builder.env("ANDROID_ROOT", buildRoot + "/out/host/linux-x86")
.env("LD_LIBRARY_PATH", buildRoot
+ "/out/host/linux-x86/lib")
.env("DYLD_LIBRARY_PATH", buildRoot
+ "/out/host/linux-x86/lib");