#!/bin/bash # Startup script for PRISM (Linux/Solaris) # PRISM home directory PRISM_DIR="/home/thomas/Downloads/prism-4.8.1-linux64-x86" # Command to launch Java PRISM_JAVA=${PRISM_JAVA:-java} #### Java heap size handling (either via -javamaxmem argument or PRISM_JAVAMAXMEM environment variable) # If there is a -javamaxmem switch, use it for PRISM_JAVAMAXMEM ARGS=( "$@" ) for ((i=0;i<${#ARGS[@]};i+=1)); do if [ "${ARGS[$i]}" = "-javamaxmem" -o "${ARGS[$i]}" = "--javamaxmem" ]; then PRISM_JAVAMAXMEM=${ARGS[$i+1]} PRISM_JAVAMAXMEM=`echo "$PRISM_JAVAMAXMEM" | awk /^[0-9]+[kmg]?$/` if [ "$PRISM_JAVAMAXMEM" = "" ]; then echo; echo "Error: Invalid value for -javamaxmem switch."; exit fi fi done # Max memory for Java if [ "$PRISM_JAVAMAXMEM" != "" ]; then PRISM_JAVAMAXMEM=`echo "$PRISM_JAVAMAXMEM" | awk /^[0-9]+[kmg]?$/` if [ "$PRISM_JAVAMAXMEM" = "" ]; then echo; echo "Error: Environment variable PRISM_JAVAMAXMEM is invalid."; exit fi PRISM_JAVAMAXMEM="-Xmx$PRISM_JAVAMAXMEM" else # default PRISM_JAVAMAXMEM="-Xmx1g" fi #### Java stack size handling (either via -javastack argument or PRISM_JAVASTACKSIZE environment variable) # If there is a -javastack switch, use it for PRISM_JAVASTACKSIZE for ((i=0;i<${#ARGS[@]};i+=1)); do if [ "${ARGS[$i]}" = "-javastack" -o "${ARGS[$i]}" = "--javastack" ]; then PRISM_JAVASTACKSIZE=${ARGS[$i+1]} PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` if [ "$PRISM_JAVASTACKSIZE" = "" ]; then echo; echo "Error: Invalid value for -javastack switch."; exit fi fi done # Stack size for Java if [ "$PRISM_JAVASTACKSIZE" != "" ]; then PRISM_JAVASTACKSIZE=`echo "$PRISM_JAVASTACKSIZE" | awk /^[0-9]+[kmg]?$/` if [ "$PRISM_JAVASTACKSIZE" = "" ]; then echo; echo "Error: Environment variable PRISM_JAVASTACKSIZE is invalid."; exit fi PRISM_JAVASTACKSIZE="-Xss$PRISM_JAVASTACKSIZE" else # default (4 MB) PRISM_JAVASTACKSIZE="-Xss4m" fi #### # JVM parameters via -javaparams switch ARGS=( "$@" ) for ((i=0;i<${#ARGS[@]};i+=1)); do if [ "${ARGS[$i]}" = "-javaparams" -o "${ARGS[$i]}" = "--javaparams" ]; then PRISM_JAVA_PARAMS=${PRISM_JAVA_PARAMS}${PRISM_JAVA_PARAMS:+ }${ARGS[$i+1]} fi done # Detect -javaversion switch ARGS=( "$@" ) for ((i=0;i<${#ARGS[@]};i+=1)); do if [ "${ARGS[$i]}" = "-javaversion" -o "${ARGS[$i]}" = "--javaversion" ]; then PRISM_PRINT_JAVA_VERSION=yes fi done # Set up CLASSPATH: # - PRISM jar file (for binary versions) (gets priority) # - classes directory (most PRISM classes) # - top-level directory (for images, dtds) # - lib/pepa.zip (PEPA stuff) # - lib/*.jar (all other jars) PRISM_CLASSPATH="$PRISM_DIR"/lib/prism.jar:"$PRISM_DIR"/classes:"$PRISM_DIR":"$PRISM_DIR"/lib/pepa.zip:"$PRISM_DIR"/lib/* # Set up pointers to libraries PRISM_LIB_PATH="$PRISM_DIR"/lib # Copy library path to relevant vars LD_LIBRARY_PATH="${PRISM_LIB_PATH}${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}" JAVA_LIBRARY_PATH="$PRISM_LIB_PATH" # Export environment variables export PRISM_DIR LD_LIBRARY_PATH # Main Java class to launch PRISM_MAINCLASS=${PRISM_MAINCLASS:-prism.PrismCL} # Do we run headless? (GUI overrides this) PRISM_HEADLESS=${PRISM_HEADLESS:-true} # If debugging enabled, set up vars accordingly if [ "$PRISM_DEBUG" != "" ]; then PRISM_JAVA_ARG1="$PRISM_JAVA" PRISM_JAVA_ARG2="$PRISM_DEBUG_ARG" PRISM_JAVA="$PRISM_DEBUG" fi # If requested, just print the version of Java and exit if [ "$PRISM_PRINT_JAVA_VERSION" = "yes" ]; then "$PRISM_JAVA" -version && exit fi # # If environment variable PRISM_NO_EXEC is set to 'yes', use old method of starting Java. # The default method is to use an exec call. # if [ "$PRISM_NO_EXEC" = "yes" ]; then # Run PRISM through Java as a child process (exit code of script is exit code of the java call) # Note: Killing this startup script will not necessarily kill the Java process "$PRISM_JAVA" $PRISM_JAVA_ARG1 $PRISM_JAVA_ARG2 $PRISM_JAVA_DEBUG $PRISM_JAVA_PARAMS $PRISM_JAVAMAXMEM $PRISM_JAVASTACKSIZE -Djava.awt.headless=$PRISM_HEADLESS -Djava.library.path="$JAVA_LIBRARY_PATH" -classpath "$PRISM_CLASSPATH" $PRISM_MAINCLASS "$@" else # (Default) Run PRISM through Java via an exec call (the shell process is replaced by the Java process) exec "$PRISM_JAVA" $PRISM_JAVA_ARG1 $PRISM_JAVA_ARG2 $PRISM_JAVA_DEBUG $PRISM_JAVA_PARAMS $PRISM_JAVAMAXMEM $PRISM_JAVASTACKSIZE -Djava.awt.headless=$PRISM_HEADLESS -Djava.library.path="$JAVA_LIBRARY_PATH" -classpath "$PRISM_CLASSPATH" $PRISM_MAINCLASS "$@" fi