Package: libfuse2t64
Version: 2.9.9-8.1
Severity: important
Tags: patch
User: [email protected]
Usertags: dep17m2 dep17p1
Control: affects -1 + libfuse2

Hi,

fuse2 is involved in the /usr-move (DEP17) in multiple ways. In this bug
report, I am staying away from binaries to avoid interference with the
statoverride matter #1060229. That still has to be dealt with
separately. Here, it is about moving the fuse library having become
non-trivial due to the time64 transition. Simply moving it would cause a
DEP17 P1 problem incurring file loss on upgrade. I'm attaching a patch
implementing the library move in a mitigated (P8 protective diversions)
way.

I've tested this patch with piuparts and manually tried triggering the
problem:
mmdebstrap trixie /dev/null --variant apt --include libfuse-dev 
--customize-hook='echo "deb http://deb.debian.org/debian sid main" > 
"$1/etc/apt/sources.list.d/sid.list"' --chrooted-customize-hook="apt-get 
update" --customize-hook="upload libfuse2t64_2.9.9-8.2_amd64.deb /l.deb" 
--customize-hook="upload libfuse-dev_2.9.9-8.2_amd64.deb /d.deb" 
--chrooted-customize-hook="dpkg --auto-deconfigure --unpack /l.deb /d.deb && 
apt-get -y install /l.deb /d.deb && dpkg --verify"

Note that none of this patch, #1060229 and the time64 rename is
appropriate for bookworm-backports or earlier. All of them must be
reverted in case of performing a backport. Please contact me if a need
for backporting arises.

I also appreciate feedback to Chris' questions on #1060229 as that
enables us to produce the necessary patches.

