+++ /dev/null
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=5
-
-inherit eutils multilib pam ssl-cert systemd
-
-DESCRIPTION="The Erlang Jabber Daemon"
-HOMEPAGE="http://www.ejabberd.im/ https://github.com/processone/ejabberd/"
-SRC_URI="https://dev.gentoo.org/~radhermit/dist/${P}.tar.xz"
-# upstream tarball missing bundled erlang libs that are fetched via git
-#SRC_URI="https://www.process-one.net/downloads/downloads-action.php?file=/${PN}/${PV}/${P}.tgz -> ${P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~amd64 ~arm ~ia64 ~ppc ~sparc ~x86"
-EJABBERD_MODULES="mod_bosh mod_irc mod_muc mod_proxy65 mod_pubsub"
-IUSE="captcha debug elixir ldap mysql nls odbc pam postgres riak redis tools zlib ${EJABBERD_MODULES}"
-
-DEPEND=">=net-im/jabber-base-0.01
- >=dev-libs/expat-1.95
- >=dev-libs/libyaml-0.1.4
- >=dev-lang/erlang-15.2[ssl]
- odbc? ( dev-db/unixODBC )
- ldap? ( =net-nds/openldap-2* )
- >=dev-libs/openssl-0.9.8e:=
- captcha? ( media-gfx/imagemagick[truetype,png] )
- zlib? ( >=sys-libs/zlib-1.2.3 )"
-RDEPEND="${DEPEND}
- >=sys-apps/shadow-4.1.4.2-r3
- pam? ( virtual/pam )"
-
-# paths in net-im/jabber-base
-JABBER_ETC="${EPREFIX}/etc/jabber"
-#JABBER_RUN="/var/run/jabber"
-JABBER_SPOOL="${EPREFIX}/var/spool/jabber"
-JABBER_LOG="${EPREFIX}/var/log/jabber"
-JABBER_DOC="${EPREFIX}/usr/share/doc/${PF}"
-
-src_prepare() {
- epatch "${FILESDIR}"/${P}-ejabberdctl.patch
-
- # don't install release notes (we'll do this manually)
- sed '/install .* [.][.]\/doc\/[*][.]txt $(DOCDIR)/d' -i Makefile.in || die
- # Set correct paths
- sed -e "/^EJABBERDDIR[[:space:]]*=/{s:ejabberd:${PF}:}" \
- -e "/^ETCDIR[[:space:]]*=/{s:@sysconfdir@/ejabberd:${JABBER_ETC}:}" \
- -e "/^LOGDIR[[:space:]]*=/{s:@localstatedir@/log/ejabberd:${JABBER_LOG}:}" \
- -e "/^SPOOLDIR[[:space:]]*=/{s:@localstatedir@/lib/ejabberd:${JABBER_SPOOL}:}" \
- -i Makefile.in || die
- sed -e "/EJABBERDDIR=/{s:ejabberd:${PF}:}" \
- -e "s|\(ETC_DIR=\){{sysconfdir}}.*|\1${JABBER_ETC}|" \
- -e "s|\(LOGS_DIR=\){{localstatedir}}.*|\1${JABBER_LOG}|" \
- -e "s|\(SPOOL_DIR=\){{localstatedir}}.*|\1${JABBER_SPOOL}|" \
- -i ejabberdctl.template || die
-
- # fix up the ssl cert paths in ejabberd.yml to use our cert and
- # also use the correct pam service name
- sed -e "s:/path/to/ssl.pem:/etc/ssl/ejabberd/server.pem:g" \
- -e "s:pamservicename:xmpp:" \
- -i ejabberd.yml.example || die
-
- # correct path to captcha script in default ejabberd.yml
- sed -e 's|\({captcha_cmd,[[:space:]]*"\).\+"}|\1/usr/'$(get_libdir)'/erlang/lib/'${P}'/priv/bin/captcha.sh"}|' \
- -i ejabberd.yml.example || die
-
- # disable mod_irc in ejabberd.yml
- if ! use mod_irc; then
- sed -e "s/{mod_irc,/%{mod_irc,/" \
- -i ejabberd.yml.example || die
- fi
-
- epatch_user
-}
-
-src_configure() {
- econf \
- --docdir="${EPREFIX}/usr/share/doc/${PF}/html" \
- --libdir="${EPREFIX}/usr/$(get_libdir)/erlang/lib/" \
- $(use_enable tools) \
- $(use_enable odbc) \
- $(use_enable mysql) \
- $(use_enable postgres pgsql) \
- $(use_enable pam) \
- $(use_enable zlib) \
- $(use_enable riak) \
- $(use_enable redis) \
- $(use_enable mod_bosh json) \
- $(use_enable nls iconv) \
- $(use_enable elixir) \
- $(use_enable debug) \
- --enable-lager \
- --enable-user=jabber
-
- # run configure scripts for all prefetched deps
- ./rebar get-deps || die
-}
-
-src_compile() {
- emake $(use debug && echo debug=true ejabberd_debug=true)
-}
-
-src_install() {
- default
-
- # Pam helper module permissions
- # https://www.process-one.net/docs/ejabberd/guide_en.html#pam
- if use pam; then
- pamd_mimic_system xmpp auth account || die "Cannot create pam.d file"
- fowners root:jabber "/usr/$(get_libdir)/erlang/lib/${PF}/priv/bin/epam"
- fperms 4750 "/usr/$(get_libdir)/erlang/lib/${PF}/priv/bin/epam"
- fi
-
- newinitd "${FILESDIR}"/${PN}-3.initd ${PN}
- newconfd "${FILESDIR}"/${PN}-3.confd ${PN}
- systemd_dounit "${FILESDIR}"/${PN}.service
- systemd_dotmpfilesd "${FILESDIR}"/${PN}.tmpfiles.conf
-
- insinto /etc/logrotate.d
- newins "${FILESDIR}"/${PN}.logrotate ${PN}
-}
-
-pkg_postinst() {
- if [[ -z ${REPLACING_VERSIONS} ]] ; then
- 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/ejabberd/docs/guide_en/"
- else
- elog "Ejabberd now defaults to using a YAML format for its config file."
- elog "The old ejabberd.cfg file can be converted using the following instructions:"
- echo
- elog "1. Make sure all processes related to the previous version of ejabberd aren't running."
- elog " Usually this just means the ejabberd daemon and possibly the pam-related processes"
- elog " (epmd and epam) if pam support is enabled."
- elog "2. Run \`ejabberdctl start\` with sufficient permissions. Note that this can fail to"
- elog " start ejabberd properly for various reasons. Check ejabberd's main log file"
- elog " at /var/log/jabber/ejabberd.log to confirm it started successfully."
- elog "3. Run \`ejabberdctl convert_to_yaml /etc/jabber/ejabberd.cfg /etc/jabber/ejabberd.yml.new\`"
- elog " with sufficient permissions, edit and rename /etc/jabber/ejabberd.yml.new to"
- elog " /etc/jabber/ejabberd.yml, and finally restart ejabberd with the new config file."
- echo
- fi
-
- SSL_ORGANIZATION="${SSL_ORGANIZATION:-Ejabberd XMPP Server}"
- install_cert /etc/ssl/ejabberd/server
- # Fix ssl cert permissions bug #369809
- chown root:jabber "${EROOT}/etc/ssl/ejabberd/server.pem"
- chmod 0440 "${EROOT}/etc/ssl/ejabberd/server.pem"
-}
+++ /dev/null
-Set SHELL since the generic jabber user used on Gentoo for jabber servers
-doesn't have a valid shell set by default and fix EXEC_CMD otherwise it fails
-with "This account is currently not available" again due to jabber not having
-a valid shell.
-
-Also, workaround the assumption that jabber's $HOME is a directory when instead
-it defaults to /dev/null on Gentoo.
-
---- ejabberd-15.03/ejabberdctl.template
-+++ ejabberd-15.03/ejabberdctl.template
-@@ -15,6 +15,7 @@
- IEX={{bindir}}/iex
- EPMD={{bindir}}/epmd
- INSTALLUSER={{installuser}}
-+SHELL=/bin/sh
-
- # Compatibility in ZSH
- #setopt shwordsplit 2>/dev/null
-@@ -25,11 +26,11 @@
- for GID in `id -G`; do
- if [ $GID -eq 0 ] ; then
- INSTALLUSER_HOME=$(getent passwd "$INSTALLUSER" | cut -d: -f6)
-- if [ -n "$INSTALLUSER_HOME" ] && [ ! -d "$INSTALLUSER_HOME" ] ; then
-+ if [ -n "$INSTALLUSER_HOME" ] && [ ! -e "$INSTALLUSER_HOME" ] ; then
- mkdir -p "$INSTALLUSER_HOME"
- chown "$INSTALLUSER" "$INSTALLUSER_HOME"
- fi
-- EXEC_CMD="su $INSTALLUSER -c"
-+ EXEC_CMD="su $INSTALLUSER -p -c"
- fi
- done
- if [ `id -g` -eq `id -g $INSTALLUSER` ] ; then
-@@ -111,6 +112,7 @@
- DATETIME=`date "+%Y%m%d-%H%M%S"`
- ERL_CRASH_DUMP=$LOGS_DIR/erl_crash_$DATETIME.dump
- ERL_INETRC=$ETC_DIR/inetrc
-+HOME=$SPOOL_DIR
-
- # define erl parameters
- ERL_OPTIONS=$(echo $ERL_OPTIONS | sed 's/ /\\ /g')
-@@ -167,6 +169,8 @@
- export ERL_INETRC
- export ERL_MAX_PORTS
- export ERL_MAX_ETS_TABLES
-+export HOME
-+export SHELL
-
- # start server
- start()