Package: librtlsdr0 Version: 0.6.0-5 Severity: important Tags: patch User: helm...@debian.org Usertags: dep17p7 X-Debbugs-Cc: helm...@debian.org
librtlsdr0 contains udev rules which are installed to /lib; the rules file needs to be moved to /usr/lib as part of Debian's usr-merge effort. Because librtlsdr0 is Multi-Arch: same, an unfortunate corner- case can occur whereby shared files (such as udev rules) may be erroneously removed on upgrades (please see DEP17[1] P7: Shared multiarch file loss). I have raised a Salsa MR[2] and attached an equivalent patch which avoids the problem by implementing DEP17 M10 (Protective diversions for shared files) for the affected file. 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. Best regards, Chris 1. https://subdivi.de/~helmut/dep17.html 2. https://salsa.debian.org/bottoms/pkg-rtl-sdr/-/merge_requests/2 -- diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 000000000000..f1296533f36f --- /dev/null +++ b/debian/README.source @@ -0,0 +1,9 @@ +rtl-sdr (0.6.0-5.1) UNRELEASED; urgency=medium + + In this version, librtlsdr0 has moved its udev rules file from /lib + to /usr/lib. If this package is back-ported to a release prior to + trixie this change must be revertedm, otherwise the dpkg-divert calls + in the maintainer scripts will cause breakage (dh_movetousr is a + no-op pre-trixie). + + -- Chris Boot <bo...@debian.org> Fri, 24 Nov 2023 17:13:53 +0000 diff --git a/debian/changelog b/debian/changelog index 838d7d7a6f1b..1d31a473a3b5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +rtl-sdr (0.6.0-5.1) UNRELEASED; urgency=medium + + * Non-maintainer upload. + * DEP17: Install udev rules into /usr, with (M10) protective diversion + against possible file loss as exhibited by Multi-Arch: same packages (P7). + Diversion code can be removed in forky+1. (Closes: #XXXXXXX) + + -- Chris Boot <bo...@debian.org> Fri, 24 Nov 2023 16:50:24 +0000 + rtl-sdr (0.6.0-5) unstable; urgency=medium * update to 0.6.0-36-g1261fbb diff --git a/debian/control b/debian/control index 29fbb226cdb5..7f5755a6f179 100644 --- a/debian/control +++ b/debian/control @@ -2,8 +2,11 @@ Source: rtl-sdr Section: comm Priority: optional Maintainer: A. Maitland Bottoms <bott...@debian.org> -Build-Depends: cmake, +# Warning: see README.source before back-porting this package +Build-Depends: base-files (>= 13~), + cmake, debhelper (>= 12~), + dh-sequence-movetousr, libusb-1.0-0-dev [!kfreebsd-any], libusb2-dev [kfreebsd-any], pkg-config diff --git a/debian/librtlsdr0.lintian-overrides b/debian/librtlsdr0.lintian-overrides new file mode 100644 index 000000000000..3e0788f167bb --- /dev/null +++ b/debian/librtlsdr0.lintian-overrides @@ -0,0 +1,4 @@ +# begin-remove-after: released:forky +# protective diversion for upgrades of files moved from / to /usr +librtlsdr0: diversion-for-unknown-file lib/udev/rules.d/60-librtlsdr0.rules [preinst:*] +# end-remove-after diff --git a/debian/librtlsdr0.postinst b/debian/librtlsdr0.postinst new file mode 100644 index 000000000000..05299725f587 --- /dev/null +++ b/debian/librtlsdr0.postinst @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +# begin-remove-after: released:forky +# protective diversion of files moved from / to /usr, to avoid file loss. +# Only for upgrades. +# Warning: see README.source and remove this section when back-porting +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-librtlsdr0.rules.usr-is-merged \ + --remove /lib/udev/rules.d/60-librtlsdr0.rules +fi +# end-remove-after + +#DEBHELPER# + +exit 0 diff --git a/debian/librtlsdr0.postrm b/debian/librtlsdr0.postrm new file mode 100644 index 000000000000..a4c11ee68ede --- /dev/null +++ b/debian/librtlsdr0.postrm @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +# begin-remove-after: released:forky +# protective diversion of files moved from / to /usr, to avoid file loss. +# Only for upgrades. +# Warning: see README.source and remove this section when back-porting +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-librtlsdr0.rules.usr-is-merged \ + --remove /lib/udev/rules.d/60-librtlsdr0.rules +fi +# end-remove-after + +#DEBHELPER# + +exit 0 diff --git a/debian/librtlsdr0.preinst b/debian/librtlsdr0.preinst new file mode 100644 index 000000000000..abca28e35734 --- /dev/null +++ b/debian/librtlsdr0.preinst @@ -0,0 +1,17 @@ +#!/bin/sh +set -e + +# begin-remove-after: released:forky +# protective diversion of files moved from / to /usr, to avoid file loss. +# Only for upgrades. +# Warning: see README.source and remove this section when back-porting +if [ "$1" = "upgrade" ]; then + dpkg-divert --package usr-is-merged --no-rename \ + --divert /lib/udev/rules.d/60-librtlsdr0.rules.usr-is-merged \ + --add /lib/udev/rules.d/60-librtlsdr0.rules +fi +# end-remove-after + +#DEBHELPER# + +exit 0