--- /dev/null
+diff -dur -x '*~' ejabberd-13.10.orig/Makefile.in ejabberd-13.10/Makefile.in
+--- ejabberd-13.10.orig/Makefile.in 2013-11-14 20:21:37.000000000 +0100
++++ ejabberd-13.10/Makefile.in 2013-11-14 20:30:48.745590816 +0100
+@@ -123,7 +123,7 @@
+ [ -f $(ETCDIR)/ejabberdctl.cfg ] \
+ && $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new \
+ || $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg
+- $(INSTALL) -b -m 644 $(G_USER) inetrc $(ETCDIR)/inetrc
++ $(INSTALL) -b -m 644 $(G_USER) inetrc $(ETCDIR)/ejabberd-inetrc
+ #
+ # Administration script
+ [ -d $(SBINDIR) ] || $(INSTALL) -d -m 755 $(SBINDIR)
+diff -dur -x '*~' ejabberd-13.10.orig/ejabberdctl.template ejabberd-13.10/ejabberdctl.template
+--- ejabberd-13.10.orig/ejabberdctl.template 2013-09-27 11:19:22.000000000 +0200
++++ ejabberd-13.10/ejabberdctl.template 2013-11-14 20:27:04.240688181 +0100
+@@ -104,7 +104,7 @@
+ SASL_LOG_PATH=$LOGS_DIR/erlang.log
+ DATETIME=`date "+%Y%m%d-%H%M%S"`
+ ERL_CRASH_DUMP=$LOGS_DIR/erl_crash_$DATETIME.dump
+-ERL_INETRC=$ETCDIR/inetrc
++ERL_INETRC=$ETCDIR/ejabberd-inetrc
+ HOME=$SPOOLDIR
+
+ # define erl parameters
# Get service config - may override defaults
[ -f /etc/sysconfig/ejabberd ] && . /etc/sysconfig/ejabberd
-[ -z "$NODENAME" ] && NODENAME=$(hostname)
-
EJABBERD_DOC_PATH="@EJABBERD_DOC_PATH@"
-export EJABBERD_DOC_PATH
+EJABBERD_PID_PATH=/var/run/jabber/ejabberd.pid
+export EJABBERD_DOC_PATH EJABBERD_PID_PATH
start() {
# Check if the service is already running?
if [ ! -f /var/lock/subsys/ejabberd ]; then
- export ERL_MAX_PORTS ERL_FULLSWEEP_AFTER
msg_starting ejabberd
- daemon /usr/sbin/ejabberd
+ /usr/sbin/ejabberdctl start
RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ /usr/sbin/ejabberdctl started
+ RETVAL=$?
+ fi
if [ $RETVAL -eq 0 ]; then
touch /var/lock/subsys/ejabberd
+ ok
+ else
+ fail
fi
else
msg_already_running ejabberd
stop() {
# Stop daemons.
if [ -f /var/lock/subsys/ejabberd ]; then
- msg_stopping ejabberd
- /usr/sbin/ejabberdctl ejabberd@${NODENAME} stop 2>/dev/null
+ msg_stopping ejabberd ; busy
+ /usr/sbin/ejabberdctl stop 2>/dev/null
RETVAL=$?
+ if [ $RETVAL -eq 0 ]; then
+ /usr/sbin/ejabberdctl stopped 2>/dev/null
+ RETVAL=$?
+ fi
if [ $RETVAL -eq 0 ]; then
ok
else
;;
restart)
stop
- sleep 2
start
;;
reload|force-reload)
if [ -f /var/lock/subsys/ejabberd ]; then
- msg_reloading ejabberd
- busy
- /usr/sbin/ejabberdctl ejabberd@${NODENAME} restart
+ stop
+ start
RETVAL=$?
- if [ $RETVAL -eq 0 ]; then
- ok
- else
- RETVAL=1
- fail
- fi
else
msg_not_running ejabberd
RETVAL=7
fi
;;
status)
- EPMDOUT=`@libdir@/erlang/bin/epmd -names`
- echo "$EPMDOUT" | head -n 1
- echo "$EPMDOUT" | grep ejabberd
+ status --pidfile $EJABBERD_PID_PATH ejabberd
RETVAL=$?
- if [ "$RETVAL" -ne "0" ] ; then
- if [ -f /var/lock/subsys/ejabberd ]; then
- nls "%s dead but subsys locked" "ejabberd"
- RETVAL=2
- else
- nls "%s is stopped" "ejabberd"
- RETVAL=3
- fi
- fi
;;
*)
msg_usage "$0 {start|stop|status|restart|reload|force-reload}"
#
# TODO:
-# - config migration from old versions
-# - check/udpate the init script
# - add systemd unit
# Conditional build:
# Source0-md5: 94ce4fe244ee72771eeafe27209d6d3c
Source1: %{realname}.init
Source2: %{realname}.sysconfig
-Source3: %{realname}.sh
-Source4: %{realname}ctl.sh
-Source5: %{realname}-inetrc
#
# Archives created with the ejabberd-pack_deps.sh script (in this repo)
Source10: ejabberd-goldrush-20131108.tar.gz
#Patch1: %{realname}-vcard-access-get.patch
# http://www.dp.uz.gov.ua/o.palij/mod_logdb/patch-mod_logdb-2.1.12.diff
Patch2: %{realname}-mod_logdb.patch
+Patch3: %{realname}-inetrc_path.patch
URL: http://www.ejabberd.im/
BuildRequires: autoconf
BuildRequires: automake
Requires: rc-scripts
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+%define _noautoprovfiles %{_libdir}/%{name}/priv/lib/
+
%description
ejabberd is a Free and Open Source fault-tolerant distributed Jabber
server. It is written mostly in Erlang.
%if %{with logdb}
%patch2 -p0
%endif
+%patch3 -p1
%build
%{__aclocal} -I m4
install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/%{realname}
chmod u+rw $RPM_BUILD_ROOT%{_sbindir}/%{realname}*
-sed -e's,@libdir@,%{_libdir},g' %{SOURCE3} > $RPM_BUILD_ROOT%{_sbindir}/%{realname}
-sed -e's,@libdir@,%{_libdir},g' %{SOURCE4} > $RPM_BUILD_ROOT%{_sbindir}/%{realname}ctl
-install %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/jabber
chmod 755 $RPM_BUILD_ROOT%{_libdir}/ejabberd/priv/lib/*.so
rm -rf _doc 2>/dev/null || :
mv $RPM_BUILD_ROOT%{_docdir}/%{name} _doc
+touch $RPM_BUILD_ROOT%{_sysconfdir}/jabber/ejabberd.cfg
+touch $RPM_BUILD_ROOT/var/lib/ejabberd/.erlang.cookie
+
%clean
rm -rf $RPM_BUILD_ROOT
echo "this is not supported by this ejabberd version in PLD" >&2
exit 1
fi
+ %banner -e %{name} <<'EOF'
+Old-style /etc/jabber/ejabberd.cfg configuration file exists. You should
+consider converting it to the new YAML format. You can do this with the
+ejabberctl command.
+EOF
fi
%post
SECRET=`cat %{_sysconfdir}/jabber/secret`
if [ -n "$SECRET" ] ; then
echo "Updating component authentication secret in ejabberd config file..."
- %{__sed} -i -e "s/>secret</>$SECRET</" /etc/jabber/ejabberd.cfg
+ %{__sed} -i -e "s/>secret</>$SECRET</" /etc/jabber/ejabberd.yml
fi
fi
-if [ ! -f %{_sysconfdir}/jabber/cookie ] ; then
- echo "Generating erl authentication cookie..."
- umask 066
- perl -e 'open R,"/dev/urandom"; read R,$r,16;
- printf "%02x",ord(chop $r) while($r);' > %{_sysconfdir}/jabber/cookie
-fi
-
/sbin/chkconfig --add ejabberd
%service ejabberd restart "ejabberd server"
/sbin/chkconfig --del ejabberd
fi
+%triggerpostun -- %{name} < 13.10
+# convert old 'NODENAME' in /etc/sysconfig/ejabberd
+# to 'ERLANG_NODE' in /etc/jabber/ejabberdctl.cfg
+# and move other settings
+NODENAME="$(hostname)"
+if [ -e /etc/sysconfig/ejabberd ] ; then
+ . /etc/sysconfig/ejabberd || :
+fi
+subst="s/^#ERLANG_NODE=.*/ERLANG_NODE=ejabberd@${NODENAME}/"
+if [ -n "$ERL_MAX_PORTS" ] ; then
+ subst="$subst;s/^#ERL_MAX_PORTS=.*/ERL_MAX_PORTS=${ERL_MAX_PORTS}/"
+fi
+sed -i -e"$subst" /etc/jabber/ejabberdctl.cfg || :
+if [ -e /etc/sysconfig/ejabberd ] ; then
+ sed -i.rpmsave \
+ -e'/^[#[:space:]]*NODENAME=/d;/^# Node name/d' \
+ -e'/^[#[:space:]]*ERL_MAX_PORTS=/d;/^# uncomment this to allow more then 1024 connections/d' \
+ -e'/^[#[:space:]]*ERL_FULLSWEEP_AFTER=/d;/^# uncomment this to limit memory usage/d' \
+ /etc/sysconfig/ejabberd || :
+fi
+cp %{_sysconfdir}/jabber/cookie /var/lib/ejabberd/.erlang.cookie || :
+
%files
%defattr(644,root,root,755)
%doc sql _doc/*
%attr(755,root,root) %{_sbindir}/*
-%attr(640,root,jabber) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jabber/*
+%attr(640,root,jabber) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jabber/ejabberd-inetrc
+%attr(640,root,jabber) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jabber/ejabberd.yml
+%attr(640,root,jabber) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jabber/ejabberdctl.cfg
+# legacy config may still be there
+%attr(640,root,jabber) %ghost %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jabber/ejabberd.cfg
%attr(770,root,jabber) /var/log/ejabberd
%if %{with logdb}
%exclude %{_libdir}/ejabberd/ebin/mod_logdb*
%endif
%{_libdir}/ejabberd
%dir %attr(770,root,jabber) /var/lib/ejabberd
+%ghost %attr(400,jabber,jabber) %ghost %config(noreplace) %verify(not md5 mtime size) /var/lib/ejabberd/.erlang.cookie
%attr(754,root,root) /etc/rc.d/init.d/%{realname}
%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{realname}