Package: libiw30t64
Version: 30~pre9-16.1~exp1
Severity: serious
Tags: patch
User: helm...@debian.org
Usertags: dep17p1
Control: affects -1 + libiw30
X-Debbugs-Cc: vor...@debian.org

Installing libiw30t64 may cause file loss in an upgrade scenario.
Reproducer:

mmdebstrap --variant=apt --verbose bookworm /dev/null "deb 
http://deb.debian.org/debian bookworm main" "deb http://deb.debian.org/debian 
experimental main" --include=wireless-tools --chrooted-customize-hook="apt-get 
download libiw30t64" --chrooted-customize-hook="echo libiw30 deinstall | dpkg 
--set-selections" --chrooted-customize-hook="dpkg --auto-deconfigure --unpack 
*.deb" --chrooted-customize-hook="dpkg --configure -a" 
--chrooted-customize-hook="dpkg -r libiw30" --chrooted-customize-hook="! dpkg 
--verify | grep ."

I'm attaching a patch for your convenience. I consider that libiw30 is
not as central as other packages and hence propose employing Conflicts
here. Conflicts allow removing the protective diversion in trixie's
postinst rather than forky's postinst already.

Helmut
diff --minimal -Nru wireless-tools-30~pre9/debian/changelog 
wireless-tools-30~pre9/debian/changelog
--- wireless-tools-30~pre9/debian/changelog     2024-02-04 21:34:45.000000000 
+0100
+++ wireless-tools-30~pre9/debian/changelog     2024-02-06 07:33:48.000000000 
+0100
@@ -1,3 +1,9 @@
+wireless-tools (30~pre9-16.1~exp2) UNRELEASED; urgency=medium
+
+  * Fix /usr-move file loss. (Closes: #-1)
+
+ -- Helmut Grohne <hel...@subdivi.de>  Tue, 06 Feb 2024 07:33:48 +0100
+
 wireless-tools (30~pre9-16.1~exp1) experimental; urgency=medium
 
   * Non-maintainer upload.
diff --minimal -Nru wireless-tools-30~pre9/debian/clean 
wireless-tools-30~pre9/debian/clean
--- wireless-tools-30~pre9/debian/clean 1970-01-01 01:00:00.000000000 +0100
+++ wireless-tools-30~pre9/debian/clean 2024-02-06 07:33:30.000000000 +0100
@@ -0,0 +1,2 @@
+debian/libiw30t64.preinst
+debian/libiw30t64.postinst
diff --minimal -Nru wireless-tools-30~pre9/debian/control 
wireless-tools-30~pre9/debian/control
--- wireless-tools-30~pre9/debian/control       2024-02-04 21:34:45.000000000 
+0100
+++ wireless-tools-30~pre9/debian/control       2024-02-06 07:31:36.000000000 
+0100
@@ -31,8 +31,7 @@
 
 Package: libiw30t64
 Provides: ${t64:Provides}
-Replaces: libiw30
-Breaks: libiw30 (<< ${source:Version})
+Conflicts: libiw30
 Section: libs
 Architecture: linux-any
 Multi-Arch: same
diff --minimal -Nru wireless-tools-30~pre9/debian/libiw30t64.lintian-overrides 
wireless-tools-30~pre9/debian/libiw30t64.lintian-overrides
--- wireless-tools-30~pre9/debian/libiw30t64.lintian-overrides  2024-02-04 
21:34:45.000000000 +0100
+++ wireless-tools-30~pre9/debian/libiw30t64.lintian-overrides  2024-02-06 
07:33:48.000000000 +0100
@@ -1 +1,5 @@
 libiw30t64: package-name-doesnt-match-sonames libiw30
+# begin-remove-after: released:trixie
+# DEP17 protective diversion
+diversion-for-unknown-file lib/x86_64-linux-gnu/libiw.so.30 [preinst:*]
+# end-remove-after
diff --minimal -Nru wireless-tools-30~pre9/debian/libiw30t64.postinst.in 
wireless-tools-30~pre9/debian/libiw30t64.postinst.in
--- wireless-tools-30~pre9/debian/libiw30t64.postinst.in        1970-01-01 
01:00:00.000000000 +0100
+++ wireless-tools-30~pre9/debian/libiw30t64.postinst.in        2024-02-06 
07:29:28.000000000 +0100
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+# begin-remove-after: released:trixie
+if [ "$1" = configure ]; then
+       dpkg-divert --package libiw30t64 --no-rename --remove --divert 
"/lib/#DEB_HOST_MULTIARCH#/libiw.so.30.usr-is-merged" 
"/lib/#DEB_HOST_MULTIARCH#/libiw.so.30"
+fi
+# end-remove-after
+
+#DEBHELPER#
+
+exit 0
diff --minimal -Nru wireless-tools-30~pre9/debian/libiw30t64.preinst.in 
wireless-tools-30~pre9/debian/libiw30t64.preinst.in
--- wireless-tools-30~pre9/debian/libiw30t64.preinst.in 1970-01-01 
01:00:00.000000000 +0100
+++ wireless-tools-30~pre9/debian/libiw30t64.preinst.in 2024-02-06 
07:29:30.000000000 +0100
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+# begin-remove-after: released:trixie
+if [ "$1" = install ]; then
+       dpkg-divert --package libiw30t64 --no-rename --add --divert 
"/lib/#DEB_HOST_MULTIARCH#/libiw.so.30.usr-is-merged" 
"/lib/#DEB_HOST_MULTIARCH#/libiw.so.30"
+fi
+# end-remove-after
+
+#DEBHELPER#
+
+exit 0
diff --minimal -Nru wireless-tools-30~pre9/debian/rules 
wireless-tools-30~pre9/debian/rules
--- wireless-tools-30~pre9/debian/rules 2023-11-28 01:03:11.000000000 +0100
+++ wireless-tools-30~pre9/debian/rules 2024-02-06 07:33:39.000000000 +0100
@@ -19,3 +19,8 @@
 
 override_dh_installudev:
        dh_installudev --priority=19
+
+debian/%:debian/%.in
+       sed -e 's/#DEB_HOST_MULTIARCH#/$(DEB_HOST_MULTIARCH)/g' $< > $@
+
+execute_before_dh_installdeb:debian/libiw30t64.preinst 
debian/libiw30t64.postinst

Reply via email to