Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=0b853173fef8aac2cbb06bd8f98fe6641730da9a
commit 0b853173fef8aac2cbb06bd8f98fe6641730da9a Author: James Buren <[email protected]> Date: Fri Jul 6 04:02:06 2012 -0500 ejabberd-2.1.11-2-x86_64 * convert to systemd schema diff --git a/source/network-extra/ejabberd/FrugalBuild b/source/network-extra/ejabberd/FrugalBuild index 239b22c..dbbaa34 100644 --- a/source/network-extra/ejabberd/FrugalBuild +++ b/source/network-extra/ejabberd/FrugalBuild @@ -3,20 +3,25 @@ pkgname=ejabberd pkgver=2.1.11 -pkgrel=1 +pkgrel=2 pkgdesc="A free and open source instant messaging server written in Erlang." url="http://ejabberd.jabber.ru/" depends=('erlang>=14A-2') -backup=(etc/ejabberd/ejabberd.cfg) +backup=(etc/ejabberd/{ejabberd.cfg,ejabberdctl.cfg,inetrc}) groups=('network-extra') archs=('i686' 'x86_64') _F_archive_grepv="beta\|rc" up2date="Flasttar http://www.process-one.net/en/ejabberd/archive/" source=(http://www.process-one.net/downloads/ejabberd/$pkgver/ejabberd-$pkgver.tgz \ - rc.ejabberd README.Frugalware) + ejabberd.service rc.ejabberd README.Frugalware) sha1sums=('ae2c521d5e93fbd5bc826052c5524b5222dcfae6' \ + 'bbca398359e7ea3dbe1e4efcc86898723a73a63c' \ 'ecdbed598b714815d46653d88f257a9a82624aed' \ '0d8814dc022a3727d4d63d9f4a0a6604204ba020') +_F_systemd_scriptlet="$pkgname.install" +_F_sysvinit_units=(ejabberd) +_F_systemd_units=(ejabberd=) +Finclude systemd build() { @@ -32,7 +37,7 @@ build() Fsed 'EJABBERD_MSGS_PATH=.*' 'EJABBERD_MSGS_PATH=$ROOTDIR/usr/lib/ejabberd/priv/msgs' $Fdestdir/usr/sbin/ejabberdctl Fsed 'EJABBERD_SO_PATH=.*' 'EJABBERD_SO_PATH=$ROOTDIR/usr/lib/ejabberd/priv/lib' $Fdestdir/usr/sbin/ejabberdctl Fdocrel ../doc/* - chown -R 41:41 $Fdestdir/{var/log/ejabberd,var/spool/ejabberd,usr/lib/ejabberd} + chown -R 41:41 $Fdestdir/{var/log/ejabberd,var/spool/ejabberd,usr/lib/ejabberd,var/lib/ejabberd,usr/sbin/ejabberdctl,etc/ejabberd} Fdoc README.Frugalware Frcd2 Frm /var/lock @@ -40,6 +45,8 @@ build() cat > $Fdestdir/etc/tmpfiles.d/ejabberd.conf << EOF d $Flocalstatedir/lock/ejabberdctl 0750 ejabberd ejabberd - EOF + Ffile /lib/systemd/system/ejabberd.service + Fgenscriptlet } # optimization OK diff --git a/source/network-extra/ejabberd/ejabberd.install b/source/network-extra/ejabberd/ejabberd.install index 07d458b..cbde12b 100644 --- a/source/network-extra/ejabberd/ejabberd.install +++ b/source/network-extra/ejabberd/ejabberd.install @@ -1,13 +1,63 @@ +sysvinit_units=(@_F_sysvinit_units@) +systemd_units=(@_F_systemd_units@) + post_install() { getent group ejabberd >/dev/null || /usr/sbin/groupadd -g 41 ejabberd getent passwd ejabberd >/dev/null || /usr/sbin/useradd -u 41 -g ejabberd -d /usr/lib/ejabberd ejabberd + + local unit + local op + + for i in ${sysvinit_units[@]}; do + chkconfig --del rc.$i >/dev/null 2>&1 + done + + for i in ${systemd_units[@]}; do + unit=$(echo $i | cut -f 1 -d '=') + op=$(echo $i | cut -f 2 -d '=') + if echo $op | grep -q 'e'; then + systemctl enable $unit.service >/dev/null 2>&1 + fi + if echo $op | grep -q 's'; then + systemctl start $unit.service >/dev/null 2>&1 + fi + done } -post_remove() +post_upgrade() +{ + getent group ejabberd >/dev/null || /usr/sbin/groupadd -g 41 ejabberd + getent passwd ejabberd >/dev/null || /usr/sbin/useradd -u 41 -g ejabberd -d /usr/lib/ejabberd ejabberd + + for i in ${sysvinit_units[@]}; do + chkconfig --del rc.$i >/dev/null 2>&1 + done + + systemctl daemon-reload >/dev/null 2>&1 +} + +pre_remove() { userdel ejabberd groupdel ejabberd + + local unit + + for i in ${sysvinit_units[@]}; do + chkconfig --del rc.$i >/dev/null 2>&1 + done + + for i in ${systemd_units[@]}; do + unit=$(echo $i | cut -f 1 -d '=') + systemctl --no-reload disable $unit.service >/dev/null 2>&1 + systemctl stop $unit.service >/dev/null 2>&1 + done +} + +post_remove() +{ + systemctl daemon-reload >/dev/null 2>&1 } op=$1 diff --git a/source/network-extra/ejabberd/ejabberd.service b/source/network-extra/ejabberd/ejabberd.service new file mode 100644 index 0000000..64a98a8 --- /dev/null +++ b/source/network-extra/ejabberd/ejabberd.service @@ -0,0 +1,14 @@ +[Unit] +Description=Ejabber daemon +After=network.target + +[Service] +User=ejabberd +Group=ejabberd +ExecStart=/usr/sbin/ejabberdctl start +ExecStop=/usr/sbin/ejabberdctl stop +RemainAfterExit=yes +Type=oneshot + +[Install] +WantedBy=multi-user.target _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
