diff options
Diffstat (limited to 'noarch/pre_install.sh')
-rwxr-xr-x | noarch/pre_install.sh | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/noarch/pre_install.sh b/noarch/pre_install.sh new file mode 100755 index 0000000..fd04a16 --- /dev/null +++ b/noarch/pre_install.sh @@ -0,0 +1,140 @@ +#!/bin/sh + +compare_insensitive() { + echo "$1" | grep -qi "^${2}$" +} + +detect_legacy_uld() { + if ! [ -d "/opt" ] ; then + return 1 + fi + + for i in $( ls "/opt" ) ; do + if compare_insensitive $i $VENDOR ; then + if [ -s "/opt/$i/mfp/uninstall/guiuninstall" ]; then + LEGACY_ULD_NAME="$i" + return 0 + fi + fi + done + return 1 +} + +# lecence file finding +find_eula_file() { + EULA_DIR="${DIST_DIR}/noarch/license" + log_variable EULA_DIR + + EULA_LOCALE="${LC_ALL:-${LC_MESSAGES:-${LANG}}}" + EULA_LOCALE=`echo "${EULA_LOCALE}" | tr A-Z a-z` + log_variable EULA_LOCALE + + while [ -n "${EULA_LOCALE}" ] ; do + EULA_FILE="${EULA_DIR}/eula-${EULA_LOCALE}.txt" + #log_variable EULA_FILE + if [ -r "${EULA_FILE}" ] ; then break ; fi + EULA_LOCALE=`echo "${EULA_LOCALE}" | sed 's/.$//'` # drop last symbol + done + log_variable EULA_LOCALE + if [ -z "${EULA_LOCALE}" ] ; then + EULA_FILE="${EULA_DIR}/eula.txt" + if [ ! -r "${EULA_FILE}" ] ; then + EULA_FILE="" + fi + fi + + log_variable EULA_FILE + echo "${EULA_FILE}" +} + +show_license() { + EULA_FILE=`find_eula_file` + EULA_PAGER="${PAGER:-`which more`}" + log_variable EULA_PAGER + + if [ -n "${EULA_FILE}" -a -n "${EULA_PAGER}" ] ; then + ICONV_BINARY=`which iconv` + # show EULA: + show_cut_line + if [ -z "${SKIP_EULA_PAGER}" ] ; then + if [ -n "$ICONV_BINARY" ] ; then + cat "${EULA_FILE}" | "${ICONV_BINARY}" -c -f "UTF-8" | ${EULA_PAGER} + else + "${EULA_PAGER}" "${EULA_FILE}" + fi + fi + + show_cut_line + + # ask for agreement: + output_blank_line + show_nls_message_no_nl "**** Do you agree ? [y/n] : " + if [ -z "${AGREE_EULA}" ] ; then + read AGREE_EULA + fi + if [ "y" != "${AGREE_EULA}" ] && [ "Y" != "${AGREE_EULA}" ] ; then + show_nls_message "**** Terminated by user" + exit 1 + fi + fi +} + +# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +SCRIPTS_DIR="$(dirname "$0")" + +# load 'scripting' run-time support utility functions +. "${SCRIPTS_DIR}/scripting_utils" + +# load 'package' run-time support utility functions +. "${SCRIPTS_DIR}/package_utils" +environment_init "$(basename "$0" ".sh")" + + +UNINSTALLMODE= +while [ -n "$1" ]; do + case "$1" in + -u) UNINSTALLMODE=1 ;; + vendor=*) specify_vendor "${1#vendor=}" ;; + esac + shift +done + +if ! have_root_permissions ; then + show_nls_message "**** Root privileges are required" + exit 1 +fi + +if [ "$UNINSTALLMODE" ]; then + show_nls_message "**** Running uninstall ..." +else + show_nls_message "**** Running install ..." +fi +show_nls_message_no_nl "**** Press 'Enter' to continue or 'q' and then 'Enter' to quit. : " +if [ -z "${QUIT_INSTALL}" ] ; then + read QUIT_INSTALL +fi +if [ "q" = "${QUIT_INSTALL}" ] || [ "Q" = "${QUIT_INSTALL}" ] ; then + show_nls_message "**** Terminated by user" + exit 1 +fi + +LEGACY_ULD_NAME= +if detect_legacy_uld ; then + show_nls_message "**** Old version of Unified Linux Driver is detected." + show_nls_message "**** In order to continue the installation, please remove old version." + show_nls_message_no_nl "**** If you want to delete old version press 'y'. To finish the installation press 'Enter'. : " + if [ -z "${UNINSTALL_LECAGY}" ] ; then + read UNINSTALL_LECAGY + fi + if [ "y" = "${UNINSTALL_LECAGY}" ] || [ "Y" = "${UNINSTALL_LECAGY}" ] ; then + "/opt"/${LEGACY_ULD_NAME}/mfp/uninstall/uninstall.sh -t + else + show_nls_message "**** Terminated by user" + exit 1 + fi +fi + +if ! [ "$UNINSTALLMODE" ]; then + show_license +fi |