/[packages]/cauldron/ejabberd/current/SPECS/ejabberd.spec
ViewVC logotype

Contents of /cauldron/ejabberd/current/SPECS/ejabberd.spec

Parent Directory Parent Directory | Revision Log Revision Log


Revision 404859 - (show annotations) (download)
Sun Mar 24 15:20:47 2013 UTC (11 years ago) by colin
File size: 9816 byte(s)
Add systemd requires and general post/pre fixes (mga#9302)
1 Summary: A distributed, fault-tolerant Jabber/XMPP server
2 Name: ejabberd
3 Version: 2.1.11
4 Release: %mkrel 8
5 Group: System/Servers
6 License: GPLv2+
7 URL: http://www.ejabberd.im/
8 Source0: http://www.process-one.net/downloads/ejabberd/%{version}/%{name}-%{version}.tgz
9 Source3: inetrc
10 # http://ejabberd.jabber.ru/ejabberdctl-extra
11 Source4: http://ejabberd.jabber.ru/files/efiles/mod_ctlextra.erl
12 # The following were extracted from a patch found on http://realloc.spb.ru/share/ejabberdad.html
13 Source5: ejabberd_auth_ad.erl
14 Source6: mod_shared_roster_ad.erl
15 Source7: mod_vcard_ad.erl
16
17 Source8: ejabberd.init
18 Source9: ejabberd.logrotate
19 Source10: ejabberd.sysconfig
20
21 # Support for systemd
22 Source11: ejabberd.service
23 Source12: ejabberd.tmpfiles.conf
24
25 # PAM support
26 Source13: ejabberdctl.pam
27 Source14: ejabberdctl.apps
28 Source15: ejabberd.pam
29
30
31 # Use ejabberd as an example for PAM service name (fedora/epel-specific)
32 Patch1: ejabberd-0001-Fix-PAM-service-example-name-to-match-actual-one.patch
33 # fixed delays in s2s connections
34 Patch2: ejabberd-0002-Fixed-delays-in-s2s-connections.patch
35 # Introducing mod_admin_extra
36 Patch3: ejabberd-0003-Introducing-mod_admin_extra.patch
37 # BZ# 439583, 452326, 451554, 465196, 502361 (fedora/epel-specific)
38 Patch4: ejabberd-0004-Fedora-specific-changes-to-ejabberdctl.patch
39 # Fix so-lib permissions while installing (fedora/epel-specific)
40 Patch5: ejabberd-0005-Install-.so-objects-with-0755-permissions.patch
41 # Will be proposed for inclusion into upstream
42 Patch6: ejabberd-0006-Use-versioned-directory-for-storing-docs.patch
43 # Backported from upstream
44 Patch7: ejabberd-0007-Support-SASL-GSSAPI-authentication-thanks-to-Mikael-.patch
45 # Disable IP restriction for ejabberdctl (seems that it doesn't work well)
46 Patch8: ejabberd-0008-Disable-INET_DIST_INTERFACE-by-default.patch
47 # cherry-picked from trunk
48 Patch9: ejabberd-0009-On-shutdown-first-stop-listeners-then-modules-thanks.patch
49 # cherry-picked from trunk
50 Patch10: ejabberd-0010-Added-clause-so-ejabberdctl-number-of-arguments-erro.patch
51 # cherry-picked from trunk
52 Patch11: ejabberd-0011-Log-IP-address-when-auth-attempt-fails-thanks-to-Zac.patch
53
54 BuildRequires: erlang-base
55 BuildRequires: erlang-ssl
56 BuildRequires: erlang-devel
57 BuildRequires: erlang-erl_interface
58 BuildRequires: erlang-compiler
59 BuildRequires: erlang-asn1
60 BuildRequires: erlang-public_key
61 BuildRequires: erlang-parsetools
62 BuildRequires: libexpat-devel
63 BuildRequires: openssl-devel
64 BuildRequires: zlib-devel
65 BuildRequires: tetex-latex
66 BuildRequires: hevea
67 BuildRequires: rpm-helper >= 0.21
68 Requires: erlang-base
69 Requires: erlang-crypto
70 Requires: erlang-mnesia
71 Requires: erlang-syntax_tools
72 Requires: erlang-compiler
73 Requires: erlang-asn1
74 Requires: erlang-ssl
75 Requires(post): systemd >= %{systemd_required_version}
76 Requires(pre): rpm-helper >= 0.19
77 Requires(post): rpm-helper >= 0.21
78 Requires(preun): rpm-helper >= 0.19
79 Requires(postun): rpm-helper >= 0.19
80
81
82 %description
83 ejabberd is a Free and Open Source distributed fault-tolerant
84 Jabber/XMPP server. It is mostly written in Erlang, and runs on many
85 platforms (tested on Linux, FreeBSD, NetBSD, Solaris, Mac OS X and
86 Windows NT/2000/XP).
87
88 %package devel
89 Summary: Development files for %{name}
90 Group: Development/Other
91 Requires: %{name} = %{version}-%{release}
92 Requires: erlang-devel
93
94 %description devel
95 Development files for %{name}.
96
97 %package doc
98 Summary: Documentation for ejabberd
99 Group: System/Servers
100
101 %description doc
102 Documentation for ejabberd.
103
104 %prep
105 %setup -q
106
107
108 %patch1 -p1 -b .pam_name
109 %patch2 -p1 -b .s2s_delays
110 %patch3 -p1 -b .mod_admin_extra
111 #%patch4 -p1 -b .fedora_specific
112 %patch5 -p1 -b .fix_perms
113 %patch6 -p1 -b .versioned_docdir
114 %patch7 -p1 -b .gssapi
115 %patch8 -p1 -b .disable_ip_restriction_for_ejabberdctl
116 %patch9 -p1 -b .stop_listeners_first
117 %patch10 -p1 -b .r15b
118 %patch11 -p1 -b .log_intruders_ip
119
120 # FIXME last-minute fix for 2.1.11 only
121 sed -i -e "s,2.1.x,2.1.11,g" src/configure
122 touch -r src/configure.ac src/configure
123
124 %{__perl} -pi -e "s!/var/lib/ejabberd!%{_libdir}/ejabberd-%{version}!g" src/Makefile.in
125 %{__perl} -pi -e "s!/etc!%{_sysconfdir}!g" src/Makefile.in
126
127 cp %{SOURCE4} src
128 cp %{SOURCE5} src
129 cp %{SOURCE6} src
130 cp %{SOURCE7} src
131
132 %build
133 %define _disable_ld_no_undefined 1
134 pushd src
135 %configure2_5x \
136 --enable-odbc \
137 --disable-pam \
138 --disable-ejabberd_zlib
139
140 %make -j1
141 popd
142 pushd doc
143 make html pdf
144 popd
145
146 %install
147 pushd src
148 %makeinstall_std
149 popd
150
151 # fix example SSL certificate path to real one, which we created recently (see above)
152 %{__perl} -pi -e 's!/path/to/ssl.pem!/etc/ejabberd/ejabberd.pem!g' %{buildroot}/etc/ejabberd/ejabberd.cfg
153
154 # fix captcha path
155 %{__perl} -pi -e 's!/lib/ejabberd/priv/bin/captcha.sh!%{_libdir}/%{name}/priv/bin/captcha.sh!g' %{buildroot}/etc/ejabberd/ejabberd.cfg
156
157 mkdir -p %{buildroot}/var/log/ejabberd
158 mkdir -p %{buildroot}/var/lib/ejabberd/spool
159
160 chmod a+x %{buildroot}%{_libdir}/ejabberd/priv/lib/
161
162 %{__perl} -pi -e 's!./ssl.pem!/etc/pki/tls/private/ejabberd.pem!g' \
163 %{buildroot}/etc/ejabberd/ejabberd.cfg
164
165 install -d -m 755 %{buildroot}/var/log/ejabberd
166 install -d -m 755 %{buildroot}%{_var}/lib/ejabberd
167
168 # install systemd entry
169 install -D -m 0644 -p %{S:11} %{buildroot}%{_unitdir}/%{name}.service
170 install -D -m 0644 -p %{S:12} %{buildroot}%{_tmpfilesdir}/%{name}.conf
171
172 # install sysconfig file
173 install -D -p -m 0644 %{S:10} %{buildroot}%{_sysconfdir}/sysconfig/ejabberd
174
175 mkdir -p %{buildroot}%{_bindir}
176 ln -s consolehelper %{buildroot}%{_bindir}/ejabberdctl
177 install -D -p -m 0644 %{S:13} %{buildroot}%{_sysconfdir}/pam.d/ejabberdctl
178 install -D -p -m 0644 %{S:14} %{buildroot}%{_sysconfdir}/security/console.apps/ejabberdctl
179 install -D -p -m 0644 %{S:15} %{buildroot}%{_sysconfdir}/pam.d/ejabberd
180
181
182 # install config for logrotate
183 install -D -p -m 0644 %{S:9} %{buildroot}%{_sysconfdir}/logrotate.d/ejabberd
184
185 cp %{S:3} %{buildroot}%{_sysconfdir}/ejabberd/inetrc
186
187 cat > README.urpmi <<EOF
188 Mageia RPM specific notes
189
190 Post-installation
191 -----------------
192 There is no users created with the default configuration.
193
194 You have to first create an user, either through a client supporting registration (kopete, psi), or through command line:
195
196 $> su ejabberd -c 'ejabberdctl --node ejabberd@host register user domain.tld passwd'
197
198 Then you have to grant him admin privilege, by adding such a line in /etc/ejabberd/ejabberd.cfg:
199
200 {acl, admin, {user, "user"}}.
201
202 More commands are available, through ejabberctl:
203
204 $> su ejabberd -c 'ejabberdctl --node ejabberd@host help'
205
206 You can also access the web console at http://host:5280/admin
207 EOF
208
209 install -d -m 755 %{buildroot}%{_docdir}/%{name}
210 install -m 644 README %{buildroot}%{_docdir}/%{name}
211 install -m 644 README.urpmi %{buildroot}%{_docdir}/%{name}
212 install -m 644 COPYING %{buildroot}%{_docdir}/%{name}
213 install -m 644 doc/*.pdf doc/*.html doc/*.png doc/release_notes_* %{buildroot}%{_docdir}/%{name}
214
215 install -d -m 755 %{buildroot}%{_sbindir}
216 # ejabberd wrapper
217 cat > %{buildroot}%{_sbindir}/ejabberd <<'EOF'
218 #!/bin/sh
219
220 ERLANG_NODE=ejabberd
221 ERL=/usr/bin/erl
222 LIB=%{_var}/lib/ejabberd/ebin
223 CONFIG=/etc/ejabberd/ejabberd.cfg
224 INETRC=/etc/ejabberd/inetrc
225 LOG=/var/log/ejabberd/ejabberd.log
226 SASL_LOG=/var/log/ejabberd/sasl.log
227 SPOOL=/var/lib/ejabberd
228
229 if [ -r /var/lib/ejabberd/.erlang.cookie ] ; then
230 export HOME=/var/lib/ejabberd
231 fi
232
233 ARGS=
234 while [ $# -ne 0 ] ; do
235 PARAM=$1
236 shift
237 case $PARAM in
238 --) break ;;
239 --node) ERLANG_NODE=$1; shift ;;
240 --config) CONFIG=$1 ; shift ;;
241 --log) LOG=$1 ; shift ;;
242 --sasl-log) SASL_LOG=$1 ; shift ;;
243 --spool) SPOOL=$1 ; shift ;;
244 *) ARGS="$ARGS $PARAM" ;;
245 esac
246 done
247
248 if [ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] ; then
249 SNAME=-sname
250 else
251 SNAME=-name
252 fi
253
254 exec $ERL -pa $LIB \
255 $SNAME $ERLANG_NODE \
256 -s ejabberd \
257 -kernel inetrc \"$INETRC\" \
258 -ejabberd config \"$CONFIG\" log_path \"$LOG\" \
259 -sasl sasl_error_logger \{file,\"$SASL_LOG\"\} \
260 -mnesia dir \"$SPOOL\" \
261 $ERL_OPTIONS $ARGS "$@"
262 EOF
263 chmod 755 %{buildroot}%{_sbindir}/ejabberd
264
265 %pre
266 if [ -d %{_var}/lib/%{name}/spool ]; then
267 mv -f %{_var}/lib/%{name}/spool/* %{_var}/lib/%{name}
268 rmdir %{_var}/lib/%{name}/spool
269 fi
270 %_pre_useradd %{name} /var/lib/%{name} /bin/sh
271 %_pre_groupadd %{name} %{name}
272
273 %preun
274 %_preun_service %{name}
275
276 %post
277 %_create_ssl_certificate %{name} -b -g %{name}
278 %_tmpfilescreate %{name}
279 %_post_service %{name}
280
281 %postun
282 %_postun_userdel %{name}
283 %_postun_groupdel %{name}
284
285 %clean
286 rm -rf %{buildroot}
287
288 %files
289 %defattr(-,root,root)
290 %dir %{_docdir}/%{name}
291 %dir %{_docdir}/%{name}-%{version}
292 %doc %{_docdir}/%{name}-%{version}
293 %{_docdir}/%{name}/COPYING
294 %{_docdir}/%{name}/README
295 %{_docdir}/%{name}/README.urpmi
296 %dir %attr(750,root,ejabberd) %{_sysconfdir}/ejabberd
297 %attr(750,root,ejabberd) %{_sysconfdir}/sysconfig/ejabberd
298 %attr(640,root,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberd.cfg
299 %attr(640,root,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/inetrc
300 %attr(640,root,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberdctl.cfg
301 %{_unitdir}/%{name}.service
302 %{_tmpfilesdir}/%{name}.conf
303 %{_sbindir}/ejabberd
304 %config(noreplace) %{_sysconfdir}/pam.d/%{name}
305 %config(noreplace) %{_sysconfdir}/pam.d/ejabberdctl
306 %config(noreplace) %{_sysconfdir}/security/console.apps/ejabberdctl
307 %{_bindir}/ejabberdctl
308 %attr(550,root,ejabberd) %{_sbindir}/ejabberdctl
309 %dir %{_libdir}/ejabberd
310 %dir %{_libdir}/ejabberd/ebin
311 %dir %{_libdir}/ejabberd/priv
312 %{_libdir}/ejabberd/ebin/*
313 %{_libdir}/ejabberd/priv/*
314 %config(noreplace) %{_sysconfdir}/logrotate.d/ejabberd
315 %attr(-,ejabberd,ejabberd) /var/lib/ejabberd
316 %attr(-,ejabberd,ejabberd) /var/log/ejabberd
317
318 %files devel
319 %defattr(-,root,root)
320 %{_libdir}/ejabberd/include
321
322 %files doc
323 %defattr(-,root,root)
324 %{_docdir}/%{name}
325 %exclude %{_docdir}/%{name}/COPYING
326 %exclude %{_docdir}/%{name}/README
327 %exclude %{_docdir}/%{name}/README.urpmi

  ViewVC Help
Powered by ViewVC 1.1.30