From c54d3544698d6e108bc1abacde36dbc07cd61799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=B8=D1=80=D0=B5=D1=86=D0=BA=D0=B8=D0=B9=20=D0=9C?= =?UTF-8?q?=D0=B8=D1=85=D0=B0=D0=B8=D0=BB?= Date: Thu, 3 Dec 2009 16:08:23 +0300 Subject: [PATCH] Modify initrd script for right detecting ejabberd by openrc. --- net-im/calculate-ejabberd/ChangeLog | 6 + net-im/calculate-ejabberd/Manifest | 4 +- .../calculate-ejabberd-2.0.5-r3.ebuild | 157 ++++++++++++++++++ .../files/ejabberd-2.0.5-r3.initd | 67 ++++++++ 4 files changed, 233 insertions(+), 1 deletion(-) create mode 100644 net-im/calculate-ejabberd/calculate-ejabberd-2.0.5-r3.ebuild create mode 100644 net-im/calculate-ejabberd/files/ejabberd-2.0.5-r3.initd diff --git a/net-im/calculate-ejabberd/ChangeLog b/net-im/calculate-ejabberd/ChangeLog index 9cb927900..e576cdc9b 100644 --- a/net-im/calculate-ejabberd/ChangeLog +++ b/net-im/calculate-ejabberd/ChangeLog @@ -2,6 +2,12 @@ # Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ +*calculate-ejabberd-2.0.5-r3 (03 Dec 2009) + + 03 Dec 2009; Mike Hirecky (mhiretskiy) + +calculate-ejabberd-2.0.5-r3.ebuild, +files/ejabberd-2.0.5-r3.initd: + Modify initd script for right detecting by openrc. + *calculate-ejabberd-2.0.5-r2 (01 Dec 2009) 01 Dec 2009; Mike Hirecky (mhiretskiy) diff --git a/net-im/calculate-ejabberd/Manifest b/net-im/calculate-ejabberd/Manifest index c17df1116..01ad39036 100644 --- a/net-im/calculate-ejabberd/Manifest +++ b/net-im/calculate-ejabberd/Manifest @@ -7,6 +7,7 @@ AUX ejabberd-2.0.2.confd 840 RMD160 5227a3fbb0d0c8bffd8a5537003f965f1fb73582 SHA AUX ejabberd-2.0.2.initd 1134 RMD160 b5d3a5a50069be713511ebd37f9eab07dab33371 SHA1 0cd2c3bd44c1923014c1cdd84edfb56ddb11bdc2 SHA256 8b2c50bc80b5b0700195c79a4eaa6f68549fd63310b584c2e86d951c116e14de AUX ejabberd-2.0.5-erlang-13.patch 16877 RMD160 4b8924f5b37de85823dec539523e7800c394bc7c SHA1 663ffc03f29613d695589c199222bc0382a24c76 SHA256 3d5cb7c163647580e1776a4e31ca3f8e03b1b411288b8273c861d17db5fa1e4a AUX ejabberd-2.0.5-r1.initd 1438 RMD160 cef00b2ed6a0bf8eb791485853824fd42f2441e4 SHA1 da3fcc19ef60ecfaf27d948e27b5756f5bb1f83e SHA256 24a18be96ed3c22b1ac0ac3f9f89995a5aea0efcd4e825b9d668d98d1a96951b +AUX ejabberd-2.0.5-r3.initd 1622 RMD160 a9253f3c9621a3751d1ec7ce2069e4fbf9ebef3e SHA1 7cc0f60b530bdceff4bef6163a5d46e116567f81 SHA256 e0b93d0e236c7f3130db6a689f05129af0e5f417d4d7f6a6a9efa73f34f7183a AUX ejabberd-2.0.5.confd 841 RMD160 5e01a2b13e88f9f799386304f66d25ff1146a9cf SHA1 420fba1888c8a5fcaef47f59b9518a4a9ce36b6f SHA256 12719cadf9d20b8d36bc299c41f6e1a15ccd545048859e9e878706308d691dde AUX ejabberd-2.0.5.initd 1432 RMD160 531cc4634e9e953fa901a59b301ee9f09beab29e SHA1 89f9535545d25eb89572a6d630f01c58366b499a SHA256 b6c312b148b5b833ebd69f1429f302bb51f0852074530600aadbbe49733115f1 AUX ejabberd-wrapper-2.0.2.template 1273 RMD160 7ec1a86be5df671cb2ce54705de482ca1a172974 SHA1 ec412773c7913d8cfa59e6dcd330242268e60959 SHA256 96dcdca694fbe26b1098007d9e33361812a0ed532894e417155c0ac973bcdf6f @@ -25,5 +26,6 @@ EBUILD calculate-ejabberd-2.0.2-r3.ebuild 5073 RMD160 b37dd12707fc6ce6a0b16c2354 EBUILD calculate-ejabberd-2.0.2.ebuild 4955 RMD160 392007636ef070def316e5d62c5d02c05ef21b51 SHA1 6382ac2f5b11cf10ac1e5a18928726ca140aa2c8 SHA256 6f6e10f69f66bf2859fc54f794f015809af35079245bbde1000b944ccd369e2c EBUILD calculate-ejabberd-2.0.5-r1.ebuild 4408 RMD160 027a310d6764d532311a11196e2ae24e39fca89d SHA1 cd015c9681cc40d8aa6d7a64fad55d28aff3cdec SHA256 e88f72100bb53dd596f7812e3f93e8e66d637580b8c461ca7e6b294a3eb55ae7 EBUILD calculate-ejabberd-2.0.5-r2.ebuild 4531 RMD160 e74c8cbe4c281c6e8cf6c97af369b23a3d8f2dee SHA1 a10f29e6247970885fb769448912d3837e58a8d6 SHA256 8a47d5cdc7f7af186efbcf29e269a11b9522d0956734ee73962aeb155b0950d5 +EBUILD calculate-ejabberd-2.0.5-r3.ebuild 4531 RMD160 f1cc290794eadbdbc21f83e480884d6e8910f98d SHA1 0dabba97bbcb7fcdca18856f3ca4ae5a172f403c SHA256 32580f3416e1e5ddfc75bd4367fed3d6c2630a16020e0ba68905a9be89c296b2 EBUILD calculate-ejabberd-2.0.5.ebuild 4407 RMD160 6a86556378ed61909e8ba6d04bbc4a8213265eb1 SHA1 db31820f036967ba0c4a020ae61ed5398d8eab5b SHA256 24b5519bf7d7ea896a5d498497a254695676c6b7b6aa0c2d15169f3e6c45aa94 -MISC ChangeLog 365 RMD160 3cb17835e7346bb43f65250d39d3172a1cacc257 SHA1 0b1cdfc1061dd1d728335882bad84d884bc5bba7 SHA256 17d7d71575171a95625fe589a4f9614046415e33eccb9c21032d000c809685e3 +MISC ChangeLog 593 RMD160 26376b6cb9fcb875c44160be8bb2ec994c00c79f SHA1 8517cfc569635ff09cf5cb36487826b67c36cb53 SHA256 063242bcb4b7ded9ffe7be363d52433b4b93a66c60a3bd7676ce0bb06c0c9858 diff --git a/net-im/calculate-ejabberd/calculate-ejabberd-2.0.5-r3.ebuild b/net-im/calculate-ejabberd/calculate-ejabberd-2.0.5-r3.ebuild new file mode 100644 index 000000000..2ddc2701e --- /dev/null +++ b/net-im/calculate-ejabberd/calculate-ejabberd-2.0.5-r3.ebuild @@ -0,0 +1,157 @@ +# Copyright 1999-2009 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-im/ejabberd/ejabberd-2.0.5.ebuild,v 1.1 2009/04/09 05:40:39 pva Exp $ + +inherit eutils multilib + +JABBER_ETC="/etc/jabber" +JABBER_RUN="/var/run/jabber" +JABBER_SPOOL="/var/spool/jabber" +JABBER_LOG="/var/log/jabber" + +JABBER_NAME="ejabberd" +MY_PV=${PV} +MY_PR=${PR} +MY_P=${JABBER_NAME}-${MY_PV} +MY_PF=${JABBER_NAME}-${MY_PV}-${MY_PR} + +DESCRIPTION="The Erlang Jabber Daemon" +HOMEPAGE="http://www.ejabberd.im/" +SRC_URI="http://www.process-one.net/downloads/ejabberd/${PV}/${MY_P}.tar.gz" +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~x86" +IUSE="debug mod_irc mod_muc mod_pubsub ldap odbc pam ssl web zlib" + +DEPEND=">=net-im/jabber-base-0.01 + >=dev-libs/expat-1.95 + >=dev-lang/erlang-11.2.5 + odbc? ( dev-db/unixODBC ) + ldap? ( =net-nds/openldap-2* ) + ssl? ( >=dev-libs/openssl-0.9.8e ) + zlib? ( sys-libs/zlib )" +RDEPEND="${DEPEND}" + +PROVIDE="virtual/jabber-server" + +S=${WORKDIR}/${MY_P}/src + +src_unpack() { + unpack ${A} + cd "${S}" + + # make ejabberd working with erlang-13 + rm ram_file_io_server.erl + epatch "${FILESDIR}/ejabberd-2.0.5-erlang-13.patch" + + # mod_shared_roster_ldap.patch + epatch "${FILESDIR}/mod_shared_roster_ldap.patch" + # mod_logxml.patch + epatch "${FILESDIR}/mod_logxml.patch" + + # get rid of the prefix + sed -i -e "s/\\@prefix\\@//" "${S}/Makefile.in" \ + || die "cannot sed Makefile.in" + # we want ejabberdctl in /usr/sbin not /sbin !!! + sed -i -e "s/\\/sbin/\\/usr\\/sbin/" "${S}/Makefile.in" \ + || die "cannot sed Makefile.in" +} + +src_compile() { + econf --prefix=/ \ + $(use_enable mod_irc) \ + $(use_enable ldap eldap) \ + $(use_enable mod_muc) \ + $(use_enable mod_pubsub) \ + $(use_enable ssl tls) \ + $(use_enable web) \ + $(use_enable odbc) \ + $(use_enable zlib ejabberd_zlib) \ + $(use_enable pam) \ + || die "econf failed" + + if useq debug; then + emake ejabberd_debug=true || die "compiling ejabberd core failed" + else + emake || die "compiling ejabberd core failed" + fi +} + +src_install() { + make \ + DESTDIR="${D}" \ + EJABBERDDIR="${D}/usr/$(get_libdir)/erlang/lib/${P}" \ + ETCDIR="${D}${JABBER_ETC}" \ + LOGDIR="${D}${JABBER_LOG}" \ + install || die "install failed" + + # remove the default ejabberdctl as we use our own + rm "${D}/sbin/ejabberdctl" + + insinto ${JABBER_ETC} + + chown -R jabber:jabber "${D}${JABBER_ETC}" + chown -R jabber:jabber "${D}${JABBER_LOG}" + chown -R jabber:jabber "${D}/usr/$(get_libdir)/erlang/lib/${P}" + + if useq ssl ; then + doins "${FILESDIR}/ssl.cnf" + newins "${FILESDIR}/self-cert-v2.sh" self-cert.sh + fi + + # Pam helper module permissions + # http://www.process-one.net/docs/ejabberd/guide_en.html + if useq pam; then + chown root:jabber "${D}"/usr/lib/erlang/lib/${P}/priv/bin/epam + chmod 4750 "${D}"/usr/lib/erlang/lib/${P}/priv/bin/epam + fi + + cd "${WORKDIR}/${MY_P}/doc" + dodoc "release_notes_${MY_PV}.txt" + dohtml *.{html,png} + + # set up /usr/sbin/ejabberd wrapper + cat "${FILESDIR}/ejabberd-wrapper-${MY_PV}.template" \ + | sed -e "s/\@libdir\@/$(get_libdir)/g" -e "s/\@version\@/${PV}/g" \ + > "${T}/ejabberd" + exeinto /usr/sbin + doexe "${T}/ejabberd" + + # set up /usr/sbin/ejabberdctl wrapper + cat "${FILESDIR}/ejabberdctl-wrapper-${MY_PV}.template" \ + | sed -e "s/\@libdir\@/$(get_libdir)/g" -e "s/\@version\@/${PV}/g" \ + > "${T}/ejabberdctl" + doexe "${T}/ejabberdctl" + + dodir /var/lib/ejabberd + + newinitd "${FILESDIR}/${MY_P}-r3.initd" ${JABBER_NAME} + newconfd "${FILESDIR}/${MY_P}.confd" ${JABBER_NAME} + + # 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" + + # 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" + fi +} + +pkg_postinst() { + elog "For configuration instructions, please see" + elog "/usr/share/doc/${PF}/html/guide.html, or the online version at" + elog "http://www.process-one.net/en/projects/ejabberd/docs/guide_en.html" + if useq ssl ; then + if [ ! -e /etc/jabber/ssl.pem ]; then + elog "Please edit ${JABBER_ETC}/ssl.cnf and run ${JABBER_ETC}/self-cert.sh" + elog "Ejabberd may refuse to start without an SSL certificate" + fi + fi + if ! useq web ; then + elog "The web USE flag is off, this has disabled the web admin interface." + fi +} diff --git a/net-im/calculate-ejabberd/files/ejabberd-2.0.5-r3.initd b/net-im/calculate-ejabberd/files/ejabberd-2.0.5-r3.initd new file mode 100644 index 000000000..eb94ce8e0 --- /dev/null +++ b/net-im/calculate-ejabberd/files/ejabberd-2.0.5-r3.initd @@ -0,0 +1,67 @@ +#!/sbin/runscript +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-im/ejabberd/files/ejabberd-2.0.2.initd,v 1.1 2008/08/03 16:19:05 caleb Exp $ + +opts="${opts} reload" + +depend() { + use dns slapd + need net + provide jabber-server +} + +checkconfig() { + if [ ! -e /etc/jabber/ejabberd.cfg ] ; then + eerror "You need a /etc/jabber/ejabberd.cfg file to run ejabberd" + return 1 + fi +} + +start() { + checkconfig || return 1 + ebegin "Starting ejabberd" + # the process name of beam is different depending whether smp is used. + # set it explicitly so start-stop-daemon works + case "$HAVE_SMP" in + "1"|"true"|"yes") + BEAMNAME="beam.smp" + SMPOPT="enable" + ;; + *) + BEAMNAME="beam" + SMPOPT="disable" + ;; + esac + cd /var/lib/ejabberd + PIDFILE=/var/run/jabber/ejabber.pid + start-stop-daemon --start --pidfile $PIDFILE --quiet --chuid jabber:jabber \ + --name $BEAMNAME \ + --exec /usr/sbin/ejabberd -- -detached -noinput -smp $SMPOPT + # find pid of ejabberd process + ps axo pid,cmd | sed -nr "/${BEAMNAME}.*ejabberd/ {/delsed/d;s/^\s*([0-9]+).*/\1/p}" >$PIDFILE + eend $? +} + +stop() { + ebegin "Stopping ejabberd" + /usr/sbin/ejabberdctl stop + RES=$? + sleep 1 + if ps ax | grep "epmd -daemon" | grep -v "grep" >/dev/null; + then + kill `ps ax | grep "epmd -daemon" | grep -v "grep" | awk '{print $1;}'` + fi + if ps ax | grep "ejabber" | grep "beam" >/dev/null; + then + kill `ps ax | grep "ejabber" | grep "beam" | awk '{print $1}'` + fi + eend $RES +} + +reload() { + ebegin "Reloading ejabberd" + /usr/sbin/ejabberdctl reopen-log + eend $? +} +