run-inst.sh revision bf5a2ed371c0a47483665fc30b0765a8d80b6b1f
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#!/bin/sh
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Oracle VM VirtualBox
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# VirtualBox Makeself installation starter script
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# for Linux Guest Additions
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
5d39cab83ac9a6c6e4c5da4690ac53b4cfec73aavboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Copyright (C) 2006-2013 Oracle Corporation
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# available from http://www.virtualbox.org. This file is free software;
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# you can redistribute it and/or modify it under the terms of the GNU
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# General Public License (GPL) as published by the Free Software
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync#
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# This is a stub installation script to be included in VirtualBox Makeself
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# installers which removes any previous installations of the package, unpacks
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# the package into the filesystem (by default under /opt) and starts the real
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync# installation script.
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync#
1ce069685b24d243eb0464f46d4c56b250c64445vboxsyncPATH=$PATH:/bin:/sbin:/usr/sbin
a55af63ead2dcca370bfc0dfe49771d9dcc61b93vboxsync
e0778e583cb4a0bdc9bcc48f5957e00a01108388vboxsync# Note: These variable names must *not* clash with variables in $CONFIG_DIR/$CONFIG!
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncPACKAGE="_PACKAGE_"
a55af63ead2dcca370bfc0dfe49771d9dcc61b93vboxsyncPACKAGE_NAME="_PACKAGE_NAME_"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncUNINSTALL="uninstall.sh"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncROUTINES="routines.sh"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncARCH="_ARCH_"
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsyncINSTALLATION_VER="_VERSION_"
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsyncINSTALLATION_REV="_SVNREV_"
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncBUILD_TYPE="_BUILDTYPE_"
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsyncUSERNAME="_USERNAME_"
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsyncUNINSTALL_SCRIPTS="_UNINSTALL_SCRIPTS_"
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsyncINSTALLATION_DIR="/opt/$PACKAGE-$INSTALLATION_VER"
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsyncCONFIG_DIR="/var/lib/$PACKAGE"
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncCONFIG="config"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncCONFIG_FILES="filelist"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncSELF=$1
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncLOGFILE="/var/log/$PACKAGE.log"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync. "./$ROUTINES"
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsynccheck_root
b0ad0bbadf3a5b5258acda1bfe16f0ad8bee5ff0vboxsync
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsynccreate_log "$LOGFILE"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
229a63857c5fd2e441a62206eacce4156d0b2a26vboxsync## @todo r=andy: Explain options like "force" and "no_setup" -- not self-explanatory
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# to the user.
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncusage()
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync{
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync info ""
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync info "Usage: $SELF install [<installation directory>]"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync info " [--with-<module>] |"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync info " uninstall"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync info " [--force] [--no-setup]"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync info ""
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync info "Example:"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync info "$SELF install"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync exit 1
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync}
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Create a symlink in the filesystem and add it to the list of package files
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsyncadd_symlink()
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync{
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync self=add_symlink
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync ## Parameters:
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync # The file the link should point to
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync target="$1"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync # The name of the actual symlink file. Must be an absolute path to a
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync # non-existing file in an existing directory.
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync link="$2"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync link_dir="`dirname "$link"`"
a2d9f81753c129b5e3bbe3769627dcd25a3724bdvboxsync test -n "$target" ||
a2d9f81753c129b5e3bbe3769627dcd25a3724bdvboxsync { echo 1>&2 "$self: no target specified"; return 1; }
a2d9f81753c129b5e3bbe3769627dcd25a3724bdvboxsync test -d "$link_dir" ||
a2d9f81753c129b5e3bbe3769627dcd25a3724bdvboxsync { echo 1>&2 "$self: link directory $link_dir does not exist"; return 1; }
a2d9f81753c129b5e3bbe3769627dcd25a3724bdvboxsync test ! -e "$link" ||
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync { echo 1>&2 "$self: link file "$link" already exists"; return 1; }
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync expr "$link" : "/.*" > /dev/null ||
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync { echo 1>&2 "$self: link file name is not absolute"; return 1; }
229a63857c5fd2e441a62206eacce4156d0b2a26vboxsync rm -f "$link"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync ln -s "$target" "$link"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync echo "$link" >> "$CONFIG_DIR/$CONFIG_FILES"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync}
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Create symbolic links targeting all files in a directory in another
a2d9f81753c129b5e3bbe3769627dcd25a3724bdvboxsync# directory in the filesystem
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsynclink_into_fs()
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync{
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync ## Parameters:
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync # Directory containing the link target files
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync target_branch="$1"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # Directory to create the link files in
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync directory="$2"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync for i in "$INSTALLATION_DIR/$target_branch"/*; do
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync test -e "$i" &&
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync add_symlink "$i" "$directory/`basename $i`"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync done
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync}
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Look for broken installations or installations without a known uninstaller
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync# and try to clean them up, asking the user first.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncdef_uninstall()
7bf07b1592dfaab1a4fb6d497fd0ff1302fb7585vboxsync{
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ## Parameters:
7c1f498692cd2393f8ba68cb62be482495106f93vboxsync # Whether to force cleanup without asking the user
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync force="$1"
7c1f498692cd2393f8ba68cb62be482495106f93vboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync . ./deffiles
4c8907a420ed66a42f729eb08cddf9c1e57f25eavboxsync found=0
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync for i in $DEFAULT_FILE_NAMES; do
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync test "$found" = 0 -a -e "$i" && found=1
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync done
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync test "$found" = 0 &&
66b8ee000e49b0cc08a897451350cd6927d77b60vboxsync for i in $DEFAULT_VERSIONED_FILE_NAMES-*; do
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync test "$found" = 0 -a -e "$i" && found=1
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync done
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync test "$found" = 0 && return 0
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync if ! test "$1" = "force" ; then
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync cat 1>&2 << EOF
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncYou appear to have a version of the _PACKAGE_ software
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncon your system which was installed from a different source or using a
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncdifferent type of installer. If you installed it from a package from your
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncLinux distribution or if it is a default part of the system then we strongly
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncrecommend that you cancel this installation and remove it properly before
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncinstalling this version. If this is simply an older or a damaged
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncinstallation you may safely proceed.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncDo you wish to continue anyway? [yes or no]
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncEOF
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync read reply dummy
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if ! expr "$reply" : [yY] > /dev/null &&
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ! expr "$reply" : [yY][eE][sS] > /dev/null
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync then
7e8d44e04156d78379666f20d5daa2a79e5cbf44vboxsync info
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync info "Cancelling installation."
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync return 1
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync fi
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync fi
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync # Stop what we can in the way of services and remove them from the
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync # system
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync for i in $UNINSTALL_SCRIPTS; do
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync stop_init_script "$i"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync cleanup_init "$i" 1>&2 2>> "$LOGFILE"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync test -x "./$i" && "./$i" cleanup 1>&2 2>> "$LOGFILE"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync remove_init_script "$i"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync done
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
a1b4fb3917412d2632d358ff8989f1ec971f2d5bvboxsync # Get rid of any remaining files
505ddd00252720bfb5569fcb17bfda53dc141e3bvboxsync for i in $DEFAULT_FILE_NAMES; do
505ddd00252720bfb5569fcb17bfda53dc141e3bvboxsync rm -f "$i" 2> /dev/null
505ddd00252720bfb5569fcb17bfda53dc141e3bvboxsync done
a1b4fb3917412d2632d358ff8989f1ec971f2d5bvboxsync for i in $DEFAULT_VERSIONED_FILE_NAMES; do
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync rm -f "$i-"* 2> /dev/null
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync done
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync rm -f "/usr/lib/$PACKAGE" "/usr/lib64/$PACKAGE" "/usr/share/$PACKAGE"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
85bc82f92f4d7a7b95e96d133c4847b2847703dfvboxsync # And any packages left under /opt
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync for i in "/opt/$PACKAGE-"*; do
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync test -d "$i" && rm -rf "$i"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync done
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync return 0
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync}
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncinfo "$PACKAGE_NAME installer"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynccheck_bzip2
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Check architecture
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynccpu=`uname -m`;
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsynccase "$cpu" in
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync i[3456789]86|x86)
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync cpu="x86"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync lib_path="/usr/lib"
49e54e2ffe0c10864d06e9d1ebe24a8eb1327a6bvboxsync ;;
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync x86_64|amd64)
49e54e2ffe0c10864d06e9d1ebe24a8eb1327a6bvboxsync cpu="amd64"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if test -d "/usr/lib64"; then
7a29aa5ce149ccd344a2929d2815b8e212690b92vboxsync lib_path="/usr/lib64"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync else
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync lib_path="/usr/lib"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ;;
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync *)
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync cpu="unknown"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncesac
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncARCH_PACKAGE="$PACKAGE-$cpu.tar.bz2"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncif [ ! -r "$ARCH_PACKAGE" ]; then
229a63857c5fd2e441a62206eacce4156d0b2a26vboxsync info "Detected unsupported $cpu machine type."
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync exit 1
8c58249d7f93d82395aa6c8b31526443892bc375vboxsyncfi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync# Sensible default actions
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncACTION="install"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncDO_SETUP="true"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncNO_CLEANUP=""
5453eb2f2719bf3895ac3daeec4c26e0b6e2eb4avboxsyncFORCE_UPGRADE=""
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
9bb98d54790a98dad0ad6d9bdc5d319b6fdf0bffvboxsyncwhile [ $# -ge 2 ];
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncdo
9bb98d54790a98dad0ad6d9bdc5d319b6fdf0bffvboxsync ARG=$2
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync shift
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if [ -z "$MY_END_OF_OPTIONS" ]; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync case "$ARG" in
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync install)
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ACTION="install"
b604fbf16eda38d14b4999c245f032bfaa5aa85avboxsync ;;
93c114476cca834cde109c60bfb95094fcd2c995vboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync uninstall)
629e8f58c569e4c51a98284c41754fd9f0b973f8vboxsync ACTION="uninstall"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ;;
7c1f498692cd2393f8ba68cb62be482495106f93vboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ## @todo Add per-module options handling, e.g. --lightdm-greeter-dir
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # or --lightdm-config
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ## @todo Add listing all available modules (+ their options, e.g.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # with callback mod_mymod_show_options?)
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync --with-*)
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync MODULE_CUR=`expr "$ARG" : '--with-\(.*\)'`
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # Check if corresponding module in installer/module-$1 exists.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # Note: Module names may not contain spaces or other funny things.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if [ ! -f "./installer/module-${MODULE_CUR}" ]; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync info "Error: Module \"${MODULE_CUR}\" does not exist."
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync usage
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # Give the module the chance of doing initialization work / checks.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync . "./installer/module-${MODULE_CUR}"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync mod_${MODULE_CUR}_init
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if test $? -ne 0; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync echo 1>&2 "Module '${MODULE_CUR}' failed to initialize"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if ! test "$FORCE_UPGRADE" = "force"; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync return 1
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # Continue initialization.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # Add module to the list of modules to handle later.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if test -z "${INSTALLATION_MODULES_LIST}"; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync INSTALLATION_MODULES_LIST="${MODULE_CUR}"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync else
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync INSTALLATION_MODULES_LIST="${INSTALLATION_MODULES_LIST} ${MODULE_CUR}"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync shift
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync ;;
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync --force|force) # Keep "force" for backwards compatibility.
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync FORCE_UPGRADE="force"
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync ;;
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync --no-setup|no_setup) # Keep "no_setup" for backwards compatibility.
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync DO_SETUP=""
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync ;;
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync
5704a317c3b6bdf4b59f6a6ebe45d443296b1995vboxsync --no-cleanup|no_cleanup) # Keep "no_cleanup" for backwards compatibility.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync # Do not do cleanup of old modules when removing them. For
5704a317c3b6bdf4b59f6a6ebe45d443296b1995vboxsync # testing purposes only.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync DO_SETUP=""
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync NO_CLEANUP="no_cleanup"
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync ;;
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync --)
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync MY_END_OF_OPTIONS="1"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ;;
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync *)
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if [ "`echo $1|cut -c1`" != "/" ]; then
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync info "Please specify an absolute path"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync usage
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync fi
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync INSTALLATION_DIR="$1"
a0644dbbd30adb9bd2937110d6f016e56c4cc52bvboxsync shift
229a63857c5fd2e441a62206eacce4156d0b2a26vboxsync ;;
229a63857c5fd2e441a62206eacce4156d0b2a26vboxsync esac
229a63857c5fd2e441a62206eacce4156d0b2a26vboxsync fi
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncdone
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
229a63857c5fd2e441a62206eacce4156d0b2a26vboxsync# uninstall any previous installation
229a63857c5fd2e441a62206eacce4156d0b2a26vboxsyncINSTALL_DIR=""
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncuninstalled=0
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsynctest -r "$CONFIG_DIR/$CONFIG" && . "$CONFIG_DIR/$CONFIG"
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncif test -n "$INSTALL_DIR" -a -x "$INSTALL_DIR/$UNINSTALLER"; then
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync "$INSTALL_DIR/$UNINSTALLER" $NO_CLEANUP 1>&2 ||
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync abort "Failed to remove existing installation. Aborting..."
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync uninstalled=1
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncfi
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsynctest "$uninstalled" = 0 && def_uninstall "$FORCE_UPGRADE" && uninstalled=1
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsynctest "$uninstalled" = 0 && exit 1
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncrm -f "$CONFIG_DIR/$CONFIG"
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncrm -f "$CONFIG_DIR/$CONFIG_FILES"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncrmdir "$CONFIG_DIR" 2>/dev/null
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynctest "$ACTION" = "install" || exit 0
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
cc74f15083bf80fbc96723a89faa06c15d0dead8vboxsync# Set installer modules directory
3933885bc0c2c93436d858a14564c6179ec72872vboxsyncINSTALLATION_MODULES_DIR="$INSTALLATION_DIR/installer/"
9ca017ceee656f9d33f2cb6652e401b5f17fcfb7vboxsync
cc74f15083bf80fbc96723a89faa06c15d0dead8vboxsync# install and load installer modules
36a04912b64bea8318327fe0723535f1b3f041b0vboxsyncif [ -d installer ]; then
36a04912b64bea8318327fe0723535f1b3f041b0vboxsync info "Copying additional installer modules ..."
3933885bc0c2c93436d858a14564c6179ec72872vboxsync mkdir -p -m 755 "$INSTALLATION_MODULES_DIR"
6e25221ce8ef8e656d1e15eb7ec5cf8ae758ceb2vboxsync for CUR_FILE in `ls installer/*`; do
3933885bc0c2c93436d858a14564c6179ec72872vboxsync install -p -m 755 "$CUR_FILE" "$INSTALLATION_MODULES_DIR"
3933885bc0c2c93436d858a14564c6179ec72872vboxsync if [ $? -ne 0 ]; then
3933885bc0c2c93436d858a14564c6179ec72872vboxsync info "Error: Failed to copy installer module \"$CUR_FILE\""
3933885bc0c2c93436d858a14564c6179ec72872vboxsync if ! test "$FORCE_UPGRADE" = "force"; then
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync exit 1
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync done
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncfi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# install the new version
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncmkdir -p -m 755 "$CONFIG_DIR"
80b09746c07120c881b61b18f30c9c4a2a4af9c5vboxsynctest ! -d "$INSTALLATION_DIR" && REMOVE_INSTALLATION_DIR=1
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncmkdir -p -m 755 "$INSTALLATION_DIR"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Create a list of the files in the archive, skipping any directories which
80b09746c07120c881b61b18f30c9c4a2a4af9c5vboxsync# already exist in the filesystem.
d7c2269005543188a6fb12775f6d416431e39ebcvboxsyncbzip2 -d -c "$ARCH_PACKAGE" | tar -tf - |
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync while read name; do
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fullname="$INSTALLATION_DIR/$name"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync case "$fullname" in
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync */)
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync test ! -d "$fullname" &&
d7c2269005543188a6fb12775f6d416431e39ebcvboxsync echo "$fullname" >> "$CONFIG_DIR/$CONFIG_FILES"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ;;
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync *)
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync echo "$fullname" >> "$CONFIG_DIR/$CONFIG_FILES"
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsync ;;
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsync esac
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsync done
776985d1f8ee71ad78aa1067cce88766803c7b30vboxsyncbzip2 -d -c "$ARCH_PACKAGE" | tar -xf - -C "$INSTALLATION_DIR" || exit 1
346baab64a0d037969065e71e02e6c2a176106abvboxsync
bd5c7d04b57ea9dfea041aad6a07cd8823b4e7c0vboxsync# Set symlinks into /usr and /sbin
bd5c7d04b57ea9dfea041aad6a07cd8823b4e7c0vboxsynclink_into_fs "bin" "/usr/bin"
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsynclink_into_fs "sbin" "/usr/sbin"
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsynclink_into_fs "lib" "$lib_path"
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsynclink_into_fs "share" "/usr/share"
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsynclink_into_fs "src" "/usr/src"
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsync
f271f5e8fefdfe224f8bdeac77fefe6c655ae87evboxsyncif [ -d "$INSTALLATION_MODULES_DIR" ]; then
b8c2e8ba48bd659fa09a06770a7cedfae977d73bvboxsync info "Installing additional modules ..."
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync for CUR_MODULE in `find "$INSTALLATION_MODULES_DIR" 2>/dev/null`
8ae161fca703d669e1306fafee128914f831f72bvboxsync do
8ae161fca703d669e1306fafee128914f831f72bvboxsync echo "$CUR_MODULE" >> "$CONFIG_DIR/$CONFIG_FILES"
8ae161fca703d669e1306fafee128914f831f72bvboxsync done
8ae161fca703d669e1306fafee128914f831f72bvboxsyncfi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncfor CUR_MODULE in ${INSTALLATION_MODULES_LIST}
b8c2e8ba48bd659fa09a06770a7cedfae977d73bvboxsyncdo
b8c2e8ba48bd659fa09a06770a7cedfae977d73bvboxsync mod_${CUR_MODULE}_install
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync if [ $? -ne 0 ]; then
2355157d3ea6596738c7c74e803220ad1bd6b4a8vboxsync info "Error: Failed to install module \"$CUR_MODULE\""
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if ! test "$FORCE_UPGRADE" = "force"; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync exit 1
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncdone
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Remember our installation configuration before we call any init scripts
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynccat > "$CONFIG_DIR/$CONFIG" << EOF
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# $PACKAGE installation record.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Package installation directory
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncINSTALL_DIR='$INSTALLATION_DIR'
b8c2e8ba48bd659fa09a06770a7cedfae977d73bvboxsync# Additional installation modules
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncINSTALL_MODULES_DIR='$INSTALLATION_MODULES_DIR'
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncINSTALL_MODULES_LIST='$INSTALLATION_MODULES_LIST'
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync# Package uninstaller. If you repackage this software, please make sure
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# that this prints a message and returns an error so that the default
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync# uninstaller does not attempt to delete the files installed by your
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# package.
a2d9f81753c129b5e3bbe3769627dcd25a3724bdvboxsyncUNINSTALLER='$UNINSTALL'
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync# Package version
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncINSTALL_VER='$INSTALLATION_VER'
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsyncINSTALL_REV='$INSTALLATION_REV'
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Build type and user name for logging purposes
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncBUILD_TYPE='$BUILD_TYPE'
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncUSERNAME='$USERNAME'
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncEOF
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync# Give the modules the chance to write their stuff
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# to the installation config as well.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncif [ -n "${INSTALLATION_MODULES_LIST}" ]; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync info "Saving modules configuration ..."
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync for CUR_MODULE in ${INSTALLATION_MODULES_LIST}
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync do
a1a2e3f1c3ca7d6190c90ff67b7995b50b258794vboxsync echo "`mod_${CUR_MODULE}_config_save`" >> "$CONFIG_DIR/$CONFIG"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync done
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncfi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync# Install, set up and start init scripts
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsyncfor i in "$INSTALLATION_DIR/init/"*; do
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if test -r "$i"; then
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync install_init_script "$i" "`basename "$i"`"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync test -n "$DO_SETUP" && setup_init_script "`basename "$i"`" 1>&2
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync start_init_script "`basename "$i"`"
aa0553becec2abc2e781f839ba1d399c31c2c07fvboxsync fi
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsyncdone
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsync
b4bcdbd7ac35c938e6f71a6403fe9f3ebf106a07vboxsynccp $ROUTINES $INSTALLATION_DIR
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncecho $INSTALLATION_DIR/$ROUTINES >> "$CONFIG_DIR/$CONFIG_FILES"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynccat > $INSTALLATION_DIR/$UNINSTALL << EOF
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync#!/bin/sh
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Auto-generated uninstallation file
cc74f15083bf80fbc96723a89faa06c15d0dead8vboxsync
3933885bc0c2c93436d858a14564c6179ec72872vboxsyncPATH=\$PATH:/bin:/sbin:/usr/sbin
cc74f15083bf80fbc96723a89faa06c15d0dead8vboxsyncLOGFILE="/var/log/$PACKAGE-uninstall.log"
36a04912b64bea8318327fe0723535f1b3f041b0vboxsync
cc74f15083bf80fbc96723a89faa06c15d0dead8vboxsync# Read routines.sh
3933885bc0c2c93436d858a14564c6179ec72872vboxsyncif ! test -r "$INSTALLATION_DIR/$ROUTINES"; then
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync echo 1>&2 "Required file $ROUTINES not found. Aborting..."
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync return 1
9ce5d949e4f1572d445a5c0aecabe9de8b672c99vboxsyncfi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync. "$INSTALLATION_DIR/$ROUTINES"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# We need to be run as root
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynccheck_root
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynccreate_log "\$LOGFILE"
657b2c9f6d33f08001e5fa6f6e0572dcf0391013vboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncecho 1>&2 "Removing installed version $INSTALLATION_VER of $PACKAGE_NAME..."
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncNO_CLEANUP=""
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsyncif test "\$1" = "no_cleanup"; then
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync shift
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync NO_CLEANUP="no_cleanup"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncfi
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsynctest -r "$CONFIG_DIR/$CONFIG_FILES" || abort "Required file $CONFIG_FILES not found. Aborting..."
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Stop and clean up all services
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncfor i in "$INSTALLATION_DIR/init/"*; do
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync if test -r "\$i"; then
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync stop_init_script "\`basename "\$i"\`"
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync test -z "\$NO_CLEANUP" && cleanup_init "\`basename "\$i"\`" 2>> "\$LOGFILE"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync remove_init_script "\`basename "\$i"\`"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncdone
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Load all modules
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Important: This needs to be done before loading the configuration
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# value below to not override values which are set to a default
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# value in the modules itself.
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncfor CUR_MODULE in `find "$INSTALLATION_MODULES_DIR" -name "module-*" 2>/dev/null`
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync do
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync . "\$CUR_MODULE"
ac2b2ae448fe887af9a3269e40afff11ebb1f9d3vboxsync done
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync# Load configuration values
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynctest -r "$CONFIG_DIR/$CONFIG" && . "$CONFIG_DIR/$CONFIG"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
2711c80499bbd95e3da4a6cd2dffd9f81a5dce98vboxsync# Call uninstallation initialization of all modules
a425b5e790c27d6a1a2cf738802e9034f0764a00vboxsyncfor CUR_MODULE in "$INSTALLATION_MODULES_LIST"
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync do
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if test -z "\$CUR_MODULE"; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync continue
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync fi
1568d715e75b8d2484ea3dc87f0483d4cf377838vboxsync mod_\${CUR_MODULE}_pre_uninstall
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync if [ $? -ne 0 ]; then
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync echo 1>&2 "Module \"\$CUR_MODULE\" failed to initialize uninstallation"
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync # Continue initialization.
aed4b2dfb1673c0b476588860c9d27705700ce0dvboxsync fi
dc9555b48e3a0576258aa498825c8d10e311cd47vboxsync done
cf289c84a0ecd24e5808b46b70d545cdc2c8805cvboxsync
80e46f984efd827517661c0e081a36014ca41af8vboxsync# Call uninstallation of all modules
80e46f984efd827517661c0e081a36014ca41af8vboxsyncfor CUR_MODULE in "$INSTALLATION_MODULES_LIST"
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync do
1e9377d042fa2ea3e2cd78805678f23f64db55f6vboxsync if test -z "\$CUR_MODULE"; then
051eba4436f9c682f7873390fb327e8eceb9e0efvboxsync continue
63b785c3291332a86a9bc473e68f08121368898bvboxsync fi
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync mod_\${CUR_MODULE}_uninstall
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync if [ $? -ne 0 ]; then
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync echo 1>&2 "Module \"\$CUR_MODULE\" failed to uninstall"
174f11bbd5c277153742aa5e6c3bd640bf379547vboxsync # Continue uninstallation.
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync fi
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync done
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync# And remove all files and empty installation directories
aeb9498c4d9854ed42b271541d34c7bad97b4c77vboxsync# Remove any non-directory entries
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsynccat "$CONFIG_DIR/$CONFIG_FILES" | xargs rm 2>/dev/null
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsync# Remove any empty (of files) directories in the file list
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsynccat "$CONFIG_DIR/$CONFIG_FILES" |
824ae3158a8b8f8233fec3f5a12c81f139933698vboxsync while read file; do
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync case "\$file" in
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync */)
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync test -d "\$file" &&
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync find "\$file" -depth -type d -exec rmdir '{}' ';' 2>/dev/null
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync ;;
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync esac
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync done
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsync
bf88068260ded16af90b7da4867240fbdd9c8017vboxsync# Remove configuration files
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncrm "$CONFIG_DIR/$CONFIG_FILES" 2>/dev/null
3a8aa22ef125135ef67bfc396771bcee15ef02dfvboxsyncrm "$CONFIG_DIR/$CONFIG" 2>/dev/null
bddad5eeab93a98d4ea571ccdf016531bb4318advboxsyncrmdir "$CONFIG_DIR" 2>/dev/null
63b785c3291332a86a9bc473e68f08121368898bvboxsyncexit 0
63b785c3291332a86a9bc473e68f08121368898bvboxsyncEOF
63b785c3291332a86a9bc473e68f08121368898bvboxsyncchmod 0755 $INSTALLATION_DIR/$UNINSTALL
63b785c3291332a86a9bc473e68f08121368898bvboxsyncecho $INSTALLATION_DIR/$UNINSTALL >> "$CONFIG_DIR/$CONFIG_FILES"
63b785c3291332a86a9bc473e68f08121368898bvboxsynctest -n "$REMOVE_INSTALLATION_DIR" &&
63b785c3291332a86a9bc473e68f08121368898bvboxsync echo "$INSTALLATION_DIR/" >> "$CONFIG_DIR/$CONFIG_FILES"
63b785c3291332a86a9bc473e68f08121368898bvboxsync
63b785c3291332a86a9bc473e68f08121368898bvboxsync