Package: libbladerf2
Version: 0.2023.02-2
Severity: important
Tags: patch
User: helm...@debian.org
Usertags: dep17p7
X-Debbugs-Cc: helm...@debian.org

Dear Maintainer,

libbladerf2 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 bladerf-0.2023.02/debian/changelog bladerf-0.2023.02/debian/changelog
--- bladerf-0.2023.02/debian/changelog  2023-09-24 04:34:49.000000000 +0200
+++ bladerf-0.2023.02/debian/changelog  2023-11-26 20:11:52.000000000 +0100
@@ -1,3 +1,11 @@
+bladerf (0.2023.02-2.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:11:52 +0100
+
 bladerf (0.2023.02-2) unstable; urgency=medium
 
   * Use pybuild for building the Python3 bindings to avoid Internet access
diff -Nru bladerf-0.2023.02/debian/libbladerf2.install 
bladerf-0.2023.02/debian/libbladerf2.install
--- bladerf-0.2023.02/debian/libbladerf2.install        2022-10-31 
02:13:52.000000000 +0100
+++ bladerf-0.2023.02/debian/libbladerf2.install        2023-11-26 
20:11:10.000000000 +0100
@@ -1,3 +1,3 @@
 debian/libbladerf2.metainfo.xml usr/share/metainfo
-lib/udev/rules.d/*
+usr/lib/udev/rules.d/*
 usr/lib/*/lib*.so.*
diff -Nru bladerf-0.2023.02/debian/libbladerf2.lintian-overrides 
bladerf-0.2023.02/debian/libbladerf2.lintian-overrides
--- bladerf-0.2023.02/debian/libbladerf2.lintian-overrides      1970-01-01 
01:00:00.000000000 +0100
+++ bladerf-0.2023.02/debian/libbladerf2.lintian-overrides      2023-11-26 
20:11:52.000000000 +0100
@@ -0,0 +1,6 @@
+# begin-remove-after: released:forky
+# protective diversion for upgrades of files moved from / to /usr
+libbladerf2: diversion-for-unknown-file 
lib/udev/rules.d/88-nuand-bladerf1.rules [preinst:*]
+libbladerf2: diversion-for-unknown-file 
lib/udev/rules.d/88-nuand-bladerf2.rules [preinst:*]
+libbladerf2: diversion-for-unknown-file 
lib/udev/rules.d/88-nuand-bootloader.rules [preinst:*]
+# end-remove-after
diff -Nru bladerf-0.2023.02/debian/libbladerf2.postinst 
bladerf-0.2023.02/debian/libbladerf2.postinst
--- bladerf-0.2023.02/debian/libbladerf2.postinst       1970-01-01 
01:00:00.000000000 +0100
+++ bladerf-0.2023.02/debian/libbladerf2.postinst       2023-11-26 
20:11:52.000000000 +0100
@@ -0,0 +1,22 @@
+#! /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/88-nuand-bladerf1.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/88-nuand-bladerf1.rules
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/88-nuand-bladerf2.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/88-nuand-bladerf2.rules
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/88-nuand-bootloader.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/88-nuand-bootloader.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
diff -Nru bladerf-0.2023.02/debian/libbladerf2.postrm 
bladerf-0.2023.02/debian/libbladerf2.postrm
--- bladerf-0.2023.02/debian/libbladerf2.postrm 1970-01-01 01:00:00.000000000 
+0100
+++ bladerf-0.2023.02/debian/libbladerf2.postrm 2023-11-26 20:11:52.000000000 
+0100
@@ -0,0 +1,22 @@
+#!/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/88-nuand-bladerf1.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/88-nuand-bladerf1.rules
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/88-nuand-bladerf2.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/88-nuand-bladerf2.rules
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/88-nuand-bootloader.rules.usr-is-merged \
+        --remove /lib/udev/rules.d/88-nuand-bootloader.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
+
diff -Nru bladerf-0.2023.02/debian/libbladerf2.preinst 
bladerf-0.2023.02/debian/libbladerf2.preinst
--- bladerf-0.2023.02/debian/libbladerf2.preinst        1970-01-01 
01:00:00.000000000 +0100
+++ bladerf-0.2023.02/debian/libbladerf2.preinst        2023-11-26 
20:11:52.000000000 +0100
@@ -0,0 +1,21 @@
+#!/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/88-nuand-bladerf1.rules.usr-is-merged \
+        --add /lib/udev/rules.d/88-nuand-bladerf1.rules
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/88-nuand-bladerf2.rules.usr-is-merged \
+        --add /lib/udev/rules.d/88-nuand-bladerf2.rules
+    dpkg-divert --package usr-is-merged --no-rename \
+        --divert /lib/udev/rules.d/88-nuand-bootloader.rules.usr-is-merged \
+        --add /lib/udev/rules.d/88-nuand-bootloader.rules
+fi
+# end-remove-after
+
+#DEBHELPER#
+
diff -Nru bladerf-0.2023.02/debian/rules bladerf-0.2023.02/debian/rules
--- bladerf-0.2023.02/debian/rules      2023-09-24 04:31:29.000000000 +0200
+++ bladerf-0.2023.02/debian/rules      2023-11-26 20:11:03.000000000 +0100
@@ -50,7 +50,7 @@
                                                        -DENABLE_LIBEDIT=ON \
                                                        -DENABLE_FX3_BUILD=OFF \
                                                        
-DBUILD_DOCUMENTATION=ON \
-                                                       
-DUDEV_RULES_PATH=/lib/udev/rules.d
+                                                       
-DUDEV_RULES_PATH=/usr/lib/udev/rules.d
 
 override_dh_auto_build:
        dh_auto_build

Reply via email to