* Chris Hofstaedtler <z...@debian.org> [231126 19:17]:
> You will find a patch attached to move the udev files, including the
> mitigation for the file loss scenario.

Please find the patch attached.

Chris

>From 1ebec5c13e777a9ebf08a23082ddb29f5abf40f1 Mon Sep 17 00:00:00 2001
From: Chris Hofstaedtler <z...@debian.org>
Date: Sun, 26 Nov 2023 15:58:01 +0100
Subject: [PATCH] Move udev files from /lib to /usr/lib

Including protective diversion against Multi-Arch: same file loss scenario
(DEP17 P7 M10).

Closes: #-1
---
 debian/changelog                        |  8 ++++++++
 debian/libfreenect0.5.lintian-overrides |  4 ++++
 debian/libfreenect0.5.postinst          | 16 ++++++++++++++++
 debian/libfreenect0.5.postrm            | 16 ++++++++++++++++
 debian/libfreenect0.5.preinst           | 15 +++++++++++++++
 debian/rules                            |  5 +++++
 6 files changed, 64 insertions(+)
 create mode 100644 debian/libfreenect0.5.lintian-overrides
 create mode 100644 debian/libfreenect0.5.postinst
 create mode 100644 debian/libfreenect0.5.postrm
 create mode 100644 debian/libfreenect0.5.preinst

diff --git a/debian/changelog b/debian/changelog
index c522c56..8a4be24 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+libfreenect (1:0.5.3-3.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Move udev files from /lib to /usr/lib, including protective diversion
+    against Multi-Arch: same file loss scenario (DEP17 P7 M10). (Closes: #-1)
+
+ -- Chris Hofstaedtler <z...@debian.org>  Sun, 26 Nov 2023 15:57:36 +0100
+
 libfreenect (1:0.5.3-3) unstable; urgency=medium
 
   * debian/control
diff --git a/debian/libfreenect0.5.lintian-overrides b/debian/libfreenect0.5.lintian-overrides
new file mode 100644
index 0000000..da45f8d
--- /dev/null
+++ b/debian/libfreenect0.5.lintian-overrides
@@ -0,0 +1,4 @@
+# begin-remove-after: released:forky
+# protective diversion for upgrades of files moved from / to /usr
+libfreenect0.5: diversion-for-unknown-file lib/udev/rules.d/60-libfreenect0.5.rules [preinst:*]
+# end-remove-after
diff --git a/debian/libfreenect0.5.postinst b/debian/libfreenect0.5.postinst
new file mode 100644
index 0000000..40074e3
--- /dev/null
+++ b/debian/libfreenect0.5.postinst
@@ -0,0 +1,16 @@
+#! /bin/sh
+
+set -e
+
+# begin-remove-after: released:forky
+# protective diversion of files moved from / to /usr, to avoid file loss.
+# Only for upgrades.
+if [ "$1" = "configure" ]; then
+    # At this point, the package will have installed the same file in */usr*.
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/60-libfreenect0.5.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/60-libfreenect0.5.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
diff --git a/debian/libfreenect0.5.postrm b/debian/libfreenect0.5.postrm
new file mode 100644
index 0000000..20645b8
--- /dev/null
+++ b/debian/libfreenect0.5.postrm
@@ -0,0 +1,16 @@
+#!/bin/sh
+set -e
+
+# begin-remove-after: released:forky
+# protective diversion of files moved from / to /usr, to avoid file loss.
+# Only for upgrades.
+if [ "$1" = "remove" ] && [ "$DPKG_MAINTSCRIPT_PACKAGE_REFCOUNT" = "1" ]; then
+    # Cleanup in case package is removed before upgrade is finished (postinst ran).
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/60-libfreenect0.5.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/60-libfreenect0.5.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
+
diff --git a/debian/libfreenect0.5.preinst b/debian/libfreenect0.5.preinst
new file mode 100644
index 0000000..896e975
--- /dev/null
+++ b/debian/libfreenect0.5.preinst
@@ -0,0 +1,15 @@
+#!/bin/sh
+set -e
+
+# begin-remove-after: released:forky
+# protective diversion of files moved from / to /usr, to avoid file loss.
+# Only for upgrades.
+if [ "$1" = "upgrade" ]; then
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/60-libfreenect0.5.rules.usr-is-merged \
+        --add /lib/udev/rules.d/60-libfreenect0.5.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
+
diff --git a/debian/rules b/debian/rules
index d5ba96d..8809d11 100755
--- a/debian/rules
+++ b/debian/rules
@@ -23,6 +23,11 @@ endif
 override_dh_installdocs:
 	dh_installdocs --all CONTRIB
 
+override_dh_installudev:
+	dh_installudev
+	set -e; if test -d debian/libfreenect0.5/lib/udev/rules.d; then mv debian/libfreenect0.5/lib/udev debian/libfreenect0.5/usr/lib; fi
+	set -e; if test -d debian/libfreenect0.5/lib; then rmdir debian/libfreenect0.5/lib; fi
+
 override_dh_makeshlibs:
 	dh_makeshlibs -Xfakenect
 
-- 
2.39.2

Reply via email to