Skip to content

Commit

Permalink
robustify launchers for windows #749
Browse files Browse the repository at this point in the history
  • Loading branch information
rbouckaert committed Mar 13, 2018
1 parent 26ec941 commit ed94bb0
Show file tree
Hide file tree
Showing 8 changed files with 28 additions and 25 deletions.
2 changes: 1 addition & 1 deletion release/Linux/bin/applauncher
Expand Up @@ -29,5 +29,5 @@ if [ -z "$JAVA_HOME" ]; then
else
JAVA=$JAVA_HOME/bin/java
fi
$JAVA -Xms256m -Xmx1024m -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.tools.AppLauncherLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Xms256m -Xmx1024m -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.tools.AppLauncherLauncher $*

4 changes: 2 additions & 2 deletions release/Linux/bin/beast
Expand Up @@ -52,7 +52,7 @@ fi
# use BEAST_EXTRA_LIBS variable to load BEAGLE and other libraries from non-default locations
# this assumes that the library path contains all these libraries (or are set through LD_LIBRARY_PATH)
if [ -n "$BEAST_EXTRA_LIBS" ]; then
$JAVA -Xms64m -Xmx4g -Djava.library.path=$BEAST_EXTRA_LIBS -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.beastapp.BeastLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Xms64m -Xmx4g -Djava.library.path=$BEAST_EXTRA_LIBS -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.beastapp.BeastLauncher $*
else
$JAVA -Xms64m -Xmx4g -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.beastapp.BeastLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Xms64m -Xmx4g -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.beastapp.BeastLauncher $*
fi
2 changes: 1 addition & 1 deletion release/Linux/bin/treeannotator
Expand Up @@ -29,5 +29,5 @@ if [ -z "$JAVA_HOME" ]; then
else
JAVA=$JAVA_HOME/bin/java
fi
$JAVA -Xms256m -Xmx4g -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.treeannotator.TreeAnnotatorLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Xms256m -Xmx4g -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.treeannotator.TreeAnnotatorLauncher $*

2 changes: 1 addition & 1 deletion release/Linux/jrebin/applauncher
Expand Up @@ -30,5 +30,5 @@ if [ -z "$JAVA_HOME" ]; then
else
JAVA=$JAVA_HOME/bin/java
fi
$JAVA -Xms256m -Xmx1024m -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.tools.AppLauncherLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Dlauncher.wait.for.exit=true -Xms256m -Xmx1024m -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.tools.AppLauncherLauncher $*

4 changes: 2 additions & 2 deletions release/Linux/jrebin/beast
Expand Up @@ -53,7 +53,7 @@ fi
# use BEAST_EXTRA_LIBS variable to load BEAGLE and other libraries from non-default locations
# this assumes that the library path contains all these libraries (or are set through LD_LIBRARY_PATH)
if [ -n "$BEAST_EXTRA_LIBS" ]; then
$JAVA -Xms64m -Xmx4g -Djava.library.path=$BEAST_EXTRA_LIBS -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.beastapp.BeastLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Xms64m -Xmx4g -Djava.library.path=$BEAST_EXTRA_LIBS -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.beastapp.BeastLauncher $*
else
$JAVA -Xms64m -Xmx4g -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.beastapp.BeastLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Xms64m -Xmx4g -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.beastapp.BeastLauncher $*
fi
2 changes: 1 addition & 1 deletion release/Linux/jrebin/logcombiner
Expand Up @@ -30,5 +30,5 @@ if [ -z "$JAVA_HOME" ]; then
else
JAVA=$JAVA_HOME/bin/java
fi
$JAVA -Xms256m -Xmx4g -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.tools.LogCombinerLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Xms256m -Xmx4g -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.tools.LogCombinerLauncher $*

2 changes: 1 addition & 1 deletion release/Linux/jrebin/treeannotator
Expand Up @@ -30,5 +30,5 @@ if [ -z "$JAVA_HOME" ]; then
else
JAVA=$JAVA_HOME/bin/java
fi
$JAVA -Xms256m -Xmx4g -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.treeannotator.TreeAnnotatorLauncher $*
$JAVA -Dlauncher.wait.for.exit=true -Xms256m -Xmx4g -Djava.library.path="$BEAST_LIB" -Duser.language=en -cp "$BEAST_LIB/launcher.jar" beast.app.treeannotator.TreeAnnotatorLauncher $*

