X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=tools%2Flinux_packaging%2Funinstall.sh.in;h=20aa1b688de399e278406fd612179b57a6b12f0d;hb=471268ac5525c2bdd7060dcae6646a66c697041a;hp=0e15b3d02c464f8ad9c573d1e781f58cbc075ae0;hpb=4eb1a9ea0ed7316f2c1c260c5fd9a0b9278aa857;p=ardour.git diff --git a/tools/linux_packaging/uninstall.sh.in b/tools/linux_packaging/uninstall.sh.in index 0e15b3d02c..20aa1b688d 100644 --- a/tools/linux_packaging/uninstall.sh.in +++ b/tools/linux_packaging/uninstall.sh.in @@ -7,29 +7,115 @@ # ##################################### +MAJOR_VERSION="%REPLACE_MAJOR_VERSION%" PGM_NAME="%REPLACE_PGM%" PGM_VENDOR="%REPLACE_VENDOR%" PGM_VERSION="%REPLACE_VERSION%" -PGM_BUILD="%REPLACE_BUILD%" +PGM_BUILDTYPE="%REPLACE_TYPE%" INSTALL_DEST_BASE=/opt +USER_BIN_DIR="/usr/local/bin" + +UNINSTALLER="$(readlink -f "$0")" + +USER_NAME=$(logname) #### Derived Variables #### -PGM_PATH=${INSTALL_DEST_BASE}/${PGM_NAME}-${PGM_VERSION}_${PGM_BUILD} +if [ -z "${PGM_BUILDTYPE}" ]; then + PGM_PATH=${INSTALL_DEST_BASE}/${PGM_NAME}-${PGM_VERSION} + ICON_NAME="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}" #no dash between name and version since dash seperates vendor from program + MENU_FILE="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}.desktop" #no dash between name and version since dash seperates vendor from program + DESKTOP_LINK_FILE="${PGM_NAME}_${PGM_VERSION}.desktop" +else + PGM_PATH=${INSTALL_DEST_BASE}/${PGM_NAME}-${PGM_VERSION}-${PGM_BUILDTYPE} + ICON_NAME="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}" #no dash between name and version since dash seperates vendor from program + MENU_FILE="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}.desktop" #no dash between name and version since dash seperates vendor from program + DESKTOP_LINK_FILE="${PGM_NAME}_${PGM_VERSION}_${PGM_BUILDTYPE}.desktop" +fi -ICON_NAME="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}" #no dash between name and version since seperates vendor from program -MENU_FILE="${PGM_VENDOR}-${PGM_NAME}_${PGM_VERSION}.desktop" #no dash between name and version since seperates vendor from program -DESKTOP_LINK_FILE="${PGM_NAME}_${PGM_VERSION}.desktop" MENU_FILE_PATH="${PGM_PATH}/share/${MENU_FILE}" +############################# +# Check for root privileges +############################# + +SUPER="" + +if [ "$(id -u)" != "0" ]; then + + if ! which sudo > /dev/null; + then + echo "" + echo "Attempting to uninstall using su" + echo "Please enter root password below" + echo "" + + if ! su -c "${UNINSTALLER}"; + then + echo "" + echo "!!! ERROR !!!" + echo "" + echo "This uninstaller requires root privileges. It is currently not" + echo "running as root AND an attempt to use su failed." + echo "" + echo "Please correct this by installing and configuring sudo or running" + echo "the uninstaller as root (su -c)." + echo "" + read -p "Press ENTER to exit uninstaller:" BLAH + exit 1 + fi + exit + else + sudo -k # make sudo forget about cached credentials + fi + + if ! sudo date; + then + echo "" + echo "Attempting to uninstall using su" + echo "Please enter root password below" + echo "" + + if ! su -c "${UNINSTALLER}"; + then + echo "" + echo "!!! ERROR !!!" + echo "" + echo "This uninstaller requires root privileges. It is currently not" + echo "running as root AND an attempt to use both sudo and su failed." + echo "" + echo "Please correct this by installing and configuring sudo or running" + echo "the uninstaller as root (su -c)." + echo "" + read -p "Press ENTER to exit uninstaller:" BLAH + exit 1 + fi + exit + fi + SUPER="sudo" +fi + ####################### # Check for xdg utils ####################### HAS_XDG="T" +#load the file that contains the translated names of the users directories +if [ -e /home/${USER_NAME}/.config/user-dirs.dirs ]; then + . /home/${USER_NAME}/.config/user-dirs.dirs +fi + +if [ "$(id -u)" != "0" ]; then + USER_DESKTOP_DIR=${XDG_DESKTOP_DIR:-$HOME/Desktop} +else + #running as root with su makes this more difficult + DESKTOP_FOLDER=$(echo ${XDG_DESKTOP_DIR:-$HOME/Desktop} | awk -F/ '{print $NF}') + USER_DESKTOP_DIR="/home/${USER_NAME}/${DESKTOP_FOLDER}" +fi + XDG_MENU_VER=$(xdg-desktop-menu --version 2> /dev/null) if [ -z "$XDG_MENU_VER" ]; then @@ -57,26 +143,39 @@ then if [ "T" = ${HAS_XDG} ]; then - sudo xdg-desktop-menu uninstall ${MENU_FILE_PATH} - sudo xdg-icon-resource uninstall --size 16 ${ICON_NAME} - sudo xdg-icon-resource uninstall --size 22 ${ICON_NAME} - sudo xdg-icon-resource uninstall --size 32 ${ICON_NAME} - sudo xdg-icon-resource uninstall --size 48 ${ICON_NAME} + ${SUPER} xdg-desktop-menu uninstall ${MENU_FILE_PATH} + ${SUPER} xdg-icon-resource uninstall --size 16 ${ICON_NAME} + ${SUPER} xdg-icon-resource uninstall --size 22 ${ICON_NAME} + ${SUPER} xdg-icon-resource uninstall --size 32 ${ICON_NAME} + ${SUPER} xdg-icon-resource uninstall --size 48 ${ICON_NAME} if [ -e /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg ]; then - sudo rm -f /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg + ${SUPER} rm -f /usr/share/icons/hicolor/scalable/apps/${ICON_NAME}.svg fi fi - if [ -e ~/Desktop/${DESKTOP_LINK_FILE} ]; + if [ -e ${USER_DESKTOP_DIR}/${DESKTOP_LINK_FILE} ]; + then + ${SUPER} rm -f ${USER_DESKTOP_DIR}/${DESKTOP_LINK_FILE} + fi + + # delete the bin link if it is linked to this version + if [ -e "${USER_BIN_DIR}/${PGM_NAME}${MAJOR_VERSION}" ]; then - sudo rm -f ~/Desktop/${DESKTOP_LINK_FILE} + BIN_LINK_TARGET=$(readlink "${USER_BIN_DIR}/${PGM_NAME}${MAJOR_VERSION}") + BIN_LINK_TARGET_DIR=$(dirname "${BIN_LINK_TARGET}") + + if [ "${BIN_LINK_TARGET_DIR}" = "${PGM_PATH}/bin" ]; + then + ${SUPER} rm -f "${USER_BIN_DIR}/${PGM_NAME}${MAJOR_VERSION}" + fi fi + # delete the old package - sudo rm -rf ${PGM_PATH} - sudo rm -f $0 + ${SUPER} rm -rf ${PGM_PATH} + ${SUPER} rm -f $0 else echo "" echo "!!! FAILURE !!! - install path ${PGM_PATH} does not exist."