From ad5b60552800b4396abf96fc6b9c4e070ed887ea Mon Sep 17 00:00:00 2001 From: Arif Ali Date: Tue, 9 Jun 2015 22:09:25 +0100 Subject: [PATCH] add systemd support --- .../usr/lib/systemd/system/xcatd.service | 12 +++++ xCAT-server/xCAT-server.spec | 47 ++++++++++++++++--- 2 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 xCAT-server/usr/lib/systemd/system/xcatd.service diff --git a/xCAT-server/usr/lib/systemd/system/xcatd.service b/xCAT-server/usr/lib/systemd/system/xcatd.service new file mode 100644 index 000000000..1432e4406 --- /dev/null +++ b/xCAT-server/usr/lib/systemd/system/xcatd.service @@ -0,0 +1,12 @@ +[Unit] +Description=xCAT Management Service +After=network.target syslog.target sshd.service + +[Service] +Type=forking +EnvironmentFile=-/etc/sysconfig/xcat +ExecStart=/opt/xcat/sbin/xcatd -p /var/run/xcatd.pid +PIDFile=/var/run/xcatd.pid + +[Install] +WantedBy=multi-user.target diff --git a/xCAT-server/xCAT-server.spec b/xCAT-server/xCAT-server.spec index 46fe1c6ee..21347e9f5 100644 --- a/xCAT-server/xCAT-server.spec +++ b/xCAT-server/xCAT-server.spec @@ -55,6 +55,16 @@ Requires: xCAT-client >= %{epoch}:%(cat Version|cut -d. -f 1,2) Provides: xCAT-server = %{epoch}:%{version} +%if 0%{!?initscripttype:1} +# initscripttype not explicitly defined in some macro file or on commandline +# use presence of systemd_post macro to determine the initscripttype +%if %{?systemd_post:1}%{!?systemd_post:0} +%global initscripttype systemd +%else +%global initscripttype sysv +%endif +%endif + %description xCAT-server provides the core server and configuration management components of xCAT. This package should be installed on your management server @@ -128,8 +138,6 @@ chmod -h 755 $RPM_BUILD_ROOT/%{prefix}/sbin/* cp -h bin/* $RPM_BUILD_ROOT/%{prefix}/bin chmod -h 755 $RPM_BUILD_ROOT/%{prefix}/bin/* %endif -#cp rc.d/* $RPM_BUILD_ROOT/%{prefix}/rc.d -#chmod 755 $RPM_BUILD_ROOT/%{prefix}/rc.d/* cp share/xcat/ca/* $RPM_BUILD_ROOT/%{prefix}/share/xcat/ca chmod 644 $RPM_BUILD_ROOT/%{prefix}/share/xcat/ca/* @@ -217,7 +225,6 @@ rm $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT_plugin/aixinstall.pm rm $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT_plugin/slpdiscover.pm rm $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT_plugin/remoteimmsetup.pm rm $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT/IMMUtils.pm -#rm $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT/RShellAPI.pm rm $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT_plugin/bmcconfig.pm rm $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT_plugin/bpa.pm rm $RPM_BUILD_ROOT/%{prefix}/lib/perl/xCAT_plugin/esx.pm @@ -313,9 +320,14 @@ cp lib/xcat/shfunctions $RPM_BUILD_ROOT/%{prefix}/lib chmod 644 $RPM_BUILD_ROOT/%{prefix}/lib/shfunctions %if %fsm %else +%if %{initscripttype} == "systemd" +mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system +cp usr/lib/systemd/system/xcatd.service $RPM_BUILD_ROOT/usr/lib/systemd/system +%else mkdir -p $RPM_BUILD_ROOT/etc/init.d cp etc/init.d/xcatd $RPM_BUILD_ROOT/etc/init.d %endif +%endif #TODO: the next has to me moved to postscript, to detect /etc/xcat vs /etc/opt/xcat mkdir -p $RPM_BUILD_ROOT/etc/xcat @@ -369,7 +381,11 @@ rm -rf $RPM_BUILD_ROOT /etc/xcat %if %fsm %else +%if %{initscripttype} == "systemd" +/usr/lib/systemd/system/xcatd.service +%else /etc/init.d/xcatd +%endif #/etc/xcat/conf.orig/xcat-ws.conf.apache24 #/etc/xcat/conf.orig/xcat-ws.conf.apache22 /etc/apache2/conf.d/xcat-ws.conf @@ -377,6 +393,9 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog +* Thu Jun 11 2015 - Arif Ali +- Add systemd support + * Fri Nov 20 2007 - Jarrod Johnson - Changes for relocatible rpm. @@ -410,6 +429,9 @@ if [ "$1" = "1" ]; then #Only if installing for the first time.. /usr/lib/lsb/install_initd /etc/init.d/xcatd elif [ -x /sbin/chkconfig ]; then /sbin/chkconfig --add xcatd + elif [ -x /usr/bin/systemctl ]; then + /usr/bin/systemctl daemon-reload + /usr/bin/systemctl enable xcatd else echo "Unable to register init scripts on this system" fi @@ -453,16 +475,27 @@ exit 0 %preun %ifos linux if [ $1 == 0 ]; then #This means only on -e - if [ -f "/proc/cmdline" ]; then # prevent running it during install into chroot image - /etc/init.d/xcatd stop - fi + if [ -f "/proc/cmdline" ]; then # prevent running it during install into chroot image + /etc/init.d/xcatd stop + fi if [ -x /usr/lib/lsb/remove_initd ]; then - /usr/lib/lsb/remove_initd /etc/init.d/xcatd + /usr/lib/lsb/remove_initd /etc/init.d/xcatd elif [ -x /sbin/chkconfig ]; then /sbin/chkconfig --del xcatd + elif [ -x /usr/bin/systemctl ]; then + /usr/bin/systemctl daemon-reload + /usr/bin/systemctl disable xcatd fi rm -f /usr/sbin/xcatd #remove the symbolic fi %endif +%postun +%ifos linux +if [ $1 == 0 ]; then #This means only on -e + if [ -x /usr/bin/systemctl ]; then + /usr/bin/systemctl daemon-reload + fi +fi +