mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-10-21 15:18:19 +00:00
refactor(init): share target detection and pending-state cleanup
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
This commit is contained in:
@@ -8,104 +8,12 @@ set -e
|
||||
xcatd_state_dir=/var/lib/xcat/xcatd-init-state
|
||||
xcatd_context_file=$xcatd_state_dir/context
|
||||
|
||||
clear_xcatd_pending_state()
|
||||
{
|
||||
rm -f "$xcatd_state_dir/pending-xcatd" \
|
||||
"$xcatd_state_dir/pending-deleted" \
|
||||
"$xcatd_state_dir/pending-enabled" \
|
||||
"$xcatd_state_dir/pending-xcatd.tmp."*
|
||||
}
|
||||
|
||||
if [ -L "$xcatd_state_dir" ] || \
|
||||
{ [ -e "$xcatd_state_dir" ] && [ ! -d "$xcatd_state_dir" ]; }; then
|
||||
echo "Invalid xcatd init state directory: $xcatd_state_dir" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
xcat_systemd_os_release_status()
|
||||
{
|
||||
[ -r /etc/os-release ] || return 2
|
||||
|
||||
os_id=
|
||||
os_version=
|
||||
while IFS='=' read -r key value; do
|
||||
value=${value#\"}
|
||||
value=${value%\"}
|
||||
value=${value#\'}
|
||||
value=${value%\'}
|
||||
case "$key" in
|
||||
ID) os_id=$value ;;
|
||||
VERSION_ID) os_version=$value ;;
|
||||
esac
|
||||
done < /etc/os-release
|
||||
|
||||
if [ "$os_id" = "debian" ] && [ -z "$os_version" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
os_major=${os_version%%.*}
|
||||
case "$os_major" in
|
||||
''|*[!0-9]*) return 2 ;;
|
||||
esac
|
||||
|
||||
case "$os_id" in
|
||||
rhel|centos|rocky|almalinux|ol|scientific)
|
||||
[ "$os_major" -ge 7 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
fedora|ubuntu)
|
||||
[ "$os_major" -ge 15 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
debian)
|
||||
[ "$os_major" -ge 8 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
sles|sled|opensuse|opensuse-leap|opensuse-tumbleweed)
|
||||
[ "$os_major" -ge 12 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
|
||||
}
|
||||
|
||||
xcat_target_uses_systemd()
|
||||
{
|
||||
if [ -d /run/systemd/system ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -L /sbin/init ]; then
|
||||
init_target=$(readlink /sbin/init 2>/dev/null || true)
|
||||
case "$init_target" in
|
||||
*systemd*) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -e /sbin/init ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if xcat_systemd_os_release_status; then
|
||||
return 0
|
||||
else
|
||||
os_release_status=$?
|
||||
if [ "$os_release_status" -eq 1 ]; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -x /usr/lib/systemd/systemd ] || [ -x /lib/systemd/systemd ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
if xcat_target_uses_systemd && \
|
||||
command -v dpkg-maintscript-helper >/dev/null 2>&1 && \
|
||||
dpkg-maintscript-helper supports rm_conffile; then
|
||||
|
||||
@@ -5,90 +5,6 @@
|
||||
|
||||
set -e
|
||||
|
||||
xcat_systemd_os_release_status()
|
||||
{
|
||||
[ -r /etc/os-release ] || return 2
|
||||
|
||||
os_id=
|
||||
os_version=
|
||||
while IFS='=' read -r key value; do
|
||||
value=${value#\"}
|
||||
value=${value%\"}
|
||||
value=${value#\'}
|
||||
value=${value%\'}
|
||||
case "$key" in
|
||||
ID) os_id=$value ;;
|
||||
VERSION_ID) os_version=$value ;;
|
||||
esac
|
||||
done < /etc/os-release
|
||||
|
||||
if [ "$os_id" = "debian" ] && [ -z "$os_version" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
os_major=${os_version%%.*}
|
||||
case "$os_major" in
|
||||
''|*[!0-9]*) return 2 ;;
|
||||
esac
|
||||
|
||||
case "$os_id" in
|
||||
rhel|centos|rocky|almalinux|ol|scientific)
|
||||
[ "$os_major" -ge 7 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
fedora|ubuntu)
|
||||
[ "$os_major" -ge 15 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
debian)
|
||||
[ "$os_major" -ge 8 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
sles|sled|opensuse|opensuse-leap|opensuse-tumbleweed)
|
||||
[ "$os_major" -ge 12 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
|
||||
}
|
||||
|
||||
xcat_target_uses_systemd()
|
||||
{
|
||||
if [ -d /run/systemd/system ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -L /sbin/init ]; then
|
||||
init_target=$(readlink /sbin/init 2>/dev/null || true)
|
||||
case "$init_target" in
|
||||
*systemd*) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -e /sbin/init ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if xcat_systemd_os_release_status; then
|
||||
return 0
|
||||
else
|
||||
os_release_status=$?
|
||||
if [ "$os_release_status" -eq 1 ]; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -x /usr/lib/systemd/systemd ] || [ -x /lib/systemd/systemd ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
xcatd_init_state=/opt/xcat/share/xcat/scripts/xcatd-init-state
|
||||
xcatd_init_compat=/opt/xcat/share/xcat/scripts/xcatd-init-compat
|
||||
xcatd_legacy_init=/etc/init.d/xcatd
|
||||
@@ -108,14 +24,6 @@ write_xcatd_context()
|
||||
fi
|
||||
)
|
||||
|
||||
clear_xcatd_pending_state()
|
||||
{
|
||||
rm -f "$xcatd_state_dir/pending-xcatd" \
|
||||
"$xcatd_state_dir/pending-deleted" \
|
||||
"$xcatd_state_dir/pending-enabled" \
|
||||
"$xcatd_state_dir/pending-xcatd.tmp."*
|
||||
}
|
||||
|
||||
xcatd_legacy_enable_state()
|
||||
{
|
||||
if [ -x "$xcatd_init_compat" ]; then
|
||||
|
||||
@@ -88,6 +88,15 @@ binary-arch:
|
||||
dh_perl
|
||||
dh_makeshlibs
|
||||
dh_installdeb
|
||||
# These scripts can run before unpacking or after the helpers are removed.
|
||||
set -e; for script in preinst postrm; do \
|
||||
scriptfile=$(buildroot)/DEBIAN/$$script; \
|
||||
{ head -n 1 "$$scriptfile"; \
|
||||
cat share/xcat/scripts/xcatd-init-compat-functions; \
|
||||
tail -n +2 "$$scriptfile"; } > "$$scriptfile.tmp"; \
|
||||
chmod 755 "$$scriptfile.tmp"; \
|
||||
mv "$$scriptfile.tmp" "$$scriptfile"; \
|
||||
done
|
||||
dh_shlibdeps
|
||||
dh_gencontrol -- -Vperl:Depends=perl
|
||||
dh_md5sums
|
||||
|
||||
@@ -19,57 +19,7 @@ legacy_init="$compat_root/etc/init.d/xcatd"
|
||||
legacy_template="$compat_root$xcat_root/share/xcat/scripts/xcatd"
|
||||
managed_marker="$compat_root/var/lib/xcat/xcatd-init-compat-managed"
|
||||
|
||||
systemd_os_release_status()
|
||||
{
|
||||
os_release="$compat_root/etc/os-release"
|
||||
[ -r "$os_release" ] || return 2
|
||||
|
||||
os_id=
|
||||
os_version=
|
||||
while IFS='=' read -r key value; do
|
||||
value=${value#\"}
|
||||
value=${value%\"}
|
||||
value=${value#\'}
|
||||
value=${value%\'}
|
||||
case "$key" in
|
||||
ID) os_id=$value ;;
|
||||
VERSION_ID) os_version=$value ;;
|
||||
esac
|
||||
done < "$os_release"
|
||||
|
||||
# Debian testing/sid intentionally omits VERSION_ID.
|
||||
if [ "$os_id" = "debian" ] && [ -z "$os_version" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
os_major=${os_version%%.*}
|
||||
case "$os_major" in
|
||||
''|*[!0-9]*) return 2 ;;
|
||||
esac
|
||||
|
||||
case "$os_id" in
|
||||
rhel|centos|rocky|almalinux|ol|scientific)
|
||||
[ "$os_major" -ge 7 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
fedora|ubuntu)
|
||||
[ "$os_major" -ge 15 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
debian)
|
||||
[ "$os_major" -ge 8 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
sles|sled|opensuse|opensuse-leap|opensuse-tumbleweed)
|
||||
[ "$os_major" -ge 12 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
|
||||
}
|
||||
. "$(dirname "$0")/xcatd-init-compat-functions"
|
||||
|
||||
uses_systemd()
|
||||
{
|
||||
@@ -92,7 +42,7 @@ uses_systemd()
|
||||
return 1
|
||||
fi
|
||||
|
||||
if systemd_os_release_status; then
|
||||
if xcat_systemd_os_release_status "$compat_root"; then
|
||||
return 0
|
||||
else
|
||||
os_release_status=$?
|
||||
@@ -109,7 +59,7 @@ uses_systemd()
|
||||
return 0
|
||||
fi
|
||||
|
||||
if systemd_os_release_status; then
|
||||
if xcat_systemd_os_release_status "$compat_root"; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
xcat_systemd_os_release_status()
|
||||
{
|
||||
os_release="${1-}/etc/os-release"
|
||||
[ -r "$os_release" ] || return 2
|
||||
|
||||
os_id=
|
||||
os_version=
|
||||
while IFS='=' read -r key value; do
|
||||
value=${value#\"}
|
||||
value=${value%\"}
|
||||
value=${value#\'}
|
||||
value=${value%\'}
|
||||
case "$key" in
|
||||
ID) os_id=$value ;;
|
||||
VERSION_ID) os_version=$value ;;
|
||||
esac
|
||||
done < "$os_release"
|
||||
|
||||
if [ "$os_id" = "debian" ] && [ -z "$os_version" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
os_major=${os_version%%.*}
|
||||
case "$os_major" in
|
||||
''|*[!0-9]*) return 2 ;;
|
||||
esac
|
||||
|
||||
case "$os_id" in
|
||||
rhel|centos|rocky|almalinux|ol|scientific)
|
||||
[ "$os_major" -ge 7 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
fedora|ubuntu)
|
||||
[ "$os_major" -ge 15 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
debian)
|
||||
[ "$os_major" -ge 8 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
sles|sled|opensuse|opensuse-leap|opensuse-tumbleweed)
|
||||
[ "$os_major" -ge 12 ] && return 0
|
||||
return 1
|
||||
;;
|
||||
*)
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
|
||||
}
|
||||
|
||||
xcat_target_uses_systemd()
|
||||
{
|
||||
if [ -d /run/systemd/system ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ -L /sbin/init ]; then
|
||||
init_target=$(readlink /sbin/init 2>/dev/null || true)
|
||||
case "$init_target" in
|
||||
*systemd*) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ -e /sbin/init ]; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
if xcat_systemd_os_release_status; then
|
||||
return 0
|
||||
else
|
||||
os_release_status=$?
|
||||
if [ "$os_release_status" -eq 1 ]; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -x /usr/lib/systemd/systemd ] || [ -x /lib/systemd/systemd ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
clear_xcatd_pending_state()
|
||||
{
|
||||
rm -f "$xcatd_state_dir/pending-xcatd" \
|
||||
"$xcatd_state_dir/pending-deleted" \
|
||||
"$xcatd_state_dir/pending-enabled" \
|
||||
"$xcatd_state_dir/pending-xcatd.tmp."*
|
||||
}
|
||||
Reference in New Issue
Block a user