Package: libmirisdr0 Version: 0.0.4.59ba37-5 Severity: important Tags: patch User: helm...@debian.org Usertags: dep17p7 X-Debbugs-Cc: helm...@debian.org
Dear Maintainer, libmirisdr0 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. Alternatively you can find the changes in a salsa MR[2]. 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 libmirisdr-0.0.4.59ba37/debian/changelog libmirisdr-0.0.4.59ba37/debian/changelog --- libmirisdr-0.0.4.59ba37/debian/changelog 2016-04-27 03:14:13.000000000 +0200 +++ libmirisdr-0.0.4.59ba37/debian/changelog 2023-11-26 21:16:08.000000000 +0100 @@ -1,3 +1,13 @@ +libmirisdr (0.0.4.59ba37-5.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) + * Remove obsolete postinst tasks (ldconfig, udev reload), now handled by + triggers. + + -- Chris Hofstaedtler <z...@debian.org> Sun, 26 Nov 2023 21:16:08 +0100 + libmirisdr (0.0.4.59ba37-5) unstable; urgency=medium * swap short descriptions. Thanks Daniele! (Closes: #813996) diff -Nru libmirisdr-0.0.4.59ba37/debian/libmirisdr0.lintian-overrides libmirisdr-0.0.4.59ba37/debian/libmirisdr0.lintian-overrides --- libmirisdr-0.0.4.59ba37/debian/libmirisdr0.lintian-overrides 1970-01-01 01:00:00.000000000 +0100 +++ libmirisdr-0.0.4.59ba37/debian/libmirisdr0.lintian-overrides 2023-11-26 21:16:01.000000000 +0100 @@ -0,0 +1,4 @@ +# begin-remove-after: released:forky +# protective diversion for upgrades of files moved from / to /usr +libmirisdr0: diversion-for-unknown-file lib/udev/rules.d/60-libmirisdr0.rules [preinst:*] +# end-remove-after diff -Nru libmirisdr-0.0.4.59ba37/debian/libmirisdr0.postinst libmirisdr-0.0.4.59ba37/debian/libmirisdr0.postinst --- libmirisdr-0.0.4.59ba37/debian/libmirisdr0.postinst 2013-10-01 19:39:33.000000000 +0200 +++ libmirisdr-0.0.4.59ba37/debian/libmirisdr0.postinst 2023-11-26 21:16:08.000000000 +0100 @@ -2,28 +2,15 @@ set -e -#DEBHELPER# - +# begin-remove-after: released:forky +# protective diversion of files moved from / to /usr, to avoid file loss. +# Only for upgrades. if [ "$1" = "configure" ]; then - ldconfig + # 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-libmirisdr0.rules.usr-is-merged \ + --remove /lib/udev/rules.d/60-libmirisdr0.rules fi +# end-remove-after -# same test as udev postinst... -chrooted() { - if [ "$(stat -c %d/%i /)" = "$(stat -Lc %d/%i /proc/1/root 2>/dev/null)" ]; - then - # the devicenumber/inode pair of / is the same as that of /sbin/init's - # root, so we're *not* in a chroot and hence return false. - return 1 - fi - return 0 -} - -if [ "$1" = "configure" ]; then - if ! chrooted ; then - # try to update udev now - udevadm control --reload-rules || true ; - fi -fi - -exit 0 +#DEBHELPER# diff -Nru libmirisdr-0.0.4.59ba37/debian/libmirisdr0.postrm libmirisdr-0.0.4.59ba37/debian/libmirisdr0.postrm --- libmirisdr-0.0.4.59ba37/debian/libmirisdr0.postrm 1970-01-01 01:00:00.000000000 +0100 +++ libmirisdr-0.0.4.59ba37/debian/libmirisdr0.postrm 2023-11-26 21:16:01.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/60-libmirisdr0.rules.usr-is-merged \ + --remove /lib/udev/rules.d/60-libmirisdr0.rules +fi +# end-remove-after + +#DEBHELPER# + diff -Nru libmirisdr-0.0.4.59ba37/debian/libmirisdr0.preinst libmirisdr-0.0.4.59ba37/debian/libmirisdr0.preinst --- libmirisdr-0.0.4.59ba37/debian/libmirisdr0.preinst 1970-01-01 01:00:00.000000000 +0100 +++ libmirisdr-0.0.4.59ba37/debian/libmirisdr0.preinst 2023-11-26 21:16:01.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/60-libmirisdr0.rules.usr-is-merged \ + --add /lib/udev/rules.d/60-libmirisdr0.rules +fi +# end-remove-after + +#DEBHELPER# + diff -Nru libmirisdr-0.0.4.59ba37/debian/rules libmirisdr-0.0.4.59ba37/debian/rules --- libmirisdr-0.0.4.59ba37/debian/rules 2013-10-01 23:12:43.000000000 +0200 +++ libmirisdr-0.0.4.59ba37/debian/rules 2023-11-26 21:16:08.000000000 +0100 @@ -10,3 +10,8 @@ debian/libmirisdr0.udev: mirisdr.rules cp -p mirisdr.rules debian/libmirisdr0.udev + +override_dh_installudev: + dh_installudev + set -e; if test -d debian/libmirisdr0/lib/udev/rules.d; then mv debian/libmirisdr0/lib/udev debian/libmirisdr0/usr/lib; fi + set -e; if test -d debian/libmirisdr0/lib; then rmdir debian/libmirisdr0/lib; fi