diff -u -r repos/slim/7.4/trunk/platforms/readynas/squeezeboxserver_addon_sparc/SqueezeboxServer/install.sh seb/slim/7.4/trunk/platforms/readynas/squeezeboxserver_addon_sparc/SqueezeboxServer/install.sh --- repos/slim/7.4/trunk/platforms/readynas/squeezeboxserver_addon_sparc/SqueezeboxServer/install.sh 2009-10-11 18:55:57.000000000 +0200 +++ seb/slim/7.4/trunk/platforms/readynas/squeezeboxserver_addon_sparc/SqueezeboxServer/install.sh 2009-10-11 18:56:31.000000000 +0200 @@ -14,9 +14,15 @@ exit } +# Define some variables for handling backup of previous SlimServer/SqueezeCenter prefs +MIGRATION_WORKDIR="/var/tmp/squeezeboxserver-migration-files" +OLD_PACKAGES_NAMES="slimserver squeezecenter squeezecenter-readynas" +PREFS_SUBDIRECTORIES="prefs Plugins" + orig_dir=`pwd` name=`awk -F'!!' '{ print $1 }' addons.conf` -stop=`awk -F'!!' '{ print $5 }' addons.conf` +# Because of server name changes, we need to check the system's addons.conf for the stop command +stop=`awk -F'!!' -v NAME="$name" '$1==NAME { print $5 }' /etc/frontview/addons/addons.conf` run=`awk -F'!!' '{ print $4 }' addons.conf` friendly_name=`awk -F'!!' '{ print $2 " " $3 }' addons.conf` @@ -30,6 +36,31 @@ eval $stop && sleep 1 +# When upgrading from SBS 7.4.0, make sure there are no more squeezeboxserver processes running +if grep -q "squeezeboxserver" /etc/frontview/addons/addons.conf; then + ps -ef | awk '$0 ~ /squeezeboxserver/ && $0 !~ /awk/ {print "kill -9 "$2}' | sh +fi + +# Backup preferences if we're upgrading from SlimServer or SqueezeCenter +oldservicesnames_regexp="($(echo ${OLD_PACKAGES_NAMES} | tr -s ' ' '|'))" +if grep -q "${oldservicesnames_regexp}" /etc/frontview/addons/addons.conf; then + mkdir "${MIGRATION_WORKDIR}" || bye "ERROR: Unable to create ${MIGRATION_WORKDIR} directory!" + + # First back up SlimServer/SqueezeCenter prefs + for servicename in ${OLD_PACKAGES_NAMES}; do + for prefdir in ${PREFS_SUBDIRECTORIES}; do + if [ -d "/var/lib/${servicename}/${prefdir}" ]; then + ( cd "/var/lib/${servicename}/" && tar cf - "${prefdir}") | ( tar xf - -C "${MIGRATION_WORKDIR}" ) + fi + done + done + + # Then, correct path references to SBS's /var directory + for filetochange in `find "${MIGRATION_WORKDIR}" -type f -exec grep -l "/var/lib/${oldservicesnames_regexp}/" "{}" \;`; do + sed -i -e "s_/var/lib/${oldservicesnames_regexp}/_/var/lib/squeezeboxserver/_g" $filetochange + done +fi + # Kill the whole DB if we're updating from SlimServer < 7, so the SC7 DB schema update doesn't freak out start-stop-daemon -S -q -b -x /usr/sbin/mysqld -- \ --basedir=/usr --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/run/mysqld/mysqld.sock @@ -39,6 +70,10 @@ else sleep .5 fi + # What if MySQL doesn't start up? + if [ $i -eq 10 ]; then + bye "ERROR: Unable to start MySQL!" + fi done if [ $((`mysql -s --skip-column-names -uslimserver slimserver -e "SELECT value FROM dbix_migration;"`)) -lt 10 ]; then mysql -s -uslimserver -e 'DROP DATABASE slimserver' @@ -47,7 +82,12 @@ # Remove old versions of our addon if [ -f "/etc/frontview/addons/${name}.remove" ]; then - sh /etc/frontview/addons/${name}.remove -upgrade &>/dev/null + # If we're upgrading from SlimServer or SqueezeCenter, let the old package get purged + if grep -q "${oldservicesnames_regexp}" /etc/frontview/addons/addons.conf; then + sh /etc/frontview/addons/${name}.remove &>/dev/null + else + sh /etc/frontview/addons/${name}.remove -upgrade &>/dev/null + fi fi # Extract program files @@ -78,6 +118,26 @@ rm -f /var/log/slimserver.log ln -sf /var/log/squeezeboxserver/server.log /var/log/slimserver.log +# Restore SlimServer/SqueezeCenter preferences, if any +if [ -d "${MIGRATION_WORKDIR}" ]; then + ( cd "${MIGRATION_WORKDIR}" && tar cf - . ) | tar xf - -C /var/lib/squeezeboxserver + rm -rf "${MIGRATION_WORKDIR}" +fi + +# Now, it's time for some definitive clean up +for oldpkg in ${OLD_PACKAGES_NAMES}; do + # Purge package if still installed + if dpkg -s ${oldpkg} > /dev/null 2>&1; then + dpkg -P ${oldpkg} &>/dev/null + fi + + # Remove old stuff left behind + rm -rf /etc/${oldpkg} + rm -rf /usr/share/${oldpkg} + rm -rf /var/lib/${oldpkg} + rm -rf /var/log/${oldpkg} +done + # Start up the addon program eval $run || bye "ERROR: Could not start $friendly_name service" diff -u -r repos/slim/7.4/trunk/platforms/readynas/squeezeboxserver_addon_sparc/SqueezeboxServer/remove.sh seb/slim/7.4/trunk/platforms/readynas/squeezeboxserver_addon_sparc/SqueezeboxServer/remove.sh --- repos/slim/7.4/trunk/platforms/readynas/squeezeboxserver_addon_sparc/SqueezeboxServer/remove.sh 2009-10-11 18:55:57.000000000 +0200 +++ seb/slim/7.4/trunk/platforms/readynas/squeezeboxserver_addon_sparc/SqueezeboxServer/remove.sh 2009-10-11 18:56:31.000000000 +0200 @@ -2,9 +2,6 @@ SERVICE=SLIMSERVER PACKAGENAME=squeezeboxserver -OLD_PACKAGE_NAMES="slimserver \ - squeezecenter \ - squeezeboxserver-readynas" DIRECTORIES="/var/log/squeezeboxserver \ /var/lib/squeezeboxserver \ /etc/squeezeboxserver \ @@ -23,33 +20,10 @@ # Remove debian package dpkg -P $PACKAGENAME &>/dev/null - # Remove old packages as well - for package in $OLD_PACKAGE_NAMES; do - if dpkg -s $package > /dev/null 2>&1 ; then - dpkg -P $package &>/dev/null - fi - done - # Forcefully remove any directories where we would have put files for i in $DIRECTORIES; do rm -rf $i &>/dev/null done -else - # Remove old packages first. Their conf dirs are left in place, will deal with that next - for package in $OLD_PACKAGE_NAMES; do - if dpkg -s $package > /dev/null 2>&1 ; then - dpkg -P $package &>/dev/null - fi - done - - # Doing an upgrade. Look for old config files. If we find them, copy them, then remove them - for package in $OLD_PACKAGE_NAMES; do - if [ -e /var/lib/$package/prefs ]; then - mkdir -p /var/lib/squeezeboxserver/prefs - mv -n /var/lib/$package/prefs/* /var/lib/squeezeboxserver/prefs &>/dev/null - rm -rf /var/lib/$package - fi - done fi # Remove entry from services file