install-jds revision 10139
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose#!/bin/bash
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseARCH=`uname -p`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseif [ $ARCH != "sparc" ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose ARCH=x86
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosefi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseALL_PRODUCTS="jds=JDS Common Packages
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejds-src=Sources for JDS Common Packages
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosegnome=GNOME 2.17 Desktop
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosegnome-src=GNOME 2.17 Source
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosemozilla=Mozilla 1.7 Web Browser
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosemozilla-src=Mozilla Source
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosefirefox=Firefox Web Browser
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosefirefox-src=Firefox Source
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosethunderbird=Thunderbird Email and News Client
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosethunderbird-src=Thunderbird Source
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseidn
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseidn-src
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseevolution=Evolution Email and Calendar
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseevolution-src=Evolution Source
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseglow=Integrated Collaboration Environment
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejai=Java Advanced Imaging
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejai-iio=Java Advanced Imaging
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejava=Java Runtime Environment
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejava-src
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejavaapps=Java Applications
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejavaapps-src=Java Applications Sources
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejava3d
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejcs
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejdk=Java Development Kit
546f1e38fa7ec1d86dd44117dda45f456fb00d39Lukas Slebodnikjdic=Java Desktop Integration Components
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejdnc=Java Desktop Network Components
45f75fc8e98092fa48faa3d180fd42f7efd51486Stephen Gallagherjinput=Java Controller API
45f75fc8e98092fa48faa3d180fd42f7efd51486Stephen Gallagherjoal=Java bindings for OpenAL API
45f75fc8e98092fa48faa3d180fd42f7efd51486Stephen Gallagherjogl=Java bindings for OpenGL API
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosel10n=Globalization Tools
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosel10n-src=Globalization Tools Sources
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosel10nmessages=Localized Messages
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseiiim=Input Method Switcher
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseiiim-src=Input Method Switcher Sources
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosemuscle
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseplugins=Third Party Browser Plugins
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseplugins-src
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosescs-client
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosestaroffice=StarOffice office suite
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosestarsuite=StarSuite office suite
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseso-sdk=StarOffice Software Development Kit
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseupdater
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosenetbeans
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosejavahelp
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosexserver=X.org server
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosenodist=Extra packages for JDS developers
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosenodist-src=Extra sources for JDS developers
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseapoc-daemon=APOC Daemon
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseapoc-daemon-src=APOC Daemon Sources
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseapoc-sol-$ARCH=APOC Configuration Manager
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseapoc-sol-$ARCH-src=APOC Configuration Manager Sources"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseALL_PATCHDIRS="patches-xserver=X server patches
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosepatches-mozilla=Patches required for the Mozilla Web browser
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosepatches-gnome=Patches required for the GNOME Desktop"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BosePKGADD=/usr/sbin/pkgadd
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BosePATCHADD=/usr/sbin/patchadd
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BosePKGRM=/usr/sbin/pkgrm
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BosePKGINFO=/usr/bin/pkginfo
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseADMIN=/tmp/.pkg.$$.admin
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseADMIN_CREATED=no
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseMYNAME="$0"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseMYDIR=`dirname $0`
d6f283302268520c1506fb3da4f2a22f5a741be5Michal ZidekMYDIR=`( cd $MYDIR; pwd )`
d6f283302268520c1506fb3da4f2a22f5a741be5Michal ZidekMYNAME=$(basename $0)
d6f283302268520c1506fb3da4f2a22f5a741be5Michal ZidekMYARGS="$*"
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekLOGFILE=/var/sadm/install/logs/jds-install.log.$$
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekINFOFILE=$MYDIR/.pkginfo
504902d12a1ea1d3774bacd9a35efd9cecd5f9c2Sumit BoseSYSTEM=`uname -s`
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit BoseARCH=`uname -p`
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit BoseRELEASE=`uname -r`
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit BoseKERNELID=`uname -v`
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose# ask "question" variable_name "default answer"
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Boseask () {
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose echo -n "$1"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose if [ ! -z $3 ]; then
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose echo -n " [$3]: "
c377d4d604f1e7b35c484711f1084b7a761772b6Sumit Bose else
c377d4d604f1e7b35c484711f1084b7a761772b6Sumit Bose echo -n ": "
c377d4d604f1e7b35c484711f1084b7a761772b6Sumit Bose fi
c377d4d604f1e7b35c484711f1084b7a761772b6Sumit Bose
c377d4d604f1e7b35c484711f1084b7a761772b6Sumit Bose read -e val
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ "x$val" = x ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose eval "$2=\"$3\""
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose else
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose eval "$2=\"$val\""
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose# ask_yes_no "question" variable_name "default answer"
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichlask_yes_no () {
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl yes_no_repeat=yes
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl while [ $yes_no_repeat = yes ]; do
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl yes_no_repeat=no
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl ask "${@}"
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl eval "the_ans=\"\$$2\""
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl echo "$the_ans" | grep -i "^`l10n_print yes`$" > /dev/null
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl if [ $? = 0 ]; then
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl eval "$2=yes"
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl return
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "$the_ans" | grep -i "^`l10n_print no`$" > /dev/null
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ $? = 0 ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose eval "$2=no"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose return
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose l10n_print "Please answer yes or no"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose yes_no_repeat=yes
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose done
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Boseget_req () {
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose test -r $INFOFILE && \
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose grep -i "^$1[ ]*=[ ]*" $INFOFILE | cut -f2 -d= | tr -d ' '
c51a204a40b8f85f7f525edb3e24520916d8b9c7Sumit Bose}
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseREQ_SYSTEM=`get_req system`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseREQ_ARCH=`get_req arch`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseREQ_RELEASE=`get_req release`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit BoseREQ_KERNELID=`get_req kernelid`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
2998435fcc95857b73049b3955af9889ab595f24Sumit Boseversion_lower () {
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose declare -a version1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose declare -a version2
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose IFS=' '
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose for n in `echo $1 | sed -e 's/Generic/999999/' | tr -cs "[0-9]" "[ *]"`; do
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose version1=(${version1[*]} $n)
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose done
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose for n in `echo $2 | sed -e 's/Generic/999999/' | tr -cs "[0-9]" "[ *]"`; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose version2=(${version2[*]} $n)
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose done
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose typeset -i n=0
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose while /bin/true; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ -n "${version1[$n]}" ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ -n "${version2[$n]}" ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ ${version1[$n]} -lt ${version2[$n]} ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose return 0
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose else
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ ${version1[$n]} -gt ${version2[$n]} ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose return 1
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose else
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose return 1
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek fi
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek else
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek if [ -n "${version2[$n]}" ]; then
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek return 0
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek fi
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek return 1
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek fi
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek typeset n=$n+1
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek done
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek}
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidekusage () {
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek echo "%s [options]" "$0"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print "Install the Java Desktop System, GNOME 2.17, Solaris Edition"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " -h, --help display this help"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " --quiet, -q less verbose operation."
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " --force, -f ignore any errors and continue."
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " --ignore, -i ignore file conflicts and continue."
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " -n non-interactive installation."
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " -R rootdir install into an alternative root directory."
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " -p prod1,prod2,..."
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " select products for installation"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " -a install all products"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " --nopatch don't install OS patches"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " --accept accept the license terms"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print " --tmpdir dir create temporary files in dir instead of /tmp"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek exit 1
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek}
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekQUIET=no
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekFORCE=no
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekIGNORE_CONFLICT=no
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekINTERACTIVE=yes
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekROOTDIR=
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekPRODUCTS=
46222e5191473f9a46aec581273eb2eef22e23beMichal ZidekNO_PATCHES=no
8babbeee01e67893af4828ddfc922ecac0be4197Pavel ReichlBASE_TEMPDIR=/tmp
8babbeee01e67893af4828ddfc922ecac0be4197Pavel ReichlLICENSE_ACCEPTED=yes
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichlprocess_options () {
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl while [ $# != 0 ]; do
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl case "$1" in
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl --help | -h )
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl usage
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl ;;
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl --quiet | -q )
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl QUIET=yes
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek --force | -f )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek FORCE=yes
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek --ignore | -i )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek IGNORE_CONFLICT=yes
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek -R )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek shift
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ROOTDIR=$1
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek if [ "x$ROOTDIR" = x ]; then
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print "Option %s requires an argument" "-R"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek usage
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek fi
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek -n )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek INTERACTIVE=no
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek -a )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek select_all_products
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek unselect_all_srcs
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek unselect_product nodist
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek --accept )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek LICENSE_ACCEPTED=yes
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek -p )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek shift
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek PRODUCTS="$1"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek if [ "x$PRODUCTS" = x ]; then
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print "Option %s requires an argument" "-R"
504902d12a1ea1d3774bacd9a35efd9cecd5f9c2Sumit Bose usage
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek fi
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek --tmpdir )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek shift
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek BASE_TEMPDIR="$1"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek if [ "x$BASE_TEMPDIR" = x ]; then
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print "Option %s requires an argument" "--tmpdir"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek usage
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek fi
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
504902d12a1ea1d3774bacd9a35efd9cecd5f9c2Sumit Bose --nopatch )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek NO_PATCHES=yes
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek * )
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek l10n_print "Error: %s: invalid argument" "$1"
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek usage
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek ;;
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek esac
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek shift
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek done
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek}
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek
46222e5191473f9a46aec581273eb2eef22e23beMichal Zideklogrun () {
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek status_file=/tmp/.command_status.$$
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek rm -f $status_file
46222e5191473f9a46aec581273eb2eef22e23beMichal Zidek echo "running $*" >> $LOGFILE
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "*** command output follows ***" >> $LOGFILE
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ "x$QUIET" = xno ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose ( "${@}" 2>&1 ; echo $? > $status_file ) | tee -a $LOGFILE
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose else
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose ( "${@}" 2>&1 ; echo $? > $status_file ) >> $LOGFILE
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "*** command output ends ***" >> $LOGFILE
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose status=`cat $status_file`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose rm -f $status_file
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose return $status
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosebackup () {
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ -e "$1" ]; then
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose backup "$1~"
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose l10n_print "Saving file %s as %s~" "$1" "$1"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose mv "$1" "$1~" || msg_fatal "Failed to back up file %s" "$1"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseclean_up () {
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose if [ "x$ADMIN_CREATED" = xyes ]; then
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose rm -f $ADMIN
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose fi
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose cd /
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose rm -rf $TEMPDIR
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose}
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Boseclean_up_and_abort () {
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose clean_up
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose l10n_print "Interrupted."
9ef0d43b961c05f1aae2ec21eed4142ae3221bc3Sumit Bose exit 1
9ef0d43b961c05f1aae2ec21eed4142ae3221bc3Sumit Bose}
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit BoseTEXTDOMAIN=install-jds
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bosel10n_print () {
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose l10n_msg=`TEXTDOMAINDIR="$MYDIR"/.install gettext -d "$TEXTDOMAIN" "$1"`
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose shift
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose printf "$l10n_msg\n" "${@}"
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose}
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bosemsg_fatal () {
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose msg_log "${@}"
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose l10n_print "${@}" 1>&2
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose clean_up
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose exit 1
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose}
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bosemsg_error () {
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose msg_log "${@}"
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose l10n_print "${@}" 1>&2
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose if [ $FORCE = no ]; then
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose if [ "x$INTERACTIVE" = xyes ]; then
95a08a0c02281b28bd1914e0727b40ae25b4e16aSumit Bose ask_yes_no "`l10n_print 'Would you like to continue?'`" ans \
9ef0d43b961c05f1aae2ec21eed4142ae3221bc3Sumit Bose `l10n_print "no"`
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose if [ "x$ans" = xno ]; then
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose clean_up
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose exit 1
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl fi
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl WARNINGS=yes
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl else
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl clean_up
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl exit 1
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl fi
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl else
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl WARNINGS=yes
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl fi
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl}
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichlmsg_log () {
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl test -f $LOGFILE || return
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl log_arg1="$1"
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl shift
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl printf "$log_arg1\n" "${@}" >> $LOGFILE
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl}
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl
8babbeee01e67893af4828ddfc922ecac0be4197Pavel ReichlWARNINGS=no
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichlmsg_warning () {
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl l10n_print "${@}"
c744f9df3b6b169c8c70fcfd063ab6402229218eLukas Slebodnik WARNINGS=yes
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl}
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl# check_disk_space directory minsize(kB)
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichlcheck_disk_space () {
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl dir_to_check="$ROOTDIR$1"
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl while [ ! -d $dir_to_check ]; do
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl dir_to_check="`dirname $dir_to_check`"
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl done
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl freespace=`df -k "$dir_to_check" | awk '!/Filesystem/ {print $4}'`
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl if [ $freespace -le $2 ]; then
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl return 1
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl fi
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl return 0
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl}
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl# so_disk_space_check prodname
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichlso_disk_space_check () {
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl # Need large tmp area (>=1GB) for StarOffice/StarSuite installation.
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl check_disk_space $TEMPDIR 1048576 || \
8babbeee01e67893af4828ddfc922ecac0be4197Pavel Reichl msg_error "Your %s directory has less than 1GB free.\nYou need to specify an alternative temp dir with the --tmpdir switch." "$BASE_TEMPDIR"
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose}
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Boseinit () {
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose USER_IS_ROOT=0
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose /usr/bin/id | /usr/bin/grep '^uid=0(' > /dev/null 2>&1
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose if [ $? != 0 ]; then
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose msg_fatal "Only root can install this product."
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose fi
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose if [ $FORCE = no ]; then
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose trap clean_up_and_abort HUP INT TERM
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose else
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose trap clean_up_and_abort HUP INT TERM ERR
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose fi
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose trap clean_up QUIT EXIT
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose}
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosewrite_admin () {
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose backup "$ADMIN"
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose ADMIN_CREATED=yes
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose cat > $ADMIN << EOF
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosemail=
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Boseinstance=unique
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Boserunlevel=nocheck
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosesetuid=nocheck
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Boseaction=nocheck
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosepartial=quit
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Boseidepend=nocheck
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Boserdepend=nocheck
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosespace=quit
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit BoseEOF
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose if [ $IGNORE_CONFLICT = no ]; then
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose cat >> $ADMIN << EOF_2
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Boseconflict=quit
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit BoseEOF_2
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose else
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose cat >> $ADMIN << EOF_3
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Boseconflict=nocheck
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit BoseEOF_3
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose fi
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose}
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosedeclare -a MOUNT_POINTS
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosedeclare -a MP_SUMS
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosedisk_usage_init () {
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose mps=`df -kl | grep '^/' | awk '{print $6}' | sort -r`
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose IFS="
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose"
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose typeset -i i=0
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose for mp in $mps; do
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose MOUNT_POINTS[$i]="$mp"
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose MP_SUMS[$i]=0
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose typeset i=$i+1
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose done
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose MOUNT_POINT_COUNT=$i
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose}
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose# disk_usage_add <dir> <size>
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bosedisk_usage_add () {
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose typeset -i i=0
ff6e24f4474cca6226cd44c47ba2ec6ba6cf9a16Sumit Bose while [ $i -lt $MOUNT_POINT_COUNT ]; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose mpname=${MOUNT_POINTS[$i]}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose case $1 in
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose ${mpname}* )
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose mpsize=${MP_SUMS[$i]}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose mpsize=`expr $mpsize + $2`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose MP_SUMS[$i]=$mpsize
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose break
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose ;;
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose esac
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose typeset i=$i+1
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose done
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose}
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bosedisk_usage_check () {
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose typeset -i i=0
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose while [ $i -lt $MOUNT_POINT_COUNT ]; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose mpname=${MOUNT_POINTS[$i]}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose mpsize=${MP_SUMS[$i]}
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose mpsize=`expr $mpsize + $mpsize`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ $mpsize -gt 0 ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose check_disk_space $mpname $mpsize || \
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose msg_error "Your %s filesystem has less than %s kB free\nYou will not be able to install JDS." "$ROOTDIR$mpname" "$mpsize"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose typeset i=$i+1
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose done
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose}
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose#install_pkgs <dir>
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Boseinstall_product () {
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ORDERFILE=$MYDIR/$1/.pkgorder
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose if [ -r $ORDERFILE ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose export IFS=' '
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ALL_PKGS=$(echo $(cat $ORDERFILE | sed -e 's/$/.tar.gz/'))
c51a204a40b8f85f7f525edb3e24520916d8b9c7Sumit Bose else
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ALL_PKGS=$(cd $MYDIR/$1; find . -name '*.tar.gz' -print -o -name '*.tgz' -print)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ -z "$ALL_PKGS" ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose msg_error "No packages found."
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose return
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose msg_log "Starting installation of %s at %s" "$1" "`LANG=C LC_ALL=C date`"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose IFS='
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose'
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose # Remove old Mozilla 1.x packages.
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ $1 == 'firefox' -o $1 == 'thunderbird' ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose moz_pkgs="SUNWmozspell
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit BoseSUNWmozpsm
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit BoseSUNWmoznss-devel
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit BoseSUNWmoznss
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit BoseSUNWmoznspr-devel
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit BoseSUNWmozmail
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit BoseSUNWmozjs-debugger
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit BoseSUNWmozilla-devel
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit BoseSUNWmozgm
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit BoseSUNWmozdom-inspector
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit BoseSUNWmozchat
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit BoseSUNWmozilla
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit BoseSUNWmoznspr
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit BoseSUNWmoznav
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit BoseSUNWthunderbird-devel"
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose for moz_pkg in $moz_pkgs; do
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose is_installed "$moz_pkg" && remove_pkg "$moz_pkg"
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose done
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose fi
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose # Remove evolution-socs-connect packages as they are incompatible with
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose # evolution-jescs (connector for Java Enterprise System Calendar Server)
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose if [ $1 == 'evolution' ]; then
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose evo_pkgs="SUNWevolution-socs-connect
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit BoseSUNWevolution-socs-connect-share"
6f504738cad1ee9daa1bd6eec721caceef65f21dSumit Bose for evo_pkg in $evo_pkgs; do
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose is_installed "$evo_pkg" && remove_pkg "$evo_pkg"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose done
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose fi
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose logrun mkdir -p $TEMPDIR || \
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_fatal "ERROR: Failed to create temporary directory %s" "$TEMPDIR"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose cd $TEMPDIR
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose for pkg in $ALL_PKGS; do
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose if [ ! -r $MYDIR/$1/$pkg ]; then
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_error "ERROR: cannot read file %s" "$pkg"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose continue
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose fi
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose logrun sh -c "gunzip -c $MYDIR/$1/$pkg | /bin/tar xf -"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose if [ $? != 0 ]; then
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_error "ERROR: Failed to unpack %s" "$pkg"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose continue
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose fi
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose pkg0=$(basename $pkg)
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose pkg0=$(echo "$pkg0" | sed -e 's/\.tar.gz$//' -e 's/\.tgz$//')
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose if [ ! -d $pkg0 ]; then
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_error "ERROR: Package %s not found in %s" "$pkg0" "$pkg"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose continue
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose fi
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose if [ "x$QUIET" = xno ]; then
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose l10n_print "Installing package %s" "$pkg0"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose fi
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_log "Installing package $pkg0"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose if [ "x$ROOTDIR" != "x" ]; then
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose logrun $PKGADD -R "$ROOTDIR" -a $ADMIN -n -d $TEMPDIR $pkg0 || \
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_error "ERROR: Failed to install package %s" "$pkg0"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose else
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose logrun $PKGADD -a $ADMIN -n -d $TEMPDIR $pkg0 || \
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_error "ERROR: Failed to install package %s" "$pkg0"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose fi
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose logrun rm -rf $TEMPDIR/$pkg0
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose done
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose}
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Boseremove_pkg () {
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose if [ "x$QUIET" = xno ]; then
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose l10n_print "Uninstalling %s" "$1"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose fi
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_log "Uninstalling %s" "$1"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose if [ "x$ROOTDIR" != x ]; then
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose logrun $PKGRM -R "$ROOTDIR" -a $ADMIN -n "$1"'.*' || \
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_error "ERROR: Failed to remove package %s" "$1"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose else
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose logrun $PKGRM -a $ADMIN -n "$1"'.*' || \
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose msg_error "ERROR: Failed to remove package %s" "$1"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose fi
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose}
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Boseis_installed () {
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose $PKGINFO -q "$1.*"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose}
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Boseremove_always () {
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose pkgs_to_remove="`cat $MYDIR/$1/.remove-always`"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose IFS="
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose for glob in "$pkgs_to_remove"; do
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose pkgs=$(cd $MYDIR/$1; echo $glob)
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose for pkg in $pkgs; do
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose pkg=`basename $pkg`
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose pkg=`basename $pkg .tar.gz`
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose pkg=`basename $pkg .tgz`
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose is_installed "$pkg" && remove_pkg "$pkg"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose done
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose done
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose}
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Boseremove_if_older () {
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose pkgs_to_remove="`cat $MYDIR/$1/.remove-if-older`"
9869c20a4db6ce7e285a9d7ae7007718a6de207eSumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose IFS="
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose for glob in $pkgs_to_remove; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose pkgs=$(cd $MYDIR/$1; echo "$glob")
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose for pkg in $pkgs; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose pkg=`basename $pkg .tar.gz`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose pkg=`basename $pkg .tgz`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose remove_pkg $pkg
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose done
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose done
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bosemain_menu () {
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose while /bin/true; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose clear
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo ",--------------------------------------------------------------------------"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "| 1) " `l10n_print "Default Installation"`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "| 2) " `l10n_print "Custom Installation"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "|"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| X) " `l10n_print "Exit"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "|"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ask '`---> '"`l10n_print 'Please select:'`" "menu_sel" "1"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose case $menu_sel in
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose 1)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ "x$PRODUCTS" = x ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose select_all_products
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose unselect_all_srcs
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose unselect_product nodist
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose do_install || return $?
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose break
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose 2)
c51a204a40b8f85f7f525edb3e24520916d8b9c7Sumit Bose custom_menu || return $?
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose x|X)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose return 2
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose *)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose l10n_print "Invalid selection"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose sleep 1
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose esac
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose done
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose return 0
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose}
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bosecustom_menu () {
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose while /bin/true; do
c63c8a63ab062a9c4397278a29b12bd32c4f3895Sumit Bose clear
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo ",--------------------------------------------------------------------------"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| 1) " `l10n_print "Install All Products"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| 2) " `l10n_print "Select Products to Install"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ ! -z "$PATCHDIRS" ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| 3) " `l10n_print "Select Patches to Install"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "|"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "| I) " `l10n_print "Start Installation"`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "| X) " `l10n_print "Exit"`
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo "|"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose ask '`---> '"`l10n_print 'Please select:'`" "menu_sel" "I"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose case $menu_sel in
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose 1)
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose select_all_products
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose unselect_all_srcs
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose unselect_product nodist
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina select_all_patches
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina do_install || return $?
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina return 1
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina ;;
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina 2)
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina select_product_menu || return $?
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina ;;
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina 3)
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina if [ ! -z "$PATCHDIRS" ]; then
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina select_patchdir_menu || return $?
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina else
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina l10n_print "Invalid selection"
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina sleep 1
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina fi
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina ;;
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina i|I)
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina do_install || return $?
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina return 1
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina ;;
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina x|X)
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina return 2
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina ;;
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina *)
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina l10n_print "Invalid selection"
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina sleep 1
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina esac
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina done
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina return 0
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina}
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březinaso_menu () {
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina while /bin/true; do
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina clear
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina echo ",--------------------------------------------------------------------------"
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina echo "| 1) StarOffice"
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina echo "| 2) StarSuite"
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina echo "|"
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina echo "| X) " `l10n_print "Exit"`
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina echo "|"
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina ask '`---> '"`l10n_print 'Please select:'`" "menu_sel" "1"
3b35ff47651e4893ce537a273466766b962362daLukas Slebodnik case $menu_sel in
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina 1)
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina unselect_product starsuite
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina return 0
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina ;;
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina 2)
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina unselect_product staroffice
5c94d34d890c75ec179a32d2cda4fa060d2b5f0cPavel Březina return 0
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose ;;
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose x|X)
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose return 2
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose ;;
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose *)
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose l10n_print "Invalid selection"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose sleep 1
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose esac
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose done
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose return 0
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Boseselect_patchdir_menu () {
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose IFS=,
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose while /bin/true; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose clear
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose echo ",--------------------------------------------------------------------------"
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose typeset -i N=1
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose for pdir in $PATCHDIRS; do
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose pname=`echo "$ALL_PATCHDIRS" | grep "^$pdir=" | cut -f2- -d= | cut -c-60`
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose n=`echo " $N" | sed -e 's/^.*\(..\)$/\1/'`
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose pn=$(echo $pdir | cut -f2 -d-)
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose eval "plist=\"\$ALL_${pn}_PATCHES\""
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose eval "patch_${N}_list=\"$plist\""
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose patches_are_selected "$plist"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose res=$?
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose if [ $res = 0 ]; then
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose echo "| $n) [x] $pname"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose eval "patch_${N}_selected=1"
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose elif [ $res = 1 ]; then
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose echo "| $n) [:] $pname"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose eval "patch_${N}_selected=0"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose else
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose echo "| $n) [ ] $pname"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose eval "patch_${N}_selected=0"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose fi
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose typeset N=$N+1
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose done
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose echo "|"
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose echo "| A) " `l10n_print "Select All"`
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose echo "| U) " `l10n_print "Unselect All"`
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose echo "|"
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose echo "| S) " `l10n_print "Select individual patches"`
7f02ba09b9481f59c309fd09a88089857e7fe79fSumit Bose echo "| I) " `l10n_print "Start Installation"`
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose echo "| R) " `l10n_print "Return to previous menu"`
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose echo "| X) " `l10n_print "Exit"`
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose echo "|"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose ask '`---> '"`l10n_print 'Enter item to select/unselect:'`" "menu_sel" "R"
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose case $menu_sel in
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose i|I)
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose do_install || return $?
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose return 1
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose ;;
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose x|X)
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose return 2
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose ;;
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose r|R)
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose return 0
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose ;;
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose a|A)
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose select_all_patches
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose ;;
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose s|S)
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose select_patch_menu || return $?
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose ;;
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose u|U)
3cbbfb4b05d0eb0a0809704e83589d0075e117a0Sumit Bose PATCHES=
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose *)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose eval "the_patches=\$patch_${menu_sel}_list"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ -z "$the_patches" ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose l10n_print "Invalid selection"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose sleep 1
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose else
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose eval "is_sel=\$patch_${menu_sel}_selected"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ "x$is_sel" = x1 ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose unselect_patches "$the_patches"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose else
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose select_patches "$the_patches"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose esac
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose done
c51a204a40b8f85f7f525edb3e24520916d8b9c7Sumit Bose}
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit BosePATCH_INFO_LOADED=no
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Boseload_patch_info () {
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose test "x$PATCH_INFO_LOADED" = "xyes" && return
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose IFS=,
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose for p in $1; do
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose test -z "$p" && continue
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose mkdir -p $TEMPDIR/patchdesc
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose cd $TEMPDIR/patchdesc
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose unzip $MYDIR/$p */README.* > /dev/null 2>&1
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose dummy=`basename $p .zip`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose pdesc=`grep '^Synopsis:' */README.* | head -1 | cut -f2- -d:` \
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose > /dev/null 2>&1
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ "x$pdesc" = x ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose pdesc="Patch $dummy"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose dummy=`echo $dummy | cut -f1 -d-`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose eval "PATCH_DESC_${dummy}=\"$pdesc\""
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose cd /
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose rm -rf $TEMPDIR/patchdesc
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose cd $TEMPDIR
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose done
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose PATCH_INFO_LOADED=yes
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose}
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Boseselect_patch_menu () {
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose load_patch_info "$ALL_PATCHES"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose IFS=,
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose while /bin/true; do
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose clear
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo ",--------------------------------------------------------------------------"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose typeset -i N=1
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose
c51a204a40b8f85f7f525edb3e24520916d8b9c7Sumit Bose for ps in $ALL_PATCHES; do
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose test -z "$ps" && continue
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose pbn=`basename $ps`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose pnum=`basename $pbn .zip`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose pbn=`echo $pbn | cut -f1 -d-`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose eval "pname=\$PATCH_DESC_${pbn}"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose pcat=`echo "$ps" | cut -f1 -d/ | cut -f2 -d-`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose n=`echo " $N" | sed -e 's/^.*\(..\)$/\1/'`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose pn=$(echo $pdir | cut -f2 -d-)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose eval "patch_${N}_name=\"$ps\""
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose patch_is_selected "$ps"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose res=$?
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose if [ $res = 0 ]; then
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| $n) [x] ($pcat) $pnum: $pname"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose eval "patch_${N}_selected=1"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose else
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| $n) [ ] ($pcat) $pnum: $pname"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose eval "patch_${N}_selected=0"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose fi
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose typeset N=$N+1
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose done
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "|"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| A) " `l10n_print "Select All"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| U) " `l10n_print "Unselect All"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "|"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| I) " `l10n_print "Start Installation"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| R) " `l10n_print "Return to previous menu"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "| X) " `l10n_print "Exit"`
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose echo "|"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ask '`---> '"`l10n_print 'Enter item to select/unselect:'`" "menu_sel" "R"
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose case $menu_sel in
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose i|I)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose do_install || return $?
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose return 1
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
c51a204a40b8f85f7f525edb3e24520916d8b9c7Sumit Bose x|X)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose return 2
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose r|R)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose return 0
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose a|A)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose select_all_patches
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose s|S)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose select_patch_menu || return $?
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose u|U)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose PATCHES=
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose ;;
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose *)
b6dfbf81c61d4431aaa81687ec53e892f8b71edbSumit Bose eval "the_patch=\$patch_${menu_sel}_name"
c51a204a40b8f85f7f525edb3e24520916d8b9c7Sumit Bose if [ -z "$the_patch" ]; then
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose l10n_print "Invalid selection"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose sleep 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose else
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose eval "is_sel=\$patch_${menu_sel}_selected"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose if [ "x$is_sel" = x1 ]; then
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose unselect_patches "$the_patch"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose else
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose select_patches "$the_patch"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose fi
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose fi
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose esac
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose done
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose}
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose
2998435fcc95857b73049b3955af9889ab595f24Sumit Boseselect_product_menu () {
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose IFS="
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose save_PR="$PRODUCTS"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose select_all_products
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose AP="$PRODUCTS"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose PRODUCTS="$save_PR"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose while /bin/true; do
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose clear
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo ",--------------------------------------------------------------------------"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose typeset -i N=1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose for prod in $AP; do
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose prodname=`echo "$ALL_PRODUCTS" | grep "^$prod=" | cut -f2- -d= | cut -c-60`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose if [ -z "$prodname" ]; then
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose prodname=$prod
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose fi
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose n=`echo " $N" | sed -e 's/^.*\(..\)$/\1/'`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose eval "prod_${N}_name=\"$prod\""
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose product_is_selected $prod
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose if [ $? = 0 ]; then
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "| $n) [x] "`l10n_print "$prodname"`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose eval "prod_${N}_selected=1"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose else
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "| $n) [ ] "`l10n_print "$prodname"`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose eval "prod_${N}_selected=0"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose fi
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose typeset N=$N+1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose done
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "|"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "| A) " `l10n_print "Select All"`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "| U) " `l10n_print "Unselect All"`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "|"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "| I) " `l10n_print "Start Installation"`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "| R) " `l10n_print "Return to previous menu"`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "| X) " `l10n_print "Exit"`
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose echo "|"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose ask '`---> '"`l10n_print 'Enter item to select/unselect:'`" "menu_sel" "R"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose case $menu_sel in
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose i|I)
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose do_install || return $?
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose return 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose ;;
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose x|X)
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose return 2
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose ;;
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose r|R)
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose return 0
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose ;;
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose a|A)
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose select_all_products
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose ;;
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose u|U)
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose PRODUCTS=
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose ;;
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose *)
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose eval "the_name=\$prod_${menu_sel}_name"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose if [ -z "$the_name" ]; then
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose l10n_print "Invalid selection"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose sleep 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose else
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose eval "is_sel=\$prod_${menu_sel}_selected"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose if [ "x$is_sel" = x1 ]; then
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose unselect_product $the_name
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose else
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose select_product $the_name
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose fi
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose fi
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose esac
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose done
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose}
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose
2998435fcc95857b73049b3955af9889ab595f24Sumit Boseinstall_patch () {
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose mkdir -p $TEMPDIR/patchinst || return 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose rm -rf $TEMPDIR/patchinst/* || return 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose cd $TEMPDIR/patchinst || return 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose unzip $MYDIR/$1 > /dev/null 2>&1 || return 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose if [ "x$QUIET" = xno ]; then
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose l10n_print "Installing patch %s" "$1"
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose fi
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose IFS=" "
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose if [ "x$ROOTDIR" = x ]; then
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose logrun $PATCHADD * || return 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose else
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose logrun $PATCHADD -R "$ROOTDIR" * || return 1
2998435fcc95857b73049b3955af9889ab595f24Sumit Bose fi
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose rm -rf $TEMPDIR/patchinst/* || return 1
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose cd /
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose}
a6098862048d4bb469130b9ff21be3020d6f2c54Sumit Bose
do_install_patches () {
IFS=,
if [ ! -z "$PATCHES" ]; then
l10n_print "Installing required patches..."
fi
for p in $PATCHES; do
test -z "$p" && continue
# Skip if patch already applied.
patchnum=`basename $p .zip`
# Remove 'T' t-patch prefix if present. showrev doesn't show it.
patchnum=`echo $patchnum | sed 's/^T//'`
if [ -z "`showrev -p | awk '{print $2}' | /usr/bin/grep -s $patchnum`" ]; then
install_patch $p || \
msg_error "Failed to install patch %s" "$p"
fi
done
}
do_install () {
if [ "x$PRODUCTS" = x -a "x$PATCHES" = x ]; then
msg_fatal "No products selected."
fi
so=ok
product_is_selected staroffice && product_is_selected starsuite && \
so=not_ok
if [ x$so = xnot_ok ]; then
if [ "x$INTERACTIVE" = "xyes" ]; then
so_menu || return $?
else
msg_fatal "You cannot select both StarOffice and StarSuite"
fi
fi
l10n_print "Checking for sufficient disk space..."
disk_usage_init
IFS=,
for prod in $PRODUCTS; do
test -z "$prod" && continue
if [ ! -r "$prod/.pkgsize" ]; then
msg_warning "WARNING: disk space usage information missing from directory %s" "$prod"
continue
fi
exec < "$prod/.pkgsize"
while read line; do
the_dir=`echo "$line" | cut -f3- -d' '`
the_size=`echo "$line" | cut -f2 -d' '`
disk_usage_add "$ROOTDIR$the_dir" "$the_size"
done
exec <& 1
done
clear
product_is_selected staroffice && so_disk_space_check StarOffice
product_is_selected starsuite && so_disk_space_check StarSuite
disk_usage_check
l10n_print "Removing older versions of JDS packages..."
l10n_print "Determining package installation order..."
backup $LOGFILE
echo "JDS Installation Log opened at `LANG=C LC_ALL=C date`" > $LOGFILE
do_install_patches
IFS=,
for prod in $PRODUCTS; do
test -z "$prod" && continue
if [ ! -d "$MYDIR/$prod" ]; then
msg_warning "Product %s not found in the install image" "$prod"
continue
fi
prodname=`echo "$ALL_PRODUCTS" | grep "^$prod=" | cut -f2- -d=`
if [ -z "$prodname" ]; then
prodname=$prod
fi
if [ "x$QUIET" = xno ]; then
echo
echo -------------------------------------------------
fi
lprodname=$(l10n_print "$prodname")
l10n_print "Installing Product \"%s\"" "$lprodname"
if [ -r "$MYDIR/$prod/.remove-always" ]; then
remove_always $prod
fi
# if [ -r "$MYDIR/$prod/.remove-if-older" ]; then
# remove_if_older $prod
# fi
install_product $prod
done
}
product_is_selected () {
echo ",$PRODUCTS," | grep ",$1," > /dev/null 2>&1
}
# Examine LANG variable to determine whether to select StarOffice or StarSuite.
staroffice_or_starsuite() {
if [ -n "$LANG" ]
then
# Japan, China, Taiwan and Korean get StarSuite.
case `echo $LANG | cut -c1,2` in
ja|zh|tw|ko) return 0;;
esac
fi
# If not set assume it is not Asian and therefore use StarOffice.
return 1
}
select_product () {
test -z "$1" && return 1
product_is_selected $1
if [ $? != 0 ]; then
PRODUCTS="$PRODUCTS,$1"
fi
}
unselect_product () {
test -z "$1" && return 1
product_is_selected $1
if [ $? = 0 ]; then
PRODUCTS=`echo ",$PRODUCTS," | sed -e "s/,$1,/,/" -e 's/^,//' -e 's/,$//'`
fi
}
unselect_all_srcs () {
IFS="
"
for src in `echo "$ALL_PRODUCTS" | grep -- '-src$' | cut -f1 -d=`; do
unselect_product $src
done
for src in `echo "$ALL_PRODUCTS" | grep -- '-src=' | cut -f1 -d=`; do
unselect_product $src
done
}
select_all_products () {
IFS="
"
PRODUCTS=`echo "$ALL_PRODUCTS" | cut -f1 -d=`
PRODUCTS=`echo $PRODUCTS | sed -e 's/ /,/g'`
IFS=,
for prod in $PRODUCTS; do
test ! -d $MYDIR/$prod && unselect_product $prod
done
# Decide between StarOffice and StarSuite and unselect the other if
# it is selected.
# FIXME: Disable for now as it will not be needed on final media.
# staroffice_or_starsuite
# if [ $? -eq 1 ]
# then
# product_is_selected starsuite && unselect_product starsuite
# else
# product_is_selected staroffice && unselect_product staroffice
# fi
}
find_patches () {
if [ -r "$MYDIR/$1/.patchorder" ]; then
IFS='
'
echo `cat "$MYDIR/$1/.patchorder" | sed -e "s%^%$1/%"` | \
sed -e 's% %,%g'
return 0
fi
dummy=$(cd $MYDIR; echo $1/*.zip)
echo "$dummy" | grep '\*' > /dev/null
if [ $? != 0 ]; then
echo "$dummy" | sed -e 's/ /,/g'
return 0
else
return 1
fi
}
select_all_patches () {
IFS="
"
PD=`echo "$ALL_PATCHDIRS" | cut -f1 -d=`
PD=`echo $PD | sed -e 's/ /,/g'`
IFS=,
PATCHES=
PATCHDIRS=
for pd in $PD; do
if [ -d $MYDIR/$pd ]; then
dname=`echo "$pd" | cut -f2 -d-`
dummy=`find_patches $pd` && PATCHDIRS="$PATCHDIRS,$pd" && \
select_patches "$dummy" && \
eval "ALL_${dname}_PATCHES=\"$dummy\""
fi
done
PATCHDIRS=`echo "$PATCHDIRS" | cut -c2-`
ALL_PATCHES="$PATCHES"
}
patch_is_selected () {
echo ",$PATCHES," | grep ",$1," > /dev/null 2>&1
}
select_patches () {
test -z "$1" && return 1
IFS=,
for p in $1; do
patch_is_selected $p
if [ $? != 0 ]; then
PATCHES="$PATCHES,$p"
fi
done
}
unselect_patches () {
test -z "$1" && return 1
IFS=,
for p in $1; do
patch_is_selected $p
if [ $? = 0 ]; then
PATCHES=`echo ",$PATCHES," | sed -e "s%,$p,%,%" -e 's%^,%%' -e 's%,$%%'`
fi
done
}
patches_are_selected () {
test -z "$1" && return 2
have_selected=no
have_unselected=no
IFS=,
for p in $1; do
patch_is_selected $p && have_selected=yes || have_unselected=yes
done
if [ "x$have_selected" = xyes -a "x$have_unselected" = xyes ]; then
return 1
fi
if [ "x$have_unselected" = xno ]; then
return 0
fi
return 2
}
disclaimer_screen () {
if [ "x$INTERACTIVE" = xyes ]; then
l10n_print "You are about to install Sun Java Desktop System, GNOME 2.17.\nThis install will replace any old versions of the following\nproducts you may have installed on your system with the newer\nversion included in JDS: GNOME, Mozilla and Java\nMedia Framework. It may also replace the installed version\nof Java 1.4.2 if it is older than the version included in JDS."
fi
}
license_screen () {
lic_file="$MYDIR/license.txt"
if [ ! -z $LC_MESSAGES ] ; then
language_territory_locale=$LC_MESSAGES
elif [ ! -z $LC_ALL ] ; then
language_territory_locale=$LC_ALL
elif [ ! -z $LANG ] ; then
language_territory_locale=$LANG
fi
language_terittory=${language_territory_locale%.*}
language=${language_territory_locale%_*}
if [ -f "$MYDIR/.install/$language_territory_locale/license.txt" ]; then
lic_file="$MYDIR/.install/$language_territory_locale/license.txt"
elif [ -f "$MYDIR/.install/$language_terittory/license.txt" ]; then
lic_file="$MYDIR/.install/$language_terittory/license.txt"
elif [ -f "$MYDIR/.install/$language/license.txt" ]; then
lic_file="$MYDIR/.install/$language/license.txt"
fi
if [ ! -f "$lic_file" ]; then
echo "WARNING: license file missing"
fi
if [ "x$LICENSE_ACCEPTED" = "xyes" ]; then
cat "$lic_file"
return
fi
if [ "x$INTERACTIVE" = xyes ]; then
l10n_print "Before installing you must first accept the following license"
echo
l10n_print "Press [ENTER] to view the license"
read dummy
more "$lic_file"
ask "`l10n_print 'Type \"Accept\" to accept the license\nand install Sun Java Desktop System GNOME 2.17'`" ans_accept
echo "$ans_accept" | grep -i "^`l10n_print 'Accept'`$" > /dev/null
if [ $? != 0 ]; then
l10n_print "Installation aborted"
exit 1
fi
else
l10n_print "In non-interactive mode, you must use the --accept option\nto accept the license terms"
exit 1
fi
}
main () {
init
process_options "${@}"
disclaimer_screen
license_screen
TEMPDIR=${BASE_TEMPDIR}/install_jds_$$.dir
write_admin
if [ "x$NO_PATCHES" != "xyes" ]; then
select_all_patches
fi
if [ "x$INTERACTIVE" = "xyes" ]; then
if [ -z "$PRODUCTS" ]; then
select_all_products
unselect_all_srcs
unselect_product nodist
fi
main_menu || return $?
else
if [ -z "$PRODUCTS" ]; then
select_all_products
unselect_all_srcs
unselect_product nodist
unselect_product starsuite
fi
do_install || return $?
fi
}
if [ -n "$REQ_SYSTEM" -a "$REQ_SYSTEM" != "$SYSTEM" ]; then
l10n_print "This product requires a %s system" "$REQ_SYSTEM"
exit 1
fi
if [ -n "$REQ_ARCH" -a "$REQ_ARCH" != "$ARCH" ]; then
l10n_print "This product requires a %s architecture system" "$REQ_ARCH"
exit 1
fi
if [ -n "$REQ_RELEASE" ]; then
version_lower $RELEASE $REQ_RELEASE
if [ $? = 0 ]; then
l10n_print "This product requires OS release %s or later" "$REQ_RELEASE"
exit 1
fi
fi
if [ "$RELEASE" = "$REQ_RELEASE" -a -n "$REQ_KERNELID" ]; then
version_lower $KERNELID $REQ_KERNELID
if [ $? = 0 ]; then
l10n_print "This product requires OS build %s or later" "$REQ_KERNELID"
l10n_print ""
l10n_print "You may choose to continue the installation and risk that"
l10n_print "some or all of the functionality may not be available."
ask_yes_no "`l10n_print 'Would you like to continue?'`" ans \
`l10n_print "no"`
if [ "x$ans" = xno ]; then
exit 1
fi
fi
fi
main "${@}"
if [ $? = 2 ]; then
msg_fatal "Installation aborted"
fi
if [ "x$WARNINGS" = xyes ]; then
l10n_print "Completed with warnings. Some packages may not be installed."
else
l10n_print "Successfully installed all packages."
fi
l10n_print "Installation log saved in %s" "$LOGFILE"
echo
l10n_print "You must now reboot your computer before using the Java Desktop System"