From e3c623b47117812965f3610430a66df3bcc9c671 Mon Sep 17 00:00:00 2001 From: James Valleroy Date: Thu, 3 Nov 2022 21:04:54 -0400 Subject: [PATCH] minetest: Handle upgrade from 5.3.0 to 5.6.1 Closes: #2134. Tests: 1. In testing container, install Minetest and change the configuration. 2. Manually downgrade minetest-server and minetest-data to a slightly older version (5.5.0+dfsg+~1.9.0mt4+dfsg-1). 3. In /var/lib/dpkg/status, change the hash for /etc/minetest/minetest.conf. 4. Run "apt update". - minetest-server package is upgraded. - Configuration changes are kept. Signed-off-by: James Valleroy Reviewed-by: Sunil Mohan Adapa --- plinth/modules/minetest/__init__.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index ada63c7eb..e7402ac0f 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -11,10 +11,10 @@ from plinth.daemon import Daemon from plinth.modules.backups.components import BackupRestore from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups -from plinth.package import Package, Packages -from plinth.utils import format_lazy +from plinth.package import Package, Packages, install +from plinth.utils import Version, format_lazy -from . import manifest +from . import manifest, privileged _mods = [ Package('minetest-mod-3d-armor') | Package('minetest-mod-player-3d-armor'), @@ -98,6 +98,22 @@ class MinetestApp(app_module.App): super().setup(old_version) self.enable() + def force_upgrade(self, packages): + """Force upgrade minetest to resolve conffile prompt.""" + if 'minetest-server' not in packages: + return False + + # Allow upgrade from 5.3.0 to 5.6.1 + package = packages['minetest-server'] + if Version(package['new_version']) > Version('5.7~'): + return False + + config = get_configuration() + install(['minetest-server'], force_configuration='new') + privileged.configure(**config) + + return True + def load_augeas(): """Initialize Augeas."""