X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/tripe/blobdiff_plain/d64ce4ae05ad8250e08296af18d7d6ddcc5bbc9a..f220a1d75f50cea337908a392bf7f01b573edc97:/debian/tripe-peer-services.postinst diff --git a/debian/tripe-peer-services.postinst b/debian/tripe-peer-services.postinst index db937deb..214f82a9 100644 --- a/debian/tripe-peer-services.postinst +++ b/debian/tripe-peer-services.postinst @@ -46,7 +46,7 @@ restart_services () { echo -n " $name" ## If there's an instance of the service running already then we ask it - ## to quit. This is where everything gets commplicated. + ## to quit. This is where everything gets complicated. if silently tripectl svcensure "$name"; then ## So, what we want to do is ask the service to quit, and make sure it @@ -95,6 +95,46 @@ restart_services () { echo "." } +retire_service () { + name=$1 version=$2 + + ## If the service is currently running, then ask it to stop. + if tripectl >/dev/null 2>&1 svcensure $name && \ + ! tripectl >/dev/null 2>&1 svcensure $name $version~ + then + tripectl svcsubmit $name quit + fi + + ## Remove the symbolic link if it's there. + if [ -L /etc/tripe/services/$name ]; then + case $(readlink /etc/tripe/services/$name) in + /usr/lib/tripe/services/$name) + rm /etc/tripe/services/$name + ;; + esac + fi +} + +case "$1" in + configure) + v=$2 + + ## Apply upgrades iteratively until we catch up with reality. + while :; do + + ## Here, we killed the `watch' service. + if dpkg --compare-versions "$v" lt-nl 1.0.0pre14~; then + retire_service watch 1.0.0pre14 + v=1.0.0pre14 + + ## No more updates to apply. + else + break + fi + done + ;; +esac + restart_services conntrack connect #DEBHELPER#