35 changes: 19 additions & 16 deletions src/beast/app/beastapp/BeastLauncher.java
Expand Up @@ -10,6 +10,7 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.net.URL;
Expand Down Expand Up @@ -390,6 +391,7 @@ protected static String getPath(boolean useStrictVersions, String beastFile) thr
packagePath = determinePackagePath();
Utils6.saveBeautiProperty("package.path", packagePath);
}
buf.append(File.pathSeparator);
buf.append(packagePath);
buf.append("\"");
return buf.toString();
Expand All @@ -399,14 +401,14 @@ protected static String getPath(boolean useStrictVersions, String beastFile) thr
private static String determinePackagePath(String packagesString) throws UnsupportedEncodingException {
StringBuilder buf = new StringBuilder();
if (AddOnManager.getBEASTInstallDir() != null) {
buf.append(":");
buf.append(File.pathSeparator);
buf.append(URLDecoder.decode(AddOnManager.getBEASTInstallDir() + "/lib/beast.jar", "UTF-8"));
}
if (packagesString != null && packagesString.trim().length() > 0) {
Map<String, Package> packages = new HashMap<String, Package>();
AddOnManager.addInstalledPackages(packages);

String unavailablePacakges = "";
String unavailablePackages = "";
String [] packageAndVersions = packagesString.split(":");
Set<String> classes = new HashSet<String>();
for (String s : packageAndVersions) {
Expand All @@ -425,28 +427,28 @@ private static String determinePackagePath(String packagesString) throws Unsuppo
// check the latest installed version
Package pkg2 = packages.get(pkgname);
if (pkg2 == null || !pkg2.isInstalled() || !pkg2.getInstalledVersion().equals(version)) {
unavailablePacakges += s +", ";
unavailablePackages += s +", ";
} else {
AddOnManager.useArchive(false);
dirName = AddOnManager.getPackageDir(pkg, version, false, System.getProperty("BEAST_ADDON_PATH"));
if (new File(dirName).exists()) {
buf.append(addJarsToPath(dirName, classes));
} else {
unavailablePacakges += s +", ";
unavailablePackages += s +", ";
}
}
}
}
}
if (unavailablePacakges.length() > 1) {
unavailablePacakges = unavailablePacakges.substring(0, unavailablePacakges.length() - 2);
if (unavailablePacakges.contains(",")) {
Log.warning("The following packages are required, but not available: " + unavailablePacakges);
if (unavailablePackages.length() > 1) {
unavailablePackages = unavailablePackages.substring(0, unavailablePackages.length() - 2);
if (unavailablePackages.contains(",")) {
Log.warning("The following packages are required, but not available: " + unavailablePackages);
} else {
Log.warning("The following package is required, but is not available: " + unavailablePacakges);
Log.warning("The following package is required, but is not available: " + unavailablePackages);
}
Log.warning("See http://beast2.org/managing-packages/ for details on how to install packages.");
throw new IllegalArgumentException("The following package(s) are required, but not available: " + unavailablePacakges);
throw new IllegalArgumentException("The following package(s) are required, but not available: " + unavailablePackages);
}
}
return buf.toString();
Expand All @@ -455,7 +457,7 @@ private static String determinePackagePath(String packagesString) throws Unsuppo
private static String determinePackagePath() throws UnsupportedEncodingException {
StringBuilder buf = new StringBuilder();
if (AddOnManager.getBEASTInstallDir() != null) {
buf.append(":");
buf.append(File.pathSeparator);
buf.append(URLDecoder.decode(AddOnManager.getBEASTInstallDir() + "/lib/beast.jar", "UTF-8"));
}
Set<String> classes = new HashSet<String>();
Expand Down Expand Up @@ -537,7 +539,7 @@ private static String addJarsToPath(String packageDirName, Set<String> classes)
}
alreadyLoaded = false;
if (!alreadyLoaded) {
buf.append(":" + jarDir.getAbsolutePath() + "/" + fileName);
buf.append(File.pathSeparator + jarDir.getAbsolutePath() + "/" + fileName);
classes.addAll(jarClasses);
}
}
Expand Down Expand Up @@ -614,20 +616,21 @@ public static void run(String classPath, String main, String[] args) {
// Start the process and wait for it to finish.
final Process process = pb.start();
boolean waitToExit = System.getProperty("launcher.wait.for.exit") != null;

if (waitToExit) {
//PrintStream debug = new PrintStream(new File("debug.log"));
int c;
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((c = input.read()) != -1) {
System.out.print((char)c);
// debug.print((char) c);
}
//debug.close();
input.close();
final int exitStatus = process.waitFor();

final int exitStatus = process.waitFor();
if (exitStatus != 0) {
System.err.println(process.getErrorStream());
// Log.err.println(Utils.toString());
} else {
// System.out.println(Utils.toString(process.getInputStream()));
}
}
} catch (Exception e) {
Expand Down

0 comments on commit ed94bb0

Please sign in to comment.