--- ejabberd-2.1.0.ebuild.old 2009-11-15 23:48:35.000000000 +0300 +++ ejabberd-2.1.0.ebuild 2009-11-15 23:47:30.000000000 +0300 @@ -10,6 +10,7 @@ JABBER_RUN="/var/run/jabber" JABBER_SPOOL="/var/spool/jabber" JABBER_LOG="/var/log/jabber" +JABBER_DOC="/usr/share/doc/${PF}" DESCRIPTION="The Erlang Jabber Daemon" HOMEPAGE="http://www.ejabberd.im/" @@ -17,7 +18,9 @@ LICENSE="GPL-2" SLOT="0" KEYWORDS="~amd64 ~arm ~ia64 ~ppc ~x86" -IUSE="captcha debug mod_irc mod_muc mod_proxy65 mod_pubsub ldap odbc pam ssl web zlib" + +EJABBERD_MODULES="mod_irc mod_muc mod_proxy65 mod_pubsub" +IUSE="captcha debug ldap odbc pam ssl web zlib ${EJABBERD_MODULES}" DEPEND=">=net-im/jabber-base-0.01 >=dev-libs/expat-1.95 @@ -51,8 +54,8 @@ } src_compile() { - - emake $(use debug && echo debug=true ejabberd_debug=true) || die "compiling ejabberd core failed" + emake $(use debug && echo debug=true ejabberd_debug=true) \ + || die "compiling ejabberd core failed" } src_install() { @@ -64,56 +67,85 @@ SPOOLDIR="${D}${JABBER_SPOOL}" \ install || die "install failed" - insinto ${JABBER_ETC} - if use ssl; then - doins "${FILESDIR}/ssl.cnf" - newins "${FILESDIR}/self-cert-v2.sh" self-cert.sh + insinto "/etc/ssl" + + newins "${FILESDIR}"/ssl.cnf ejabberd.cnf \ + || die "Installing ssl.conf failed" + + exeinto "${JABBER_DOC}/ssl" + + cat "${FILESDIR}"/self-cert-v3.sh | \ + sed -e "s:@SSL_CERT@:${JABBER_ETC}/ssl.pem:" \ + -e "s:@SSL_CONFIG@:/etc/ssl/ejabberd.cnf:" \ + > "${T}"/ssl-cert.sh || die "sed for self-cert.sh failed" + + doexe "${T}/ssl-cert.sh" || die "installing self-cert.sh failed" fi # Pam helper module permissions # http://www.process-one.net/docs/ejabberd/guide_en.html if use pam; then pamd_mimic_system xmpp auth account || die "Cannot create pam.d file" - fperms 4750 "/usr/$(get_libdir)/erlang/lib/${P}/priv/bin/epam" || die "Cannot adjust epam permissions" + + fperms 4750 "/usr/$(get_libdir)/erlang/lib/${P}/priv/bin/epam" \ + || die "Cannot adjust epam permissions" fi cd "${WORKDIR}/${P}/doc" - dodoc "release_notes_${PV%%_rc*}.txt" + dodoc "release_notes_${PV%%_rc*}.txt" \ + || die "Installing release_notes failed" + rm "${D}"/usr/share/doc/"${PF}"/html/*.txt - chmod -x "${D}"/usr/share/doc/"${PF}"/html/* + chmod -x "${D}"/usr/share/doc/"${PF}"/html/* \ + || die "Removing executable bit from htmls failed" + + exeinto /usr/sbin # set up /usr/sbin/ejabberd wrapper cat "${FILESDIR}/ejabberd-wrapper-3.template" \ - | sed -e "s/\@libdir\@/$(get_libdir)/g" -e "s/\@version\@/${PV}/g" -e "s/\@doc\@/${PF}/g" \ - > "${T}/ejabberd" - exeinto /usr/sbin - doexe "${T}/ejabberd" || die + | sed -e "s/\@libdir\@/$(get_libdir)/g" \ + -e "s/\@version\@/${PV}/g" \ + -e "s/\@doc\@/${PF}/g" \ + > "${T}/ejabberd" + + doexe "${T}/ejabberd" || die "Installing ejabberd runscript failed" # set up /usr/sbin/ejabberdctl wrapper cat "${FILESDIR}/ejabberdctl-wrapper-3.template" \ - | sed -e "s:\@libdir\@:$(get_libdir):g" -e "s:\@version\@:${PV}:g" \ - > "${T}/ejabberdctl" - doexe "${T}/ejabberdctl" + | sed -e "s:\@libdir\@:$(get_libdir):g" \ + -e "s:\@version\@:${PV}:g" \ + > "${T}/ejabberdctl" + + doexe "${T}/ejabberdctl" || die "Installing ejabberctl failed" dodir /var/lib/ejabberd - newinitd "${FILESDIR}/${PN}-2.initd" ${PN} || die "Cannot install init.d script" - newconfd "${FILESDIR}/${PN}-2.confd" ${PN} || die "Cannot install conf.d file" + newinitd "${FILESDIR}/${PN}-2.initd" ${PN} \ + || die "Cannot install init.d script" + newconfd "${FILESDIR}/${PN}-2.confd" ${PN} \ + || die "Cannot install conf.d file" # fix up the ssl cert paths in /etc/jabber/ejabberd.cfg to use the cert # that would be generated by /etc/jabber/self-cert.sh - sed -i -e "s/\/path\/to\/ssl.pem/\/etc\/jabber\/ssl.pem/g" \ - "${D}${JABBER_ETC}/ejabberd.cfg" || die "Cannot sed ejabberd.cfg" + sed -e "s/\/path\/to\/ssl.pem/\/etc\/jabber\/ssl.pem/g" \ + -i "${D}${JABBER_ETC}/ejabberd.cfg" \ + || die "Cannot set default cert path into ejabberd.cfg" # correct path to captcha script in default ejabberd.cfg - sed -r 's|\{captcha_cmd,[[:space:]]*".+"\}|{captcha_cmd, "/usr/'$(get_libdir)'/erlang/lib/'${P}'/priv/bin/captcha.sh"}|' -i \ - "${D}${JABBER_ETC}/ejabberd.cfg" || die "Cannot sed ejabberd.cfg" + local captcha_path="/usr/$(get_libdir)/erlang/lib/${P}/priv/bin/captcha.sh" + local captcha_search='\{captcha_cmd,[[:space:]]*".+"\}' + local captcha_replace="{captcha_cmd, ${captcha_path}}" + + sed -r "s|${captcha_search}|${captcha_replace}|" -i \ + "${D}${JABBER_ETC}/ejabberd.cfg" \ + || die "Cannot set correct captcha path into ejabberd.cfg" # if mod_irc is not enabled, comment out the mod_irc in the default # ejabberd.cfg if ! use mod_irc; then - sed -i -e "s/{mod_irc,/%{mod_irc,/" \ - "${D}${JABBER_ETC}/ejabberd.cfg" || die "Cannot sed ejabberd.cfg" + sed -e "s/{mod_irc,/%{mod_irc,/" \ + -i "${D}${JABBER_ETC}/ejabberd.cfg" \ + || die "Cannot comment out mod_irc module into ejabberd.cfg" fi } @@ -124,7 +156,8 @@ if use ssl ; then if [ ! -e /etc/jabber/ssl.pem ]; then - elog "Please edit ${JABBER_ETC}/ssl.cnf and run ${JABBER_ETC}/self-cert.sh" + elog "Please edit ${JABBER_DOC}/ssl/ssl.cnf" + elog "and run ${JABBER_DOC}/ssl/self-cert.sh." elog "Ejabberd may refuse to start without an SSL certificate" fi fi