123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- #!/bin/sh
- #
- # Install the JRE.
- #
-
- # Find out what params we should pass to things.
- # Solaris has a nice and ancient version of grep in /usr/bin
- grep -na "" /dev/null >/dev/null 2>&1
- if [ $? -eq 2 ]; then
- GREPOPTS="-n"
- else
- GREPOPTS="-na"
- fi;
- # Solaris also has a crappy version of tail!
- tail -n +1 /dev/null >/dev/null 2>&1
- if [ $? -eq 2 ]; then
- TAILOPTS="+"
- else
- TAILOPTS="-n +"
- fi;
- # Check the which command exists, and if so make sure it behaves how we want
- # it to...
- WHICH=`which which 2>/dev/null`
- if [ "" = "${WHICH}" ]; then
- echo "which command not found. Aborting.";
- exit 0;
- else
- # Solaris sucks
- BADWHICH=`which /`
- if [ "${BADWHICH}" != "" ]; then
- echo "Replacing bad which command.";
- # "Which" on solaris gives non-empty results for commands that don't exist
- which() {
- OUT=`${WHICH} ${1}`
- if [ $? -eq 0 ]; then
- echo ${OUT}
- else
- echo ""
- fi;
- }
- fi;
- fi
-
- # Find out where we are
- BASEDIR=$(cd "${0%/*}" 2>/dev/null; echo $PWD)
-
- PIDOF=`which pidof`
- if [ "${PIDOF}" = "" ]; then
- # For some reason some distros hide pidof...
- if [ -e /sbin/pidof ]; then
- PIDOF=/sbin/pidof
- elif [ -e /usr/sbin/pidof ]; then
- PIDOF=/usr/sbin/pidof
- fi;
- fi;
-
- ISFREEBSD=`uname -s | grep -i FreeBSD`
-
- if [ -e "${BASEDIR}/functions.sh" ]; then
- . ${BASEDIR}/functions.sh
- else
- echo "Unable to find functions.sh, unable to continue."
- exit 1;
- fi;
-
- showLicence() {
- # Get Licence Text
- FILE=`mktemp licence.XXXXXXXXXXXXXX`
- if [ "${ISFREEBSD}" != "" ]; then
- WGET=`which wget`
- FETCH=`which fetch`
- CURL=`which curl`
-
- ARCH=`uname -m`
- RELEASE=`uname -r`
- URL="http://www.dmdirc.com/getjavalicense/`uname -s`/${ARCH}/${RELEASE}"
-
- if [ "${WGET}" != "" ]; then
- ${WGET} -q -O ${FILE} ${URL}
- elif [ "${FETCH}" != "" ]; then
- ${FETCH} -q -o ${FILE} ${URL}
- elif [ "${CURL}" != "" ]; then
- ${CURL} -s -o ${FILE} ${URL}
- fi;
- else
- # Location of licence start
- STARTLINE=`grep ${GREPOPTS} "^more <<\"EOF\"$" jre.bin`
- STARTLINE=$((${STARTLINE%%:*} + 1))
- # Location of licence end
- ENDLINE=`grep ${GREPOPTS} "Do you agree to the above license terms?" jre.bin`
- ENDLINE=$((${ENDLINE%%:*} - 4))
-
- if [ ${ENDLINE} -lt 4 ]; then
- errordialog "Installer Error" "DMDirc has been unable to figure out what to do with this jre download and can not continue. Please raise an issue about this at http://bugs.dmdirc.com"
- exit 1;
- fi;
-
- head -n ${ENDLINE} jre.bin | tail ${TAILOPTS}${STARTLINE} > ${FILE}
- fi;
-
- # Send text to console.
- echo ""
- echo "-----------------------------------------------------------------------"
- echo "Java Licence"
- echo "-----------------------------------------------------------------------"
- cat ${FILE}
- echo "-----------------------------------------------------------------------"
-
- # Now try to use the GUI Dialogs.
- if [ "" != "${ISKDE}" -a "" != "${KDIALOG}" -a "" != "${DISPLAY}" ]; then
- echo "Dialog on Display: ${DISPLAY}"
- ${KDIALOG} --title "DMDirc: Java Licence" --textbox ${FILE} 600 400
- elif [ "" != "${ISGNOME}" -a "" != "${ZENITY}" -a "" != "${DISPLAY}" ]; then
- echo "Dialog on Display: ${DISPLAY}"
- ${ZENITY} --text-info --title "DMDirc: Java Licence" --filename=${FILE} --width=600 --height=400
- fi
-
- # Remove temp file
- rm -Rf ${FILE}
- }
-
-
- if [ "" != "${1}" ]; then
- questiondialog "Java Install" "${1}"
- result=$?
- if [ $result -ne 0 ]; then
- exit 1;
- fi;
- fi;
-
- messagedialog "Java Install" "Before java can be installed, please review the following licence."
- showLicence
- questiondialog "Java Install" "Do you agree to the Java Licence?"
- if [ $? -eq 0 ]; then
- if [ "${ISFREEBSD}" != "" ]; then
- JREJAVAHOME="diablo-jre1.6.0_07"
- else
- # Look to see where the JRE wants to install to
- JREJAVAHOME=`grep ${GREPOPTS} "^javahome=" jre.bin`
- JREJAVAHOME=${JREJAVAHOME##*=}
- fi;
-
- echo "JREJAVAHOME: ${JREJAVAHOME}"
-
- if [ "${UID}" = "" ]; then
- UID=`id -u`;
- fi
- if [ "0" = "${UID}" ]; then
- mkdir -p /usr/lib/jvm/
- installdir=/usr/lib/jvm/${JREJAVAHOME}
- else
- installdir=${HOME}/${JREJAVAHOME}
- fi;
-
- echo "installdir: ${installdir}"
-
- if [ ! -e ${installdir} ]; then
- messagedialog "Java Install" "Java install will begin when you press OK.\nThis may take some time, so please wait.\n\nYou will be informed when the installation is completed."
- if [ "${ISFREEBSD}" != "" ]; then
- mv jre.bin jre.tar.bz2
- tar -jxvf jre.tar.bz2
- mv jre.tar.bz2 jre.bin
- else
- # Hack jre.bin to allow us to install without asking for a licence, or failing
- # the checksum.
-
- # Location of licence start
- STARTLINE=`grep ${GREPOPTS} "^more <<\"EOF\"$" jre.bin`
- STARTLINE=${STARTLINE%%:*}
- # Location of licence end
- ENDLINE=`grep ${GREPOPTS} "Do you agree to the above license terms?" jre.bin`
- ENDLINE=$((${ENDLINE%%:*} - 2))
- if [ ${ENDLINE} -lt 2 ]; then
- errordialog "Installer Error" "DMDirc has been unable to figure out what to do with this jre download and can not continue. Please raise an issue about this at http://bugs.dmdirc.com"
- exit 1;
- fi;
- # Location of checksum start
- CSSTARTLINE=`grep ${GREPOPTS} "^if \[ -x /usr/bin/sum \]; then$" jre.bin`
- CSSTARTLINE=${CSSTARTLINE%%:*}
- # Location of checksum end
- CSENDLINE=`grep ${GREPOPTS} "Can't find /usr/bin/sum to do checksum" jre.bin`
- CSENDLINE=$((${CSENDLINE%%:*} + 2))
- # Location of script end
- SCENDLINE=`grep ${GREPOPTS} "^echo \"Done.\"$" jre.bin`
- SCENDLINE=$((${SCENDLINE%%:*} + 2 - (${ENDLINE} - ${STARTLINE}) - (${CSENDLINE} - ${CSSTARTLINE})))
- # Remove the licence and checksum stuff!
- head -n $((${STARTLINE} -1)) jre.bin > jre.bin.tmp
- tail ${TAILOPTS}$((${ENDLINE})) jre.bin | head -n $((${CSSTARTLINE} -1 - ${ENDLINE})) >> jre.bin.tmp
- echo "tail \${tail_args} +${SCENDLINE} \"\$0\" > \$outname" >> jre.bin.tmp
- tail ${TAILOPTS}$((${CSENDLINE})) jre.bin >> jre.bin.tmp
-
- PIPE=`mktemp installprogresspipe.XXXXXXXXXXXXXX`
- /bin/sh ${PWD}/progressbar.sh --pulsate "Installing JRE. Please wait.." 100 ${PIPE} &
- sleep 1;
- echo "-1" > ${PIPE}
- # This is supposed to write to the pipe as it does stuff, but it appears
- # not to work properly.
- yes | sh jre.bin.tmp | egrep --line-buffered -i "(extracting|inflating):" > ${PIPE};
- echo "quit" > ${PIPE}
- # rm -Rf jre.bin.tmp
- fi;
-
- mv ${JREJAVAHOME} ${installdir}
-
- if [ "0" = "${UID}" ]; then
- # Add to global path.
- if [ -e "/usr/bin/java" ]; then
- rm -Rf /usr/bin/java
- fi;
- ln -s /usr/lib/jvm/${JREJAVAHOME}/bin/java /usr/bin/java
-
- # This allows the main installer to continue with the new java version,
- # incase the shell doesn't find the new binary.
- echo "Adding java-bin: ${installdir}/bin/java -> ${PWD}/java-bin"
- ln -s ${installdir}/bin/java ${PWD}/java-bin
- else
- # Add to path.
- echo "" >> ${HOME}/.profile
- echo "# set PATH so it includes user's private java if it exists" >> ${HOME}/.profile
- echo "if [ -d ~/${JREJAVAHOME}/bin ] ; then" >> ${HOME}/.profile
- echo " PATH=~/${JREJAVAHOME}/bin:\${PATH}" >> ${HOME}/.profile
- echo "fi" >> ${HOME}/.profile
-
- if [ -e ${HOME}/.cshrc ]; then
- echo "" >> ${HOME}/.cshrc
- echo "# set PATH so it includes user's private java if it exists" >> ${HOME}/.cshrc
- echo "if( -d ~/${JREJAVAHOME}/bin ) then" >> ${HOME}/.cshrc
- echo " set path = (~/${JREJAVAHOME}/bin \$path)" >> ${HOME}/.cshrc
- echo "endfi" >> ${HOME}/.cshrc
- fi
-
- # This allows the main installer to continue with the new java version.
- echo "Adding java-bin: ${installdir}/bin/java -> ${PWD}/java-bin"
- ln -s ${installdir}/bin/java ${PWD}/java-bin
-
- # This allows dmdirc launcher to find the jre if the path is not set.
- ln -sf ${installdir} ${HOME}/jre
- fi;
-
- messagedialog "Java Install" "Java installation complete"
- exit 0;
- else
- messagedialog "Java Install" "An existing install was found at ${installdir}, but this directory is not in the current path, DMDirc setup will try to use this version of java for the install."
- echo "Adding java-bin: ${installdir}/bin/java -> ${PWD}/java-bin"
- ln -s ${installdir}/bin/java ${PWD}/java-bin
- exit 0;
- fi;
- else
- errordialog "Java Install" "You must agree to the licence before java can be installed"
- fi;
- exit 1;
|