Package: libxtrxl0
Version: 0.0.1+git20201202.1b6eddf-1
Severity: important
Tags: patch
User: helm...@debian.org
Usertags: dep17p7
X-Debbugs-Cc: helm...@debian.org

Dear Maintainer,

libxtrxl0 contains udev files which are installed to /lib; these files
need to be moved to /usr/lib as part of Debian's usr-merge effort.
Because your package is Multi-Arch: same, an unfortunate corner-case can
occur whereby shared files (such as the udev rules) may be erroneously
removed on upgrades (please see DEP17[1] P7: Shared multiarch file
loss).

You will find a patch attached to move the udev files, including the
mitigation for the file loss scenario.

Please consider applying this patch at your earliest convenience. This
bug will be upgraded to release critical soon, as it blocks the overall
usr-merge effort which is being undertaken for the trixie release.


Many thanks,
Chris


[1] https://wiki.debian.org/UsrMerge
diff -Nru libxtrxll-0.0.1+git20201202.1b6eddf/debian/changelog 
libxtrxll-0.0.1+git20201202.1b6eddf/debian/changelog
--- libxtrxll-0.0.1+git20201202.1b6eddf/debian/changelog        2022-11-09 
10:26:52.000000000 +0100
+++ libxtrxll-0.0.1+git20201202.1b6eddf/debian/changelog        2023-11-26 
20:43:51.000000000 +0100
@@ -1,3 +1,11 @@
+libxtrxll (0.0.1+git20201202.1b6eddf-1.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 20:43:51 +0100
+
 libxtrxll (0.0.1+git20201202.1b6eddf-1) unstable; urgency=low
 
   * Team upload.
diff -Nru 
libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.lintian-overrides 
libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.lintian-overrides
--- libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.lintian-overrides     
1970-01-01 01:00:00.000000000 +0100
+++ libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.lintian-overrides     
2023-11-26 20:43:34.000000000 +0100
@@ -0,0 +1,4 @@
+# begin-remove-after: released:forky
+# protective diversion for upgrades of files moved from / to /usr
+libxtrxll0: diversion-for-unknown-file lib/udev/rules.d/50-libxtrxll0.rules 
[preinst:*]
+# end-remove-after
diff -Nru libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.postinst 
libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.postinst
--- libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.postinst      
1970-01-01 01:00:00.000000000 +0100
+++ libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.postinst      
2023-11-26 20:43:34.000000000 +0100
@@ -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/50-libxtrxll0.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/50-libxtrxll0.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
diff -Nru libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.postrm 
libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.postrm
--- libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.postrm        
1970-01-01 01:00:00.000000000 +0100
+++ libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.postrm        
2023-11-26 20:43:34.000000000 +0100
@@ -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/50-libxtrxll0.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/50-libxtrxll0.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
+
diff -Nru libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.preinst 
libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.preinst
--- libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.preinst       
1970-01-01 01:00:00.000000000 +0100
+++ libxtrxll-0.0.1+git20201202.1b6eddf/debian/libxtrxll0.preinst       
2023-11-26 20:43:34.000000000 +0100
@@ -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/50-libxtrxll0.rules.usr-is-merged \
+        --add /lib/udev/rules.d/50-libxtrxll0.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
+
diff -Nru libxtrxll-0.0.1+git20201202.1b6eddf/debian/rules 
libxtrxll-0.0.1+git20201202.1b6eddf/debian/rules
--- libxtrxll-0.0.1+git20201202.1b6eddf/debian/rules    2022-11-09 
10:26:52.000000000 +0100
+++ libxtrxll-0.0.1+git20201202.1b6eddf/debian/rules    2023-11-26 
20:43:51.000000000 +0100
@@ -14,6 +14,9 @@
 override_dh_installudev:
        cp mod_usb3380/udev/50-xtrx-usb3380.rules debian/libxtrxll0.udev
        dh_installudev --priority=50
+       # This should be harmless after dh_installudev changes its default 
install path.
+       set -e; if test -d debian/libxtrxll0/lib/udev/rules.d; then mv 
debian/libxtrxll0/lib/udev debian/libxtrxll0/usr/lib; fi
+       set -e; if test -d debian/libxtrxll0/lib; then rmdir 
debian/libxtrxll0/lib; fi
 
 override_dh_clean:
        rm -f debian/libxtrxll0.udev

Reply via email to