Added systemd unit file.

Resolves: #820125
This commit is contained in:
Jan Safranek 2012-05-09 14:19:03 +02:00
parent c90df366b7
commit fc0f23c58f
4 changed files with 71 additions and 110 deletions

View File

@ -4,20 +4,22 @@
Summary: IPMI (Intelligent Platform Management Interface) library and tools Summary: IPMI (Intelligent Platform Management Interface) library and tools
Name: OpenIPMI Name: OpenIPMI
Version: 2.0.18 Version: 2.0.18
Release: 13%{?dist} Release: 14%{?dist}
License: LGPLv2+ and GPLv2+ or BSD License: LGPLv2+ and GPLv2+ or BSD
Group: System Environment/Base Group: System Environment/Base
URL: http://sourceforge.net/projects/openipmi/ URL: http://sourceforge.net/projects/openipmi/
Source: http://downloads.sourceforge.net/openipmi/%{name}-%{version}.tar.gz Source: http://downloads.sourceforge.net/openipmi/%{name}-%{version}.tar.gz
Source1: openipmi.sysconf Source1: openipmi.sysconf
Source2: openipmi.initscript Source2: openipmi-helper
Source3: README.initscript Source3: ipmi.service
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gdbm-devel swig glib2-devel net-snmp-devel ncurses-devel BuildRequires: gdbm-devel swig glib2-devel net-snmp-devel ncurses-devel
BuildRequires: openssl-devel python-devel perl-devel tcl-devel tkinter BuildRequires: openssl-devel python-devel perl-devel tcl-devel tkinter
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
Requires(post): chkconfig Requires(post): systemd-units
Requires(preun): chkconfig Requires(preun): systemd-units
Requires(postun): systemd-units
Requires(post): systemd-sysv
Patch1: OpenIPMI-2.0.18-pthread-pkgconfig.patch Patch1: OpenIPMI-2.0.18-pthread-pkgconfig.patch
@ -85,39 +87,58 @@ rm -rf $RPM_BUILD_ROOT/%{_libdir}/*.la
install -d ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig install -d ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig
install -m 644 %SOURCE1 ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/ipmi install -m 644 %SOURCE1 ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/ipmi
install -d ${RPM_BUILD_ROOT}%{_initrddir} install -d ${RPM_BUILD_ROOT}%{_libexecdir}
install -m 755 %SOURCE2 ${RPM_BUILD_ROOT}%{_initrddir}/ipmi install -m 755 %SOURCE2 ${RPM_BUILD_ROOT}%{_libexecdir}/openipmi-helper
install -d ${RPM_BUILD_ROOT}%{_unitdir}
install -m 644 %SOURCE3 . install -m 644 %SOURCE3 ${RPM_BUILD_ROOT}%{_unitdir}/ipmi.service
rm ${RPM_BUILD_ROOT}/%{_mandir}/man1/openipmigui.1 rm ${RPM_BUILD_ROOT}/%{_mandir}/man1/openipmigui.1
%post %post
/sbin/chkconfig --add ipmi if [ $1 -eq 1 ] ; then
# Initial installation
/bin/systemctl daemon-reload >/dev/null 2>&1 || :
fi
%preun %preun
if [ $1 = 0 ]; then if [ $1 -eq 0 ] ; then
service ipmi stop >/dev/null 2>&1 # Package removal, not upgrade
/sbin/chkconfig --del ipmi /bin/systemctl --no-reload disable ipmi.service > /dev/null 2>&1 || :
/bin/systemctl stop ipmi.service > /dev/null 2>&1 || :
fi fi
%postun %postun
if [ "$1" -ge "1" ]; then /bin/systemctl daemon-reload >/dev/null 2>&1 || :
service ipmi condrestart >/dev/null 2>&1 || : if [ $1 -ge 1 ] ; then
# Package upgrade, not uninstall
/bin/systemctl try-restart ipmi.service >/dev/null 2>&1 || :
fi fi
%post libs -p /sbin/ldconfig %post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig %postun libs -p /sbin/ldconfig
### A sysv => systemd migration contains all of the same scriptlets as a
### systemd package. These are additional scriptlets
%triggerun -- OpenIPMI < 2.0.18-14
# Save the current service runlevel info
# User must manually run systemd-sysv-convert --apply httpd
# to migrate them to systemd targets
/usr/bin/systemd-sysv-convert --save ipmi >/dev/null 2>&1 ||:
/bin/systemctl --no-reload enable ipmi.service >/dev/null 2>&1 ||:
# Run these because the SysV package being removed won't do them
/sbin/chkconfig --del ipmi >/dev/null 2>&1 || :
/bin/systemctl try-restart ipmi.service >/dev/null 2>&1 || :
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
%files %files
%defattr(-,root,root) %defattr(-,root,root)
%doc CONFIGURING_FOR_LAN COPYING COPYING.BSD COPYING.LIB FAQ README README.Force README.MotorolaMXP README.initscript %doc CONFIGURING_FOR_LAN COPYING COPYING.BSD COPYING.LIB FAQ README README.Force README.MotorolaMXP
%config(noreplace) %{_sysconfdir}/sysconfig/ipmi %config(noreplace) %{_sysconfdir}/sysconfig/ipmi
%{_initrddir}/ipmi %{_libexecdir}/openipmi-helper
%{_bindir}/ipmicmd %{_bindir}/ipmicmd
%{_bindir}/ipmilan %{_bindir}/ipmilan
%{_bindir}/ipmish %{_bindir}/ipmish
@ -126,6 +147,7 @@ rm -rf $RPM_BUILD_ROOT
%{_bindir}/openipmish %{_bindir}/openipmish
%{_bindir}/rmcp_ping %{_bindir}/rmcp_ping
%{_bindir}/solterm %{_bindir}/solterm
%{_unitdir}/ipmi.service
%{_mandir}/man1/ipmi_ui* %{_mandir}/man1/ipmi_ui*
%{_mandir}/man1/openipmicmd* %{_mandir}/man1/openipmicmd*
%{_mandir}/man1/openipmish* %{_mandir}/man1/openipmish*
@ -155,6 +177,9 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/pkgconfig/*.pc %{_libdir}/pkgconfig/*.pc
%changelog %changelog
* Mon May 7 2012 Jan Safranek <jsafrane@redhat.com> - 2.0.18-14
- Added ipmi systemd unit
* Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.18-13 * Thu Jan 12 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.0.18-13
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild

View File

@ -1,2 +0,0 @@
Please note that the /etc/init.d/ipmi init script is not LSB compliant and
uses non-standard exit codes. See the init script for detailed description.

12
ipmi.service Normal file
View File

@ -0,0 +1,12 @@
[Unit]
Description=IPMI Driver
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/libexec/openipmi-helper start
ExecStop=/usr/libexec/openipmi-helper stop
[Install]
WantedBy=multi-user.target

View File

@ -1,24 +1,14 @@
#!/bin/sh #!/bin/sh
############################################################################# #############################################################################
# #
# ipmi: OpenIPMI Driver init script # ipmi: OpenIPMI Driver helper script
# #
# Authors: Matt Domsch <Matt_Domsch@dell.com> # Authors: Jan Safranek <jsafrane@redhat.com>
#
# Based on IPMI init script by:
# Matt Domsch <Matt_Domsch@dell.com>
# Chris Poblete <Chris_Poblete@dell.com> # Chris Poblete <Chris_Poblete@dell.com>
# #
# chkconfig: - 13 87
# description: OpenIPMI Driver init script
#
### BEGIN INIT INFO
# Provides: ipmidrv
# Required-Start: $local_fs $remote_fs $syslog
# Required-Stop: $local_fs $remote_fs $syslog
# Default-Start:
# Default-Stop:
# Short-Description: OpenIPMI Driver init script
# Description: OpenIPMI Driver init script
### END INIT INFO
#
# Status return code bits # Status return code bits
# no bits set = no errors # no bits set = no errors
# bit 0 set = minimum modules aren't loaded # bit 0 set = minimum modules aren't loaded
@ -28,54 +18,6 @@
# bit 4 set = lockfile doesn't exist # bit 4 set = lockfile doesn't exist
# bit 5 set = modules are loaded even when asked to be unloaded # bit 5 set = modules are loaded even when asked to be unloaded
#
#############################################################################
# for log_success_msg and friends
if [ -r /lib/lsb/init-functions ]; then
# LSB, SLES, ...
. /lib/lsb/init-functions
elif [ -r /etc/init.d/functions ]; then
# Red Hat / VMware
. /etc/init.d/functions
my_log_message()
{
ACTION=$1
shift
case "$ACTION" in
success)
echo -n $*
success "$*"
echo
;;
failure)
echo -n $*
failure "$*"
echo
;;
warning)
echo -n $*
warning "$*"
echo
;;
*)
;;
esac
}
log_success_msg()
{
my_log_message success "$*"
}
log_failure_msg()
{
my_log_message failure "$*"
}
log_warning_msg()
{
my_log_message warning "$*"
}
fi
CONFIGFILE=/etc/sysconfig/ipmi CONFIGFILE=/etc/sysconfig/ipmi
# source config info # source config info
[ -r ${CONFIGFILE} ] && . ${CONFIGFILE} [ -r ${CONFIGFILE} ] && . ${CONFIGFILE}
@ -210,49 +152,44 @@ start_watchdog_common()
modules_loaded ipmi_watchdog modules_loaded ipmi_watchdog
[ ${OnePlusUnloaded} -ne 0 ] && [ ${OnePlusUnloaded} -ne 0 ] &&
RETVAL=$((RETVAL | 2)) && RETVAL=$((RETVAL | 2)) &&
log_failure_msg && echo "Watchdog startup failed: cannot load ipmi_watchdog module" &&
return return
if [ ${UDEV_EXISTS} -eq 0 -a ! -e /dev/watchdog ]; then if [ ${UDEV_EXISTS} -eq 0 -a ! -e /dev/watchdog ]; then
mknod -m 0600 /dev/watchdog c 10 130 mknod -m 0600 /dev/watchdog c 10 130
[ $? -ne 0 ] && [ $? -ne 0 ] &&
RETVAL=$((RETVAL | 8)) && RETVAL=$((RETVAL | 8)) &&
log_failure_msg && echo "Watchdog startup failed: cannot create /dev/watchdog" &&
return return
fi fi
log_success_msg
} }
start_watchdog_quiet() start_watchdog_quiet()
{ {
[ "${IPMI_WATCHDOG}" != "yes" ] && [ "${IPMI_WATCHDOG}" != "yes" ] &&
return return
echo -n $"Starting ipmi_watchdog driver: "
start_watchdog_common start_watchdog_common
} }
start_watchdog() start_watchdog()
{ {
echo -n $"Starting ipmi_watchdog driver: "
[ "${IPMI_WATCHDOG}" != "yes" ] && [ "${IPMI_WATCHDOG}" != "yes" ] &&
RETVAL=$((RETVAL | 2)) && RETVAL=$((RETVAL | 2)) &&
log_failure_msg "not configured" && echo "Watchdog not configured" &&
return return
start_watchdog_common start_watchdog_common
} }
stop_watchdog() stop_watchdog()
{ {
echo -n $"Stopping ipmi_watchdog driver: "
modprobe -q -r ipmi_watchdog > /dev/null 2>&1 modprobe -q -r ipmi_watchdog > /dev/null 2>&1
modules_loaded ipmi_watchdog modules_loaded ipmi_watchdog
if [ ${OnePlusLoaded} -ne 0 ]; then if [ ${OnePlusLoaded} -ne 0 ]; then
RETVAL=$((RETVAL | 32)) RETVAL=$((RETVAL | 32))
log_failure_msg echo "Watchog shutdown failed: cannot unload ipmi_watchdog module"
else else
if [ "${IPMI_WATCHDOG}" = "yes" ]; then if [ "${IPMI_WATCHDOG}" = "yes" ]; then
[ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog [ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog
fi fi
log_success_msg
fi fi
} }
@ -283,39 +220,33 @@ start_powercontrol_common()
modules_loaded ipmi_poweroff modules_loaded ipmi_poweroff
[ ${OnePlusUnloaded} -ne 0 ] && [ ${OnePlusUnloaded} -ne 0 ] &&
RETVAL=$((RETVAL | 2)) && RETVAL=$((RETVAL | 2)) &&
log_failure_msg && echo "Powercontroll startup failed: cannot load ipmi_poweroff module" &&
return return
log_success_msg
} }
start_powercontrol_quiet() start_powercontrol_quiet()
{ {
[ "${IPMI_POWEROFF}" != "yes" ] && [ "${IPMI_POWEROFF}" != "yes" ] &&
return return
echo -n $"Starting ipmi_poweroff driver: "
start_powercontrol_common start_powercontrol_common
} }
start_powercontrol() start_powercontrol()
{ {
echo -n $"Starting ipmi_poweroff driver: "
[ "${IPMI_POWEROFF}" != "yes" ] && [ "${IPMI_POWEROFF}" != "yes" ] &&
RETVAL=$((RETVAL | 2)) && RETVAL=$((RETVAL | 2)) &&
log_failure_msg "not configured" && echo "Powercontroll not configured" &&
return return
start_powercontrol_common start_powercontrol_common
} }
stop_powercontrol() stop_powercontrol()
{ {
echo -n $"Stopping ipmi_poweroff driver: "
modprobe -q -r ipmi_poweroff > /dev/null 2>&1 modprobe -q -r ipmi_poweroff > /dev/null 2>&1
modules_loaded ipmi_poweroff modules_loaded ipmi_poweroff
if [ ${OnePlusLoaded} -ne 0 ]; then if [ ${OnePlusLoaded} -ne 0 ]; then
RETVAL=$((RETVAL | 32)) RETVAL=$((RETVAL | 32))
log_failure_msg echo "Powercontroll shutdown failed: cannot unload ipmi_poweroff module"
else
log_success_msg
fi fi
} }
@ -410,15 +341,14 @@ load_ipmi_modules ()
############################################################################# #############################################################################
start() start()
{ {
echo -n "Starting ${MODULE_NAME} drivers: "
load_ipmi_modules load_ipmi_modules
if [ ${RETVAL} -eq 0 ]; then if [ ${RETVAL} -eq 0 ]; then
touch ${LOCKFILE} && log_success_msg touch ${LOCKFILE}
else else
if [ $((RETVAL & 1)) -eq 1 ]; then if [ $((RETVAL & 1)) -eq 1 ]; then
log_failure_msg echo "Startup failed."
else else
touch ${LOCKFILE} && log_warning_msg touch ${LOCKFILE} && echo "Warning!?"
fi fi
fi fi
start_watchdog_quiet start_watchdog_quiet
@ -428,29 +358,25 @@ start()
############################################################################# #############################################################################
stop() stop()
{ {
echo -n "Stopping ${MODULE_NAME} drivers: "
unload_ipmi_modules_leave_features unload_ipmi_modules_leave_features
modules_loaded ${MODULES_INTERFACES} modules_loaded ${MODULES_INTERFACES}
if [ ${OnePlusLoaded} -ne 0 ]; then if [ ${OnePlusLoaded} -ne 0 ]; then
RETVAL=$((RETVAL | 32)) RETVAL=$((RETVAL | 32))
log_failure_msg "may be in use" echo "Shutdown failed, something may be in use"
else else
rm -f ${LOCKFILE} rm -f ${LOCKFILE}
log_success_msg
fi fi
} }
stop_all() stop_all()
{ {
echo -n $"Stopping all ${MODULE_NAME} drivers: "
unload_all_ipmi_modules unload_all_ipmi_modules
modules_loaded ${MODULES} modules_loaded ${MODULES}
if [ ${OnePlusLoaded} -ne 0 ]; then if [ ${OnePlusLoaded} -ne 0 ]; then
RETVAL=$((RETVAL | 32)) RETVAL=$((RETVAL | 32))
log_failure_msg "may be in use" echo "Shutdown failed, something may be in use"
else else
rm -f ${LOCKFILE} rm -f ${LOCKFILE}
log_success_msg
fi fi
} }