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
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 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 0..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 0..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