mirror of
https://github.com/xcat2/xcat-core.git
synced 2026-07-31 18:19:40 +00:00
fix(packaging): preserve unmanaged xcatd init scripts
This commit is contained in:
@@ -17,6 +17,7 @@ esac
|
||||
|
||||
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()
|
||||
{
|
||||
@@ -260,16 +261,52 @@ unregister_all_init()
|
||||
return "$unregister_status"
|
||||
}
|
||||
|
||||
legacy_init_is_managed()
|
||||
{
|
||||
[ -f "$managed_marker" ] &&
|
||||
[ -f "$legacy_init" ] && [ ! -L "$legacy_init" ] &&
|
||||
[ -r "$legacy_template" ] && cmp -s "$legacy_template" "$legacy_init"
|
||||
}
|
||||
|
||||
mark_legacy_init_managed()
|
||||
{
|
||||
marker_dir=${managed_marker%/*}
|
||||
marker_tmp="$managed_marker.tmp.$$"
|
||||
mkdir -p -m 0755 "$marker_dir" || return 1
|
||||
umask 077
|
||||
: > "$marker_tmp" || return 1
|
||||
if ! mv -f "$marker_tmp" "$managed_marker"; then
|
||||
rm -f "$marker_tmp"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
remove_legacy_init()
|
||||
{
|
||||
rm -f "$legacy_init" || return 1
|
||||
rm -f "$managed_marker"
|
||||
}
|
||||
|
||||
remove_managed_legacy_init()
|
||||
{
|
||||
if legacy_init_is_managed; then
|
||||
rm -f "$legacy_init" || return 1
|
||||
fi
|
||||
rm -f "$managed_marker"
|
||||
}
|
||||
|
||||
configure_legacy_init()
|
||||
{
|
||||
replace_existing=0
|
||||
detection_mode=compat
|
||||
track_managed=0
|
||||
for configure_option in "$@"; do
|
||||
case "$configure_option" in
|
||||
--replace) replace_existing=1 ;;
|
||||
--explicit-target) detection_mode=explicit ;;
|
||||
--track-managed) track_managed=1 ;;
|
||||
*)
|
||||
echo "Usage: $0 configure [--replace] [--explicit-target]" >&2
|
||||
echo "Usage: $0 configure [--replace] [--explicit-target] [--track-managed]" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
@@ -277,6 +314,7 @@ configure_legacy_init()
|
||||
|
||||
if uses_systemd "$detection_mode"; then
|
||||
rm -f "$legacy_init" || return 1
|
||||
rm -f "$managed_marker" || return 1
|
||||
return
|
||||
fi
|
||||
|
||||
@@ -288,6 +326,9 @@ configure_legacy_init()
|
||||
|
||||
if [ -e "$legacy_init" ] || [ -L "$legacy_init" ]; then
|
||||
if [ "$replace_existing" -ne 1 ]; then
|
||||
if [ -f "$managed_marker" ] && ! legacy_init_is_managed; then
|
||||
rm -f "$managed_marker" || return 1
|
||||
fi
|
||||
return
|
||||
fi
|
||||
rm -f "$legacy_init" || return 1
|
||||
@@ -301,6 +342,11 @@ configure_legacy_init()
|
||||
mkdir -p "$compat_root/etc/init.d" || return 1
|
||||
cp "$legacy_template" "$legacy_init" || return 1
|
||||
chmod 755 "$legacy_init" || return 1
|
||||
if [ "$track_managed" -eq 1 ]; then
|
||||
mark_legacy_init_managed || return 1
|
||||
else
|
||||
rm -f "$managed_marker" || return 1
|
||||
fi
|
||||
}
|
||||
|
||||
case "${1:-}" in
|
||||
@@ -346,10 +392,13 @@ case "${1:-}" in
|
||||
configure_legacy_init "$@"
|
||||
;;
|
||||
remove)
|
||||
rm -f "$legacy_init"
|
||||
remove_legacy_init
|
||||
;;
|
||||
remove-managed)
|
||||
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]|remove}" >&2
|
||||
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
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -364,17 +364,6 @@ chmod 644 $RPM_BUILD_ROOT/%{prefix}/lib/shfunctions
|
||||
%ifos linux
|
||||
cp etc/init.d/xcatd $RPM_BUILD_ROOT/%{prefix}/share/xcat/scripts/xcatd
|
||||
chmod 755 $RPM_BUILD_ROOT/%{prefix}/share/xcat/scripts/xcatd
|
||||
# Keep ownership continuity only on legacy RPM targets where the script is
|
||||
# materialized at runtime. Modern RPM versions can create /etc/init.d from a
|
||||
# ghost entry alone, which breaks later chkconfig/initscripts transactions.
|
||||
%if 0%{?rhel} && 0%{?rhel} < 7
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/init.d
|
||||
touch $RPM_BUILD_ROOT/etc/init.d/xcatd
|
||||
%endif
|
||||
%if 0%{?suse_version} && 0%{?suse_version} < 1200
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/init.d
|
||||
touch $RPM_BUILD_ROOT/etc/init.d/xcatd
|
||||
%endif
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system
|
||||
cp etc/init.d/xcatd.service $RPM_BUILD_ROOT/usr/lib/systemd/system
|
||||
%else
|
||||
@@ -448,12 +437,8 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%if %fsm
|
||||
%else
|
||||
%ifos linux
|
||||
%if 0%{?rhel} && 0%{?rhel} < 7
|
||||
%ghost %attr(0755,root,root) /etc/init.d/xcatd
|
||||
%endif
|
||||
%if 0%{?suse_version} && 0%{?suse_version} < 1200
|
||||
%ghost %attr(0755,root,root) /etc/init.d/xcatd
|
||||
%endif
|
||||
# The compatibility helper owns runtime cleanup. Listing this path as %ghost
|
||||
# would let RPM unlink preserved administrator content after %preun.
|
||||
/usr/lib/systemd/system/xcatd.service
|
||||
%else
|
||||
/etc/init.d/xcatd
|
||||
@@ -532,7 +517,7 @@ if [ "$1" = "1" ]; then #Only if installing for the first time..
|
||||
systemctl enable xcatd.service
|
||||
fi
|
||||
else
|
||||
"$xcatd_init_compat" configure --explicit-target || exit 1
|
||||
"$xcatd_init_compat" configure --explicit-target --track-managed || exit 1
|
||||
legacy_xcatd_state=$("$xcatd_init_compat" legacy-state)
|
||||
case "$legacy_xcatd_state" in
|
||||
enabled|disabled)
|
||||
@@ -575,7 +560,7 @@ if [ "$1" -gt "1" ]; then #only on upgrade...
|
||||
|
||||
# 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 || exit 1
|
||||
"$xcatd_init_compat" configure --replace --explicit-target --track-managed || exit 1
|
||||
|
||||
case "$legacy_xcatd_state" in
|
||||
enabled|disabled)
|
||||
@@ -629,7 +614,7 @@ if [ -x "$xcatd_init_compat" ] &&
|
||||
! XCATROOT="$RPM_INSTALL_PREFIX0" "$xcatd_init_compat" uses-systemd --explicit-target &&
|
||||
[ ! -e /etc/init.d/xcatd ] && [ ! -L /etc/init.d/xcatd ]; then
|
||||
XCATROOT="$RPM_INSTALL_PREFIX0" \
|
||||
"$xcatd_init_compat" configure --explicit-target || exit 1
|
||||
"$xcatd_init_compat" configure --explicit-target --track-managed || exit 1
|
||||
fi
|
||||
%endif
|
||||
|
||||
@@ -652,8 +637,10 @@ if [ $1 == 0 ]; then #This means only on -e
|
||||
fi
|
||||
fi
|
||||
|
||||
"$xcatd_init_compat" unregister-all
|
||||
"$xcatd_init_compat" remove
|
||||
# Preserve RPM's existing recoverable erase policy if local service state
|
||||
# cannot be cleaned completely; no package payload remains afterward.
|
||||
"$xcatd_init_compat" unregister-all || true
|
||||
"$xcatd_init_compat" remove-managed || true
|
||||
rm -f /usr/sbin/xcatd #remove the symbolic
|
||||
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user