From 12755bcac0482f7656034c703970ad8e95a48739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Sun, 19 Jul 2026 17:38:57 -0300 Subject: [PATCH] refactor(packaging): share systemctl readiness guard (cherry picked from commit ef6e0373661f2fa1720630533688833ec7a2bda4) --- xCAT-server/share/xcat/scripts/xcatd-init-compat | 16 +++++++++++++++- xCAT-server/xCAT-server.spec | 16 +++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/xCAT-server/share/xcat/scripts/xcatd-init-compat b/xCAT-server/share/xcat/scripts/xcatd-init-compat index 82b6bb6b3..f9beb42d2 100755 --- a/xCAT-server/share/xcat/scripts/xcatd-init-compat +++ b/xCAT-server/share/xcat/scripts/xcatd-init-compat @@ -123,6 +123,11 @@ uses_systemd() return 1 } +can_use_systemctl() +{ + [ -d /run/systemd/system ] && command -v systemctl >/dev/null 2>&1 +} + legacy_state() { for legacy_link in \ @@ -395,6 +400,15 @@ case "${1:-}" in esac uses_systemd "$detection_mode" ;; + can-use-systemctl) + case "${2:-}" in + '') can_use_systemctl ;; + *) + echo "Usage: $0 can-use-systemctl" >&2 + exit 2 + ;; + esac + ;; legacy-state) legacy_state ;; @@ -441,7 +455,7 @@ case "${1:-}" in remove_managed_legacy_init ;; *) - echo "Usage: $0 {uses-systemd [--explicit-target]|legacy-state|legacy-transition-state|systemd-state|register-legacy {default|enabled|disabled}|unregister-legacy|disable-systemd [--links-only]|unregister-all|configure [--replace] [--explicit-target] [--track-managed]|remove|remove-managed}" >&2 + echo "Usage: $0 {uses-systemd [--explicit-target]|can-use-systemctl|legacy-state|legacy-transition-state|systemd-state|register-legacy {default|enabled|disabled}|unregister-legacy|disable-systemd [--links-only]|unregister-all|configure [--replace] [--explicit-target] [--track-managed]|remove|remove-managed}" >&2 exit 2 ;; esac diff --git a/xCAT-server/xCAT-server.spec b/xCAT-server/xCAT-server.spec index 93c2e0e01..be11b486c 100644 --- a/xCAT-server/xCAT-server.spec +++ b/xCAT-server/xCAT-server.spec @@ -499,18 +499,13 @@ ln -sf $RPM_INSTALL_PREFIX0/share/xcat/netboot/sles $RPM_INSTALL_PREFIX0/share/x ln -sf $RPM_INSTALL_PREFIX0/share/xcat/install/centos $RPM_INSTALL_PREFIX0/share/xcat/install/centos-stream ln -sf $RPM_INSTALL_PREFIX0/share/xcat/netboot/centos $RPM_INSTALL_PREFIX0/share/xcat/netboot/centos-stream -xcat_can_use_systemctl() -{ - [ -d /run/systemd/system ] && command -v systemctl >/dev/null 2>&1 -} - xcatd_init_compat=$RPM_INSTALL_PREFIX0/share/xcat/scripts/xcatd-init-compat export XCATROOT="$RPM_INSTALL_PREFIX0" if [ "$1" = "1" ]; then #Only if installing for the first time.. if "$xcatd_init_compat" uses-systemd --explicit-target; then "$xcatd_init_compat" configure --explicit-target || exit 1 - if xcat_can_use_systemctl; then + if "$xcatd_init_compat" can-use-systemctl; then systemctl daemon-reload fi if command -v systemctl >/dev/null 2>&1; then @@ -546,7 +541,7 @@ if [ "$1" -gt "1" ]; then #only on upgrade... # packages own /etc/init.d, so leave that directory intact there. rmdir /etc/init.d 2>/dev/null || true %endif - if xcat_can_use_systemctl; then + if "$xcatd_init_compat" can-use-systemctl; then systemctl daemon-reload fi if [ "$legacy_xcatd_state" = enabled ] && command -v systemctl >/dev/null 2>&1; then @@ -631,17 +626,12 @@ fi %preun %ifos linux -xcat_can_use_systemctl() -{ - [ -d /run/systemd/system ] && command -v systemctl >/dev/null 2>&1 -} - xcatd_init_compat=$RPM_INSTALL_PREFIX0/share/xcat/scripts/xcatd-init-compat export XCATROOT="$RPM_INSTALL_PREFIX0" if [ $1 == 0 ]; then #This means only on -e if [ -f "/proc/cmdline" ]; then # prevent running it during install into chroot image - if xcat_can_use_systemctl; then + if "$xcatd_init_compat" can-use-systemctl; then systemctl stop xcatd.service elif ! "$xcatd_init_compat" uses-systemd --explicit-target && [ -x /etc/init.d/xcatd ]; then /etc/init.d/xcatd stop