get and deploy harrison binaries.
[ardour.git] / tools / linux_packaging / uninstall.sh.in
index 0e15b3d02c464f8ad9c573d1e781f58cbc075ae0..20aa1b688de399e278406fd612179b57a6b12f0d 100644 (file)
 #
 #####################################
 
+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."