From af5e0e1b2403f6e198d1df7b4c3f3884b6189a6b Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Mon, 20 Apr 2020 18:15:03 -0700 Subject: [PATCH] debian: Remove timer to setup repositories properly When removing systemd services, dh_installsystemd has no idea about services present in the older versions that been removed. So, it generates no handling scripts for those services. No convenience methods exist too. dh_installsystemd uses deb-systemd-helper which maintains state files in /var/lib/systemd/deb-systemd-helper-enabled/*.dsh-also. These files need to removed apart from symlinks created in /etc/systemd/system enable services are enabled. If the service/timer is currently running, stop it too. Use deb-systemd-helper and deb-systemd-invoke to achieve this. Closes: #1835 Tests performed: - Install a freedombox version older than 20.5. Upgrade to 20.5. Notice the incorrect symlink /etc/systemd/system/multi-user.target.wants/freedombox-setup-repositories.timer and also the state file /var/lib/systemd/deb-systemd-helper-enabled/freedombox-setup-repositories.timer.dsh-also Then upgrade to a .deb packages built with the patch. The two files will be removed. No extra messages are warnings are printed during package upgrade. - Install a freedombox version older than 20.5. Upgrade to .deb packages built with this patch. Notice the same results. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- debian/freedombox.preinst | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 debian/freedombox.preinst diff --git a/debian/freedombox.preinst b/debian/freedombox.preinst new file mode 100755 index 000000000..c10163861 --- /dev/null +++ b/debian/freedombox.preinst @@ -0,0 +1,27 @@ +#!/bin/sh + +set -e + +case "$1" in + upgrade) + # Handle removing freedombox-setup-repositories.timer from 20.5. + if dpkg --compare-versions "$2" le 20.7; then + if [ -x "/usr/bin/deb-systemd-invoke" ]; then + deb-systemd-invoke stop freedombox-setup-repositories.timer >/dev/null 2>/dev/null || true + fi + + if [ -x "/usr/bin/deb-systemd-helper" ]; then + deb-systemd-helper purge freedombox-setup-repositories.timer >/dev/null || true + deb-systemd-helper unmask freedombox-setup-repositories.timer >/dev/null || true + fi + + if [ -d /run/systemd/system ]; then + systemctl daemon-reload + fi + fi + ;; +esac + +#DEBHELPER# + +exit 0