Package: luanti-server
Version: 5.10.0+dfsg-2
Severity: serious
Tags: patch
User: helm...@debian.org
Usertags: dep17p1
Control: affects -1 + minetest-server

Hi Tobi,

Your luanti-server upload introduced a /usr-move regression. The systemd
units were formerly part of minetest-server and are now in
luanti-server. At the same time, they moved from /lib to /usr/lib. This
is a classical DEP17 P1 situation. I recommend upgrading the
Breaks+Replaces relation to Conflicts as well as introducing brief
protective diversions. You'll find them in the attached patch.
Unfortunately, I was not able to test them as luanti-server has an
unsatisfiable dependency. Please verify that no diversions exist once
luanti-server has been successfully installed. They should only exist
from preinst to postinst and not beyond.

Helmut
diff --minimal -Nru luanti-5.10.0+dfsg/debian/changelog 
luanti-5.10.0+dfsg/debian/changelog
--- luanti-5.10.0+dfsg/debian/changelog 2025-02-13 17:20:14.000000000 +0100
+++ luanti-5.10.0+dfsg/debian/changelog 2025-02-14 13:15:10.000000000 +0100
@@ -1,3 +1,11 @@
+luanti (5.10.0+dfsg-2.1) UNRELEASED; urgency=medium
+
+  * Non-maintainer upload.
+  * Mitigate file loss due to concurrent package rename and aliasing change
+    (DEP17 P1 M8, Closes: #-1).
+
+ -- Helmut Grohne <hel...@subdivi.de>  Fri, 14 Feb 2025 13:15:10 +0100
+
 luanti (5.10.0+dfsg-2) unstable; urgency=medium
 
   * Team upload.
diff --minimal -Nru luanti-5.10.0+dfsg/debian/control 
luanti-5.10.0+dfsg/debian/control
--- luanti-5.10.0+dfsg/debian/control   2025-02-13 17:19:05.000000000 +0100
+++ luanti-5.10.0+dfsg/debian/control   2025-02-14 12:41:26.000000000 +0100
@@ -84,8 +84,7 @@
 
 Package: luanti-server
 Architecture: any
-Replaces: minetest-server (<< 5.10.0+dfsg-1~)
-Breaks: minetest-server (<< 5.10.0+dfsg-1~)
+Conflicts: minetest-server (<< 5.10.0+dfsg-1~)
 Depends:
  luanti-data (= ${source:Version}),
  sse2-support [i386],
diff --minimal -Nru luanti-5.10.0+dfsg/debian/luanti-server.lintian-overrides 
luanti-5.10.0+dfsg/debian/luanti-server.lintian-overrides
--- luanti-5.10.0+dfsg/debian/luanti-server.lintian-overrides   1970-01-01 
01:00:00.000000000 +0100
+++ luanti-5.10.0+dfsg/debian/luanti-server.lintian-overrides   2025-02-14 
13:15:10.000000000 +0100
@@ -0,0 +1,7 @@
+# begin-remove-after: released:trixie
+# DEP17 P1 M8: Protective diversion for moved file
+luanti-server: diversion-for-unknown-file 
lib/systemd/system/minetest-server.service [preinst:*]
+luanti-server: diversion-for-unknown-file 
lib/systemd/system/minetest-server@.service [preinst:*]
+luanti-server: systemd-diversion lib/systemd/system/minetest-server.service 
[preinst:*]
+luanti-server: systemd-diversion lib/systemd/system/minetest-server@.service 
[preinst:*]
+# end-remove-after: released:trixie
diff --minimal -Nru luanti-5.10.0+dfsg/debian/luanti-server.postinst 
luanti-5.10.0+dfsg/debian/luanti-server.postinst
--- luanti-5.10.0+dfsg/debian/luanti-server.postinst    2025-02-13 
17:19:05.000000000 +0100
+++ luanti-5.10.0+dfsg/debian/luanti-server.postinst    2025-02-14 
13:10:59.000000000 +0100
@@ -22,6 +22,14 @@
       mv $OLD_SERVER_LOG_PATH /var/log/luanti/default/server.log
     fi
   fi
+
+  # begin-remove-after: released:trixie
+  # DEP17 P1 M8: Protective diversion for moved file
+  if dpkg --compare-versions "$MOST_RECENTLY_CONFIGURED_VERSION" lt 
5.10.0+dfgs-2.1~; then
+    dpkg-divert --remove --no-rename --divert 
/lib/systemd/system/minetest-server.service.usr-is-merged 
/lib/systemd/system/minetest-server.service
+    dpkg-divert --remove --no-rename --divert 
/lib/systemd/system/minetest-server.service@.usr-is-merged 
/lib/systemd/system/minetest-server@.service
+  fi
+  # end-remove-after
 fi
 
 #DEBHELPER#
diff --minimal -Nru luanti-5.10.0+dfsg/debian/luanti-server.postrm 
luanti-5.10.0+dfsg/debian/luanti-server.postrm
--- luanti-5.10.0+dfsg/debian/luanti-server.postrm      2025-02-13 
17:19:05.000000000 +0100
+++ luanti-5.10.0+dfsg/debian/luanti-server.postrm      2025-02-14 
13:13:02.000000000 +0100
@@ -11,4 +11,12 @@
     rm --recursive --force /var/log/minetest
 fi
 
+# begin-remove-after: released:trixie
+# DEP17 P1 M8: Protective diversion for moved file
+if [ "$1" = "abort-upgrade" ] && dpkg --compare-versions "$2" lt 
5.10.0+dfgs-2.1~; then
+  dpkg-divert --remove --no-rename --divert 
/lib/systemd/system/minetest-server.service.usr-is-merged 
/lib/systemd/system/minetest-server.service
+  dpkg-divert --remove --no-rename --divert 
/lib/systemd/system/minetest-server.service@.usr-is-merged 
/lib/systemd/system/minetest-server@.service
+fi
+
+# end-remove-after
 #DEBHELPER#
diff --minimal -Nru luanti-5.10.0+dfsg/debian/luanti-server.preinst 
luanti-5.10.0+dfsg/debian/luanti-server.preinst
--- luanti-5.10.0+dfsg/debian/luanti-server.preinst     1970-01-01 
01:00:00.000000000 +0100
+++ luanti-5.10.0+dfsg/debian/luanti-server.preinst     2025-02-14 
13:15:04.000000000 +0100
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+set -e
+
+# begin-remove-after: released:trixie
+# DEP17 P1 M8: Protective diversion for moved file
+if [ "$1" = install ] || { [ "$1" = upgrade ] && dpkg --compare-versions "$2" 
lt 5.10.0+dfgs-2.1~; } ; then
+  dpkg-divert --add --no-rename --divert 
/lib/systemd/system/minetest-server.service.usr-is-merged 
/lib/systemd/system/minetest-server.service
+  dpkg-divert --add --no-rename --divert 
/lib/systemd/system/minetest-server.service@.usr-is-merged 
/lib/systemd/system/minetest-server@.service
+fi
+
+# end-remove-after
+#DEBHELPER#

Reply via email to