2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-07-31 18:19:40 +00:00

fix(packaging): preserve unregistered legacy state

This commit is contained in:
Vinícius Ferrão
2026-07-19 13:35:01 -03:00
parent 9bff441795
commit 7df7da59b3
2 changed files with 44 additions and 6 deletions
@@ -150,6 +150,35 @@ legacy_state()
echo unregistered
}
has_legacy_provenance()
{
[ -e "$legacy_init" ] || [ -L "$legacy_init" ] ||
[ -f "$managed_marker" ]
}
legacy_transition_state()
{
transition_state=$(legacy_state)
if [ "$transition_state" != unregistered ]; then
echo "$transition_state"
return
fi
transition_state=$(systemd_state)
case "$transition_state" in
enabled|masked)
echo "$transition_state"
;;
disabled)
if has_legacy_provenance; then
echo unregistered
else
echo disabled
fi
;;
esac
}
systemd_state()
{
for systemd_mask in \
@@ -365,6 +394,9 @@ case "${1:-}" in
legacy-state)
legacy_state
;;
legacy-transition-state)
legacy_transition_state
;;
systemd-state)
systemd_state
;;
@@ -398,7 +430,7 @@ case "${1:-}" in
remove_managed_legacy_init
;;
*)
echo "Usage: $0 {uses-systemd [--explicit-target]|legacy-state|systemd-state|register-legacy {enabled|disabled}|unregister-legacy|disable-systemd|unregister-all|configure [--replace] [--explicit-target] [--track-managed]|remove|remove-managed}" >&2
echo "Usage: $0 {uses-systemd [--explicit-target]|legacy-state|legacy-transition-state|systemd-state|register-legacy {enabled|disabled}|unregister-legacy|disable-systemd|unregister-all|configure [--replace] [--explicit-target] [--track-managed]|remove|remove-managed}" >&2
exit 2
;;
esac
+11 -5
View File
@@ -552,12 +552,18 @@ if [ "$1" -gt "1" ]; then #only on upgrade...
systemctl enable xcatd.service
fi
else
legacy_xcatd_state=$("$xcatd_init_compat" legacy-state)
if [ "$legacy_xcatd_state" = unregistered ]; then
legacy_xcatd_state=$("$xcatd_init_compat" systemd-state)
fi
legacy_xcatd_state=$("$xcatd_init_compat" legacy-transition-state)
"$xcatd_init_compat" disable-systemd
# systemctl may delegate to systemd-sysv-install and recreate K links for
# a pre-existing SysV script. Restore the captured unregistered or masked
# state before materializing the package's replacement script.
case "$legacy_xcatd_state" in
masked|unregistered)
"$xcatd_init_compat" unregister-legacy
;;
esac
# This path was previously a regular RPM payload file, so upgrades replaced
# it with the current package version rather than retaining an older copy.
"$xcatd_init_compat" configure --replace --explicit-target --track-managed || exit 1
@@ -566,7 +572,7 @@ if [ "$1" -gt "1" ]; then #only on upgrade...
enabled|disabled)
"$xcatd_init_compat" register-legacy "$legacy_xcatd_state"
;;
masked)
masked|unregistered)
;;
esac
fi