* Andreas Henriksson [Sun Jan 24, 2016 at 04:08:31AM +0100]:
> On Sat, Jan 23, 2016 at 10:07:03PM +0100, Andreas Henriksson wrote:

> > There's one question on my mind though, shouldn't the upgrade case
> > be versioned? eg. so in additional future releases you don't try to
> > divert when you've already diverted. You only want the diversion to
> > happen once when upgrading to this exact version you're preparing now.

> One minor correction, we should ofcourse not check which version
> we're upgrading *to*. The check should be if we're upgrading *from*
> a version << $FIRSTFIXED~. I think the example in policy has this right
> so check that out instead of listening to me. ;)

Indeed, thanks. I've updated the patch accordingly, see attached
file. I'd upload this as file-rc 0.8.17 if there are no objections.

regards,
-mika-
From 6711c468d0cd5d90159d5c115c9385c917e87eae Mon Sep 17 00:00:00 2001
From: Michael Prokop <m...@debian.org>
Date: Sat, 23 Jan 2016 00:01:20 +0100
Subject: [PATCH] divert update-rc.d + invoke-rc.d files to cooperate with
 init-system-helpers >=1.25

Closes: #285835, #812337
---
 debian/postrm  | 28 +++++++++++++++++++++++++++-
 debian/preinst | 19 +++++++++++++++++++
 2 files changed, 46 insertions(+), 1 deletion(-)

diff --git a/debian/postrm b/debian/postrm
index 018fd04..3e1b56e 100644
--- a/debian/postrm
+++ b/debian/postrm
@@ -17,12 +17,38 @@ set -e
 # for details, see http://www.debian.org/doc/debian-policy/ or
 # the debian-policy package
 
+# see #812337 + #285835, #805487
+undivert() {
+  dpkg-divert --package file-rc --remove --rename \
+    --divert /usr/sbin/update-rc.d.real /usr/sbin/update-rc.d
+
+  dpkg-divert --package file-rc --remove --rename \
+    --divert /usr/sbin/invoke-rc.d.real /usr/sbin/invoke-rc.d
+
+  dpkg-divert --package file-rc --remove --rename \
+    --divert /usr/share/man/man8/update-rc.d.8.gz.real /usr/share/man/man8/update-rc.d.8.gz
+
+  dpkg-divert --package file-rc --remove --rename \
+    --divert /usr/share/man/man8/invoke-rc.d.8.gz.real /usr/share/man/man8/invoke-rc.d.8.gz
+}
 
 case "$1" in
-    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    upgrade|failed-upgrade)
+    ;;
+
+    abort-upgrade)
+      if dpkg --compare-versions "$2" lt 0.8.17 ; then
+        undivert
+      fi
+    ;;
+
+    abort-install|disappear)
+        undivert
     ;;
 
     remove)
+        undivert
+
 	if [ ! -e /usr/sbin/update-rc.d ] ; then
 		ln -sf /usr/share/sysvinit/update-rc.d /usr/sbin/update-rc.d
 	fi
diff --git a/debian/preinst b/debian/preinst
index 9b3a1f0..5bf082e 100644
--- a/debian/preinst
+++ b/debian/preinst
@@ -14,12 +14,31 @@ set -e
 # for details, see http://www.debian.org/doc/debian-policy/ or
 # the debian-policy package
 
+# see #812337 + #285835, #805487
+divert() {
+
+  dpkg-divert --package file-rc --add --rename \
+    --divert /usr/sbin/update-rc.d.real /usr/sbin/update-rc.d
+
+  dpkg-divert --package file-rc --add --rename \
+    --divert /usr/sbin/invoke-rc.d.real /usr/sbin/invoke-rc.d
+
+  dpkg-divert --package file-rc --add --rename \
+    --divert /usr/share/man/man8/update-rc.d.8.gz.real /usr/share/man/man8/update-rc.d.8.gz
+
+  dpkg-divert --package file-rc --add --rename \
+    --divert /usr/share/man/man8/invoke-rc.d.8.gz.real /usr/share/man/man8/invoke-rc.d.8.gz
+}
 
 case "$1" in
     install)
+      divert
     ;;
 
     upgrade)
+      if dpkg --compare-versions "$2" lt 0.8.17 ; then
+        divert
+      fi
     ;;
 
     abort-upgrade)
-- 
2.1.4

Attachment: signature.asc
Description: Digital signature

Reply via email to