#
+# Conditional build:
+%bcond_with pam # PAM authentication support
+%bcond_without logdb # enable mod_logdb (server-side message logging)
+#
+
+%define realname ejabberd
+
Summary: Fault-tolerant distributed Jabber/XMPP server
-Name: ejabberd
-Version: 0.7
-Release: 0.1
+Summary(pl.UTF-8): Odporny na awarie rozproszony serwer Jabbera/XMPP
+Name: %{realname}
+Version: 2.1.4
+Release: 1
License: GPL
Group: Applications/Communications
-Source0: http://www.jabberstudio.org/files/ejabberd/%{name}-%{version}.tar.gz
-# Source0-md5: dfec9573263de8729213993f015cfac9
-Source1: %{name}.init
-Source2: %{name}.sysconfig
-Source3: %{name}.sh
-Source4: %{name}ctl.sh
-Patch0: %{name}-makefile.patch
-URL: http://ejabberd.jabberstudio.org/
+Source0: http://www.process-one.net/downloads/ejabberd/%{version}/%{realname}-%{version}.tar.gz
+# Source0-md5: a73f2ae7c5c9ceccc295e6cbc6a70132
+Source1: %{realname}.init
+Source2: %{realname}.sysconfig
+Source3: %{realname}.sh
+Source4: %{realname}ctl.sh
+Source5: %{realname}-inetrc
+Patch0: %{realname}-makefile.patch
+Patch1: %{realname}-config.patch
+Patch2: %{realname}-mod_muc.patch
+# http://www.dp.uz.gov.ua/o.palij/mod_logdb/patch-src-mod_logdb-2.1.0.diff
+Patch3: %{realname}-mod_logdb.patch
+Patch4: %{realname}-vcard-access-get.patch
+URL: http://ejabberd.jabber.ru/
BuildRequires: autoconf
-BuildRequires: erlang >= R8B
-BuildRequires: expat >= 1.95
-PreReq: rc-scripts
-Requires(post): jabber-common
-Requires(post): textutils
+BuildRequires: erlang >= R10B_5
+BuildRequires: expat-devel >= 1.95
+BuildRequires: openssl-devel
+%if %{with pam}
+BuildRequires: pam-devel
+%endif
+BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: zlib-devel
Requires(post): /usr/bin/perl
+Requires(post): jabber-common
+Requires(post): sed >= 4.0
+Requires(post): textutils
Requires(post,preun): /sbin/chkconfig
Requires: erlang
+Requires: expat >= 1.95
+Requires: rc-scripts
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
ejabberd is a Free and Open Source fault-tolerant distributed Jabber
server. It is written mostly in Erlang.
+%description -l pl.UTF-8
+ejabberd to darmowy, z otwartymi źródłami, odporny na awarie
+rozproszony serwer Jabbera. Jest napisany w większości w Erlangu.
+
+%package logdb
+Summary: Server-side logging module
+Group: Applications/Communications
+Requires: %{name} = %{version}-%{release}
+
+%description logdb
+Server-side logging module.
+
%prep
-%setup -q
+%setup -q -n %{realname}-%{version}
%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch4 -p1
+%if %{with logdb}
+cd src
+%patch3 -p0
+%endif
%build
cd src
%{__autoconf}
-%configure
-%{__make}
+%configure \
+ %{?with_pam --enable-pam} \
+ --with-openssl=%{_prefix} \
+ --enable-odbc
+%{__make} -j1
cd ..
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/var/lib/%{name},/etc/{sysconfig,rc.d/init.d},%{_sbindir}}
+install -d $RPM_BUILD_ROOT{/var/lib/%{realname},/etc/{sysconfig,rc.d/init.d},%{_sbindir}}
-cd src
-%{__make} install \
- DESTDIR=$RPM_BUILD_ROOT
-cd ..
+%{__make} -C src install -j1 \
+ DESTDIR=$RPM_BUILD_ROOT
+
+sed -e's,@libdir@,%{_libdir},g' -e 's,@EJABBERD_DOC_PATH@,%{_docdir}/%{name}-%{version}/doc,g' %{SOURCE1} > $RPM_BUILD_ROOT/etc/rc.d/init.d/%{realname}
+install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/%{realname}
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/%{name}
+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
-install %{SOURCE3} $RPM_BUILD_ROOT/%{_sbindir}/%{name}
-install %{SOURCE4} $RPM_BUILD_ROOT/%{_sbindir}/%{name}ctl
+chmod 755 $RPM_BUILD_ROOT%{_libdir}/ejabberd/priv/lib/*.so
%clean
rm -rf $RPM_BUILD_ROOT
%post
-if [ -f /etc/jabber/secret ] ; then
- SECRET=`cat /etc/jabber/secret`
+if [ -f %{_sysconfdir}/jabber/secret ] ; then
+ SECRET=`cat %{_sysconfdir}/jabber/secret`
if [ -n "$SECRET" ] ; then
echo "Updating component authentication secret in ejabberd config file..."
- perl -pi -e "s/>secret</>$SECRET</" /etc/jabber/ejabberd.cfg
+ %{__sed} -i -e "s/>secret</>$SECRET</" /etc/jabber/ejabberd.cfg
fi
fi
-/sbin/chkconfig --add ejabberd
-if [ -r /var/lock/subsys/ejabberd ]; then
- /etc/rc.d/init.d/ejabberd restart >&2
-else
- echo "Run \"/etc/rc.d/init.d/ejabberd start\" to start ejabberd server."
+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"
+
%preun
if [ "$1" = "0" ]; then
- if [ -r /var/lock/subsys/ejabberd ]; then
- /etc/rc.d/init.d/ejabberd stop >&2
- fi
+ %service ejabberd stop
/sbin/chkconfig --del ejabberd
fi
%files
%defattr(644,root,root,755)
-%doc ChangeLog TODO doc
+%doc doc src/odbc/pg.sql src/odbc/mysql.sql
%attr(755,root,root) %{_sbindir}/*
-/etc/jabber/*
-%attr(776,root,jabber) /var/log/ejabberd
+%attr(640,root,jabber) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/jabber/*
+%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
-%attr(754,root,root) /etc/rc.d/init.d/%{name}
-%attr(640,root,root) %config(noreplace) %verify(not md5 size mtime) /etc/sysconfig/%{name}
+%attr(754,root,root) /etc/rc.d/init.d/%{realname}
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{realname}
+
+%if %{with logdb}
+%files logdb
+%defattr(644,root,root,755)
+%{_libdir}/ejabberd/ebin/mod_logdb*
+%endif