1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194
|
#!/bin/bash
######## CONFIGURATION OPTIONS ########
SCRIPT_NOT_CHANGED=0 # change this to 1 if you don't want your script overwritten!
JAVA_PROGRAM_DIR="" # use full path to java bin dir, ex. "/usr/java/j2sdk1.4.2/bin/"
#PROGRAM_DIR="/home/username/apps/azureus" # use full path to Azureus bin dir
JAVA_ARGS="-Xmx128m"
#export MOZILLA_FIVE_HOME="/path/to/gre" # Full path to GRE/Mozilla. When commenting out this line, also comment out the next line
#if [ "$LD_LIBRARY_PATH x" = " x" ]; then export LD_LIBRARY_PATH=$MOZILLA_FIVE_HOME; else export LD_LIBRARY_PATH=$MOZILLA_FIVE_HOME:$LD_LIBRARY_PATH; fi
#######################################
######## YOU PROBABLY DO NOT WANT TO TOUCH ANYTHING BELOW! ########
SCRIPT_VERSION=2
START_CLASS="org.gudy.azureus2.ui.swt.Main"
MSG_LOADING="Loading Azureus:"
MSG_STARTING="Starting Azureus..."
MSG2="Java exec found in "
MSG3="OOPS, your java version is too old "
MSG4="You need to upgrade to JRE 1.4.x or newer from http://java.sun.com"
MSG5="Suitable java version found "
MSG6="Configuring environment..."
MSG7="OOPS, you don't seem to have a valid JRE "
MSG8="OOPS, unable to locate java exec in "
MSG9=" hierarchy"
MSG10="Java exec not found in PATH, starting auto-search..."
MSG11="Java exec found in PATH. Verifying..."
MSG_AZEXIT="Exit from Azureus complete"
MSG_TERMINATED="Azureus TERMINATED."
MSG_RECHECK="Re-checking with GCJ (Sun Java recommended).."
MSG_ISGCJ="Java is GCJ.. looking for Sun Java.."
MSG_JAVABORK="Java appeared to have crashed:"
SKIP_GCJ=1
look_for_java()
{
if command -v java &>/dev/null; then
if check_version ; then
echo $MSG11
return 0
fi
fi
echo $MSG10
JAVA_CHECK_DIRS="/usr/java/latest /usr/java /usr/lib/jvm/latest /usr/lib/jvm"
for JAVADIR in $JAVA_CHECK_DIRS; do
IFS=$'\n'
potential_java_dirs=(`ls -1 "$JAVADIR" | sort | tac 2>/dev/null`)
IFS=
for D in "${potential_java_dirs[@]}"; do
if [[ -d "$JAVADIR/$D" && -x "$JAVADIR/$D/bin/java" ]]; then
JAVA_PROGRAM_DIR="$JAVADIR/$D/bin/"
echo $MSG2 $JAVA_PROGRAM_DIR
if check_version ; then
return 0
else
return 1
fi
fi
done
done
if [ $SKIP_GCJ ] ; then
echo $MSG_RECHECK
SKIP_GCJ=
if look_for_java ; then
return 0
else
return 1
fi
else
echo $MSG8 "${JAVADIR}/" $MSG9 ; echo $MSG4
fi
return 1
}
check_version()
{
if [ $SKIP_GCJ ] ; then
JAVA_ISGCJ=`"${JAVA_PROGRAM_DIR}java" -version 2>&1 | grep "gcj"`
if [ ! "$JAVA_ISGCJ x" = " x" ] ; then
echo $MSG_ISGCJ
return 1
fi
fi
JAVA_HEADER=`"${JAVA_PROGRAM_DIR}java" -version 2>&1 | head -n 1`
JAVA_IMPL=`echo ${JAVA_HEADER} | cut -f1 -d' '`
if [ "$JAVA_IMPL" = "java" ] ; then
VERSION=`echo ${JAVA_HEADER} | sed "s/java version \"\(.*\)\"/\1/"`
if echo $VERSION | grep "^1.[0-3]" ; then
echo $MSG3 "[${JAVA_PROGRAM_DIR}java = ${VERSION}]" ; echo $MSG4
return 1
else
echo $MSG5 "[${JAVA_PROGRAM_DIR}java = ${VERSION}]" ; echo $MSG6
return 0
fi
elif [ "$JAVA_IMPL" = "#" ] ; then
echo $MSG_JAVABORK
${JAVA_PROGRAM_DIR}java -version 2>&1
exit 1
else
echo $MSG7 "[${JAVA_PROGRAM_DIR}java = ${JAVA_IMPL}]" ; echo $MSG4
return 1
fi
}
runJavaOutput()
{
# assume we can write to the user's home..
${JAVA_PROGRAM_DIR}java "${JAVA_ARGS}" \
-cp "${CLASSPATH}" \
-Djava.library.path="${PROGRAM_DIR}" \
-Dazureus.install.path="${PROGRAM_DIR}" \
-Dazureus.script="$0" \
$JAVA_PROPS \
"$@" > ~/azScript
if [ -f ~/azScript ]; then
chmod +x ~/azScript
. ~/azScript
rm ~/azScript
fi
}
echo $MSG_STARTING
# locate and test the java executable
if [ "$JAVA_PROGRAM_DIR" == "" ]; then
if ! look_for_java ; then
exit 1
fi
fi
# get the app dir if not already defined
if [ -z "$PROGRAM_DIR" ]; then
PROGRAM_DIR=`dirname "$0"`
PROGRAM_DIR=`cd "$PROGRAM_DIR"; pwd`
else
if [ "$(echo ${PROGRAM_DIR}/*.jar)" = "${PROGRAM_DIR}/*.jar" ]; then
echo "You seem to have set an invalid PROGRAM_DIR, unable to continue!"
exit 1
elif [ ! -f "${PROGRAM_DIR}/Azureus2.jar" ]; then
echo "Unable to locate Azureus2.jar in $PROGRAM_DIR, aborting!"
exit 1
fi
fi
# Change path here so we can do for loop on program dirs with spaces
cd "${PROGRAM_DIR}"
# build the classpath
for FILE in ./*.jar; do
CLASSPATH="${CLASSPATH:+${CLASSPATH}:}$FILE"
done
# setup Java System Properties (no spaces in values)
JAVA_PROPS="-Dazureus.script.version=${SCRIPT_VERSION}"
if [ ! "$JAVA_ISGCJ x" = " x" ] ; then
JAVA_PROPS="$JAVA_PROPS -Dgnu.gcj.runtime.VMClassLoader.library_control=never"
fi
# some distros symlink application level plugins into the users's plugin directory..
# remove all symlinks in user's plugin directory
find ~/.azureus/plugins -maxdepth 1 -type l -xtype d -exec rm {} \;
runJavaOutput "org.gudy.azureus2.platform.unix.ScriptBeforeStartup" "$@";
echo $MSG_LOADING
echo "${JAVA_PROGRAM_DIR}java ${JAVA_ARGS} -cp \"${CLASSPATH}\" -Djava.library.path=\"${PROGRAM_DIR}\" -Dazureus.install.path=\"${PROGRAM_DIR}\" -Dazureus.script=\"$0\" $JAVA_PROPS $START_CLASS $@"
# Don't use "exec -a Azureus ..." here as exec quits this script after completion,
# preventing ScriptAfterShutdown from running, which installs updates and does
# restarts
${JAVA_PROGRAM_DIR}java "${JAVA_ARGS}" \
-cp "${CLASSPATH}" \
-Djava.library.path="${PROGRAM_DIR}" \
-Dazureus.install.path="${PROGRAM_DIR}" \
-Dazureus.script="$0" \
$JAVA_PROPS \
$START_CLASS "$@"
echo $MSG_AZEXIT
runJavaOutput "org.gudy.azureus2.platform.unix.ScriptAfterShutdown" "$@";
echo $MSG_TERMINATED
|