Package: libgphoto2-6 Version: 2.5.31-1 Severity: important Tags: patch User: helm...@debian.org Usertags: dep17p7 X-Debbugs-Cc: helm...@debian.org
Dear Maintainer, libgphoto2-6 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 files) 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 also use the salsa merge request I've opened[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. Note on the patch, esp. the debian/rules part: this tries to be compatible with dh_installudev changing its default install path, and then not break on binNMUs. It's ugly, I know. Many thanks, Chris 1. https://subdivi.de/~helmut/dep17.html 2. https://salsa.debian.org/debian-phototools-team/libgphoto2/-/merge_requests/6
>From 314bf4fae75d2823fc4445a84b53aefdd4290dc1 Mon Sep 17 00:00:00 2001 From: Chris Hofstaedtler <z...@debian.org> Date: Sun, 26 Nov 2023 21:32:25 +0100 Subject: [PATCH] Move udev files from /lib to /usr/lib Including protective diversion against Multi-Arch: same file loss scenario (DEP17 P7 M10). --- debian/changelog | 8 ++++++++ debian/libgphoto2-6.lintian-overrides | 6 ++++++ debian/libgphoto2-6.postinst | 19 +++++++++++++++++++ debian/libgphoto2-6.postrm | 19 +++++++++++++++++++ debian/libgphoto2-6.preinst | 18 ++++++++++++++++++ debian/rules | 8 ++++++-- 6 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 debian/libgphoto2-6.postinst create mode 100644 debian/libgphoto2-6.postrm create mode 100644 debian/libgphoto2-6.preinst diff --git a/debian/changelog b/debian/changelog index b835d5f57..d666f2a66 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +libgphoto2 (2.5.31-1.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 21:27:28 +0100 + libgphoto2 (2.5.31-1) unstable; urgency=medium * [33c8d67] The kFreeBSD port has been removed diff --git a/debian/libgphoto2-6.lintian-overrides b/debian/libgphoto2-6.lintian-overrides index dd6d57455..e1ae1f513 100644 --- a/debian/libgphoto2-6.lintian-overrides +++ b/debian/libgphoto2-6.lintian-overrides @@ -5,3 +5,9 @@ libgphoto2-6: spelling-error-in-binary Optio Option [usr/lib/*/libgphoto2/*/sier # strcpy(id->text, "Lumix Wifi") using immediate values. The letter # "H" is part of the next machine instruction, "ifi\0" follows shortly. libgphoto2-6: spelling-error-in-binary WiH With [usr/lib/*/libgphoto2/*/lumix.so] + +# begin-remove-after: released:forky +# protective diversion for upgrades of files moved from / to /usr +libgphoto2-6: diversion-for-unknown-file lib/udev/hwdb.d/20-libgphoto2-6.hwdb [preinst:*] +libgphoto2-6: diversion-for-unknown-file lib/udev/rules.d/60-libgphoto2-6.rules [preinst:*] +# end-remove-after diff --git a/debian/libgphoto2-6.postinst b/debian/libgphoto2-6.postinst new file mode 100644 index 000000000..d8269e6cb --- /dev/null +++ b/debian/libgphoto2-6.postinst @@ -0,0 +1,19 @@ +#! /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/hwdb.d/20-libgphoto2-6.hwdb.usr-is-merged \ + --remove /lib/udev/hwdb.d/20-libgphoto2-6.hwdb + dpkg-divert --package usr-is-merged --no-rename \ + --divert /lib/udev/rules.d/60-libgphoto2-6.rules.usr-is-merged \ + --remove /lib/udev/rules.d/60-libgphoto2-6.rules +fi +# end-remove-after + +#DEBHELPER# diff --git a/debian/libgphoto2-6.postrm b/debian/libgphoto2-6.postrm new file mode 100644 index 000000000..7584525c3 --- /dev/null +++ b/debian/libgphoto2-6.postrm @@ -0,0 +1,19 @@ +#!/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/hwdb.d/20-libgphoto2-6.hwdb.usr-is-merged \ + --remove /lib/udev/hwdb.d/20-libgphoto2-6.hwdb + dpkg-divert --package usr-is-merged --no-rename \ + --divert /lib/udev/rules.d/60-libgphoto2-6.rules.usr-is-merged \ + --remove /lib/udev/rules.d/60-libgphoto2-6.rules +fi +# end-remove-after + +#DEBHELPER# + diff --git a/debian/libgphoto2-6.preinst b/debian/libgphoto2-6.preinst new file mode 100644 index 000000000..544812f6d --- /dev/null +++ b/debian/libgphoto2-6.preinst @@ -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. +if [ "$1" = "upgrade" ]; then + dpkg-divert --package usr-is-merged --no-rename \ + --divert /lib/udev/hwdb.d/20-libgphoto2-6.hwdb.usr-is-merged \ + --add /lib/udev/hwdb.d/20-libgphoto2-6.hwdb + dpkg-divert --package usr-is-merged --no-rename \ + --divert /lib/udev/rules.d/60-libgphoto2-6.rules.usr-is-merged \ + --add /lib/udev/rules.d/60-libgphoto2-6.rules +fi +# end-remove-after + +#DEBHELPER# + diff --git a/debian/rules b/debian/rules index 6c87bd531..28028ff55 100755 --- a/debian/rules +++ b/debian/rules @@ -37,10 +37,14 @@ override_dh_installudev: # rm debian/libgphoto2-2/lib/udev/check-ptp-camera # Generate the udev file, get it installed, and clean: CAMLIBS=`ls -d debian/libgphoto2-$(major)/usr/lib/$(DEB_HOST_MULTIARCH)/libgphoto2/2*` ./packaging/generic/print-camera-list udev-rules version 201 mode 0664 group plugdev > debian/libgphoto2-$(major).udev - mkdir -p debian/libgphoto2-$(major)/lib/udev/hwdb.d/ - CAMLIBS=`ls -d debian/libgphoto2-$(major)/usr/lib/$(DEB_HOST_MULTIARCH)/libgphoto2/2*` ./packaging/generic/print-camera-list hwdb > debian/libgphoto2-$(major)/lib/udev/hwdb.d/20-libgphoto2-$(major).hwdb + mkdir -p debian/libgphoto2-$(major)/usr/lib/udev/hwdb.d/ + CAMLIBS=`ls -d debian/libgphoto2-$(major)/usr/lib/$(DEB_HOST_MULTIARCH)/libgphoto2/2*` ./packaging/generic/print-camera-list hwdb > debian/libgphoto2-$(major)/usr/lib/udev/hwdb.d/20-libgphoto2-$(major).hwdb dh_installudev rm debian/libgphoto2-$(major).udev + # This will become harmless after dh_installudev changes the default install path. + set -e; if test -d debian/libgphoto2-6/lib/udev/rules.d; then mv debian/libgphoto2-6/lib/udev/rules.d debian/libgphoto2-6/usr/lib/udev; fi + set -e; if test -d debian/libgphoto2-6/lib/udev; then rmdir debian/libgphoto2-6/lib/udev; fi + set -e; if test -d debian/libgphoto2-6/lib; then rmdir debian/libgphoto2-6/lib; fi endif override_dh_fixperms: -- 2.39.2