Compile ejabberd v14 RPM on CentOS 7
At the time of writing there was no ejabberd RPM for EL7/CentOS7. The strategy was to take the version from Fedora 22 (rawhide) and generate a binary RPM. The issues encourntered related to compiling and packaging the documentation:
- EL7 doesn't have a 'hevea' package (easily compiled)
- EL7 doesn't have a 'texlive-comment' package
RPMBuild Prerequisites
Install EPEL repository (for erlang) and compilation dependencies:
# rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm # yum install rpm-build expat-devel openssl-devel pam-devel libyaml-devel erlang erlang-rebar git autoconf automake gcc gcc-c++
Build
Take the the standard Fedora package and apply the following two fixes/patches:
- add a patch file to Makefile to handle no install documentation when it isn't built
- patch the spec file to add the patch above and change the docs directory
$ wget http://mirror.as24220.net/pub/fedora/linux/development/rawhide/source/SRPMS/e/ejabberd-14.07-6.fc22.src.rpm $ rpm -ivh ejabberd-14.07-6.fc22.src.rpm $ ... apply fixes... $ rpmbuild -ba ~/rpmbuild/SPECS/ejabberd.spec
Install
To install the binary RPM:
# yum install http://files.lucidsolutions.co.nz/linux/centos/ejabberd-el7/ejabberd-14.07-6.el7.centos.x86_64.rpm
Hevea
The hevea RPM from Fedora was built but the 'texlive-comment' dependency was still unresolved.
# yum install 'tex(latex)' ocaml $ wget http://mirror.as24220.net/pub/fedora/linux/development/rawhide/source/SRPMS/h/hevea-2.18-1.fc22.src.rpm $ rpmbuild --rebuild hevea-2.18-1.fc22.src.rpm # yum localinstall ~build/rpmbuild/RPMS/x86_64/hevea-2.18-1.el7.centos.x86_64.rpm
Links
- http://files.lucidsolutions.co.nz/linux/centos/ejabberd-el7/
- http://repo.joomhosting.eu/centos/7/SRPMS/
Appendices
Makefile patch
$ cat ../SOURCES/ejabberd-0012-no-install-docs.patch --- ejabberd-14.07/Makefile.in 2014-12-06 13:37:03.052357334 +1300 +++ ejabberd-14.07-1/Makefile.in 2014-12-06 13:39:12.558357334 +1300 @@ -180,8 +180,12 @@ # # Documentation $(INSTALL) -d $(DOCDIR) - $(INSTALL) -m 644 doc/dev.html $(DOCDIR) - $(INSTALL) -m 644 doc/guide.html $(DOCDIR) + [ -f doc/dev.html ] \ + && $(INSTALL) -m 644 doc/dev.html $(DOCDIR) \ + || echo "No doc/dev.html was built" + [ -f doc/guide.html ] \ + && $(INSTALL) -m 644 doc/guide.html $(DOCDIR) \ + || echo "No doc/guide.html was built" $(INSTALL) -m 644 doc/*.png $(DOCDIR) [ -f doc/guide.pdf ] \ && $(INSTALL) -m 644 doc/guide.pdf $(DOCDIR) \
Spec patch
$ diff -u ejabberd.spec~f22 ejabberd.spec --- ejabberd.spec~f22 2014-11-15 00:46:19.000000000 +1300 +++ ejabberd.spec 2014-12-06 14:50:18.115357334 +1300 @@ -65,6 +65,7 @@ Patch10:ejabberd-0010-Enable-systemd-notification-if-available.patch Patch11: ejabberd-0011-aarch64.patch +Patch12: ejabberd-0012-no-install-docs.patch BuildRequires: expat-devel BuildRequires: openssl-devel >= 0.9.8 @@ -140,6 +141,7 @@ tar xvf %{S:14} %patch11 -p1 +%patch12 -p1 %build @@ -268,7 +270,7 @@ %files -%doc COPYING +%doc /usr/share/doc/ejabberd/COPYING %attr(750,ejabberd,ejabberd) %dir %{_sysconfdir}/ejabberd %attr(640,ejabberd,ejabberd) %config(noreplace) %{_sysconfdir}/ejabberd/ejabberd.yml @@ -314,15 +316,18 @@ %attr(750,ejabberd,ejabberd) %dir /var/log/ejabberd %files doc -%doc doc/*.html -%doc doc/*.png +%doc /usr/share/doc/ejabberd/*.html +%doc /usr/share/doc/ejabberd/*.png %if 0%{?_with_hevea} -%doc doc/*.pdf +%doc /usr/share/doc/ejabberd/*.pdf +%doc /usr/share/doc/ejabberd/*.txt %endif -%doc doc/*.txt %changelog +* Sat Dec 06 2014 Greg B <greg.brackley-rpmbuild-ejabberd@lucidsolutions.co.nz> +- Fix build on EL7 without hevea & texlive-comment support + * Fri Nov 14 2014 Dan HorĂ¡k <dan[at]danny.cz> - 14.07-6 - increase stack size for hevea on ppc64* (#1164209)