Helmut
diff -Nru fuse-2.9.9/debian/changelog fuse-2.9.9/debian/changelog
--- fuse-2.9.9/debian/changelog 2024-02-29 23:24:20.000000000 +0100
+++ fuse-2.9.9/debian/changelog 2024-03-27 07:29:06.000000000 +0100
@@ -1,3 +1,11 @@
+fuse (2.9.9-8.2) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Move fuse library to /usr and add DEP17 P1 M8 protective diversions.
+    (Closes: #-1)
+
+ -- Helmut Grohne <[email protected]>  Wed, 27 Mar 2024 07:29:06 +0100
+
 fuse (2.9.9-8.1) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru fuse-2.9.9/debian/control fuse-2.9.9/debian/control
--- fuse-2.9.9/debian/control   2024-02-29 23:24:11.000000000 +0100
+++ fuse-2.9.9/debian/control   2024-03-27 07:29:06.000000000 +0100
@@ -29,7 +29,6 @@
 Package: libfuse2t64
 Provides: ${t64:Provides}
 Replaces: libfuse2
-Breaks: libfuse2 (<< ${source:Version})
 Section: libs
 Architecture: linux-any kfreebsd-any
 Multi-Arch: same
@@ -37,7 +36,7 @@
 Depends:
  ${misc:Depends},
  ${shlibs:Depends},
-Conflicts: fuse (<< ${binary:Version})
+Conflicts: fuse (<< ${binary:Version}), libfuse2 (<< ${source:Version})
 Suggests: fuse
 Description: Filesystem in Userspace (library)
  Filesystem in Userspace (FUSE) is a simple interface for userspace programs to
diff -Nru fuse-2.9.9/debian/libfuse2-udeb.install 
fuse-2.9.9/debian/libfuse2-udeb.install
--- fuse-2.9.9/debian/libfuse2-udeb.install     2014-06-20 08:23:50.000000000 
+0200
+++ fuse-2.9.9/debian/libfuse2-udeb.install     2024-03-27 07:21:56.000000000 
+0100
@@ -1 +1 @@
-usr/lib/*/*.so.*       lib
+usr/lib/*/*.so.*
diff -Nru fuse-2.9.9/debian/libfuse2t64.install 
fuse-2.9.9/debian/libfuse2t64.install
--- fuse-2.9.9/debian/libfuse2t64.install       2024-02-29 23:24:11.000000000 
+0100
+++ fuse-2.9.9/debian/libfuse2t64.install       2024-03-27 07:20:59.000000000 
+0100
@@ -1 +1 @@
-usr/lib/*/*.so.*       lib
+usr/lib/*/*.so.*
diff -Nru fuse-2.9.9/debian/libfuse2t64.postinst 
fuse-2.9.9/debian/libfuse2t64.postinst
--- fuse-2.9.9/debian/libfuse2t64.postinst      1970-01-01 01:00:00.000000000 
+0100
+++ fuse-2.9.9/debian/libfuse2t64.postinst      2024-03-27 07:28:59.000000000 
+0100
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+# begin-remove-after: released:trixie
+if test "$1" = configure; then
+       # Remove DEP17 P1 M8 protective diversions
+       for f in libfuse.so.2 libfuse.so.2.9.9 libulockmgr.so.1 
libulockmgr.so.1.0.1; do
+               dpkg-divert --no-rename --package libfuse2t64 --divert 
"/lib/#DEB_HOST_MULTIARCH#/$f.usr-is-merged" --remove 
"/lib/#DEB_HOST_MULTIARCH#/$f"
+       done
+fi
+# end-remove-after
+
+#DEBHELPER#
diff -Nru fuse-2.9.9/debian/libfuse2t64.preinst 
fuse-2.9.9/debian/libfuse2t64.preinst
--- fuse-2.9.9/debian/libfuse2t64.preinst       1970-01-01 01:00:00.000000000 
+0100
+++ fuse-2.9.9/debian/libfuse2t64.preinst       2024-03-27 07:28:02.000000000 
+0100
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+
+# begin-remove-after: released:trixie
+if test "$1" = upgrade || test "$1" = install; then
+       # Add DEP17 P1 M8 protective diversions
+       for f in libfuse.so.2 libfuse.so.2.9.9 libulockmgr.so.1 
libulockmgr.so.1.0.1; do
+               dpkg-divert --no-rename --package libfuse2t64 --divert 
"/lib/#DEB_HOST_MULTIARCH#/$f.usr-is-merged" --add 
"/lib/#DEB_HOST_MULTIARCH#/$f"
+       done
+fi
+# end-remove-after
+
+#DEBHELPER#
diff -Nru fuse-2.9.9/debian/rules fuse-2.9.9/debian/rules
--- fuse-2.9.9/debian/rules     2024-02-29 23:24:11.000000000 +0100
+++ fuse-2.9.9/debian/rules     2024-03-27 07:23:34.000000000 +0100
@@ -43,29 +43,12 @@
 
        dh_install
 
-       # adjusting /lib for multiarch
-       mkdir -p debian/libfuse2t64/lib/$(DEB_HOST_MULTIARCH)
-       mv debian/libfuse2t64/lib/*.so* 
debian/libfuse2t64/lib/$(DEB_HOST_MULTIARCH)
-ifeq ($(with_udeb),yes)
-       mkdir -p debian/libfuse2-udeb/lib/$(DEB_HOST_MULTIARCH)
-       mv debian/libfuse2-udeb/lib/*.so* 
debian/libfuse2-udeb/lib/$(DEB_HOST_MULTIARCH)
-endif
-
        # adding initramfs-tools integration
        install -D -m 0755 debian/local/fuse.hook 
debian/fuse/usr/share/initramfs-tools/hooks/fuse
 
        # adding kmod integration
 #      install -D -m 0644 debian/local/fuse.kmod 
debian/fuse/lib/modules-load.d/fuse.conf
 
-override_dh_link:
-       # correcting symlink targets
-       for LIB in debian/tmp/usr/lib/*/*.so; \
-       do \
-               dh_link -plibfuse-dev lib/$(DEB_HOST_MULTIARCH)/$$(basename 
$$(readlink $${LIB})) usr/lib/$(DEB_HOST_MULTIARCH)/$$(basename $${LIB}); \
-       done
-
-       dh_link --remaining-packages
-
 .PHONY: override_dh_autoreconf override_dh_auto_configure \
        override_dh_compress override_dh_fixperms \
        override_dh_install override_dh_link

Reply via email to