commit:     0912204c84b553560a7a48ad1393b7906cccf351
Author:     Amadeusz Żołnowski <aidecoe <AT> gentoo <DOT> org>
AuthorDate: Sun May 28 18:06:04 2017 +0000
Commit:     Amadeusz Piotr Żołnowski <aidecoe <AT> gentoo <DOT> org>
CommitDate: Sun May 28 18:06:26 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0912204c

net-im/ejabberd: Disable mod_irc if nls USE flag is disbled

mod_irc is only required for mod_irc. If nls support is disabled,
disable mod_irc in example configuration file and warn user if he/she
has mod_irc enabled in configuration. Otherwise ejabberd will fail to
start.

Gentoo-Bug: 603822
Package-Manager: Portage-2.3.5, Repoman-2.3.2

 net-im/ejabberd/ejabberd-16.09.ebuild    | 21 +++++++++++++++++++++
 net-im/ejabberd/ejabberd-17.01-r1.ebuild | 21 +++++++++++++++++++++
 net-im/ejabberd/ejabberd-17.01.ebuild    | 21 +++++++++++++++++++++
 net-im/ejabberd/ejabberd-17.04.ebuild    | 21 +++++++++++++++++++++
 4 files changed, 84 insertions(+)

diff --git a/net-im/ejabberd/ejabberd-16.09.ebuild 
b/net-im/ejabberd/ejabberd-16.09.ebuild
index 5621156189e..99e4a3aabcc 100644
--- a/net-im/ejabberd/ejabberd-16.09.ebuild
+++ b/net-im/ejabberd/ejabberd-16.09.ebuild
@@ -107,6 +107,15 @@ customize_epam_wrapper() {
                || die 'failed to install epam-wrapper'
 }
 
+# Disable mod_irc in example configuration file.
+disable_mod_irc() {
+       local needs_iconv='needs dev-erlang/iconv (+nls USE flag)'
+       sed -r \
+               -e "s@^(\s*)(mod_irc\s*:.*$)@\1## \2 # ${needs_iconv}@" \
+               -i "${S}/ejabberd.yml.example" \
+               || die 'failed to modify example config'
+}
+
 # Check if there already exists a certificate.
 ejabberd_cert_exists() {
        local cert
@@ -138,6 +147,12 @@ get_ejabberd_path() {
        echo "/usr/$(get_libdir)/${P}"
 }
 
+# Check whether mod_irc is enabled in ejabberd configuration on target system.
+is_mod_irc_enabled() {
+       egrep '^(\s*)(mod_irc\s*:.*$)' \
+               "${EROOT%/}${JABBER_ETC}/ejabberd.yml"
+}
+
 # Make ejabberd.service for systemd from upstream provided template.
 make_ejabberd_service() {
        sed -r \
@@ -184,6 +199,7 @@ src_prepare() {
        make_ejabberd_service
        skip_docs
        adjust_config
+       use nls || disable_mod_irc
        customize_epam_wrapper "${FILESDIR}/epam-wrapper"
 
        # Fix bug #591862. ERL_LIBS should point directly to ejabberd directory
@@ -294,4 +310,9 @@ pkg_postinst() {
                chmod g+r "${EROOT%/}${epam_path}" \
                        || die "failed to correct ${epam_path} permissions"
        fi
+
+       if ! use nls && is_mod_irc_enabled; then
+               ewarn "nls support (dev-erlang/iconv) is required by mod_irc. 
Either rebuild ejabberd"
+               ewarn "with nls enabled or disable mod_irc in 
${EROOT%/}${JABBER_ETC}/ejabberd.yml."
+       fi
 }

diff --git a/net-im/ejabberd/ejabberd-17.01-r1.ebuild 
b/net-im/ejabberd/ejabberd-17.01-r1.ebuild
index 6ee9e157db6..7c2e9586ebd 100644
--- a/net-im/ejabberd/ejabberd-17.01-r1.ebuild
+++ b/net-im/ejabberd/ejabberd-17.01-r1.ebuild
@@ -108,6 +108,15 @@ customize_epam_wrapper() {
                || die 'failed to install epam-wrapper'
 }
 
+# Disable mod_irc in example configuration file.
+disable_mod_irc() {
+       local needs_iconv='needs dev-erlang/iconv (+nls USE flag)'
+       sed -r \
+               -e "s@^(\s*)(mod_irc\s*:.*$)@\1## \2 # ${needs_iconv}@" \
+               -i "${S}/ejabberd.yml.example" \
+               || die 'failed to modify example config'
+}
+
 # Check if there already exists a certificate.
 ejabberd_cert_exists() {
        local cert
@@ -139,6 +148,12 @@ get_ejabberd_path() {
        echo "/usr/$(get_libdir)/${P}"
 }
 
+# Check whether mod_irc is enabled in ejabberd configuration on target system.
+is_mod_irc_enabled() {
+       egrep '^(\s*)(mod_irc\s*:.*$)' \
+               "${EROOT%/}${JABBER_ETC}/ejabberd.yml"
+}
+
 # Make ejabberd.service for systemd from upstream provided template.
 make_ejabberd_service() {
        sed -r \
@@ -198,6 +213,7 @@ src_prepare() {
        make_ejabberd_service
        skip_docs
        adjust_config
+       use nls || disable_mod_irc
        customize_epam_wrapper "${FILESDIR}/epam-wrapper"
 
        rebar_fix_include_path fast_xml
@@ -299,4 +315,9 @@ pkg_postinst() {
        if ! ejabberd_cert_exists; then
                ejabberd_cert_install
        fi
+
+       if ! use nls && is_mod_irc_enabled; then
+               ewarn "nls support (dev-erlang/iconv) is required by mod_irc. 
Either rebuild ejabberd"
+               ewarn "with nls enabled or disable mod_irc in 
${EROOT%/}${JABBER_ETC}/ejabberd.yml."
+       fi
 }

diff --git a/net-im/ejabberd/ejabberd-17.01.ebuild 
b/net-im/ejabberd/ejabberd-17.01.ebuild
index a55828a551e..061059b6183 100644
--- a/net-im/ejabberd/ejabberd-17.01.ebuild
+++ b/net-im/ejabberd/ejabberd-17.01.ebuild
@@ -108,6 +108,15 @@ customize_epam_wrapper() {
                || die 'failed to install epam-wrapper'
 }
 
+# Disable mod_irc in example configuration file.
+disable_mod_irc() {
+       local needs_iconv='needs dev-erlang/iconv (+nls USE flag)'
+       sed -r \
+               -e "s@^(\s*)(mod_irc\s*:.*$)@\1## \2 # ${needs_iconv}@" \
+               -i "${S}/ejabberd.yml.example" \
+               || die 'failed to modify example config'
+}
+
 # Check if there already exists a certificate.
 ejabberd_cert_exists() {
        local cert
@@ -139,6 +148,12 @@ get_ejabberd_path() {
        echo "/usr/$(get_libdir)/${P}"
 }
 
+# Check whether mod_irc is enabled in ejabberd configuration on target system.
+is_mod_irc_enabled() {
+       egrep '^(\s*)(mod_irc\s*:.*$)' \
+               "${EROOT%/}${JABBER_ETC}/ejabberd.yml"
+}
+
 # Make ejabberd.service for systemd from upstream provided template.
 make_ejabberd_service() {
        sed -r \
@@ -185,6 +200,7 @@ src_prepare() {
        make_ejabberd_service
        skip_docs
        adjust_config
+       use nls || disable_mod_irc
        customize_epam_wrapper "${FILESDIR}/epam-wrapper"
 
        rebar_fix_include_path fast_xml
@@ -298,4 +314,9 @@ pkg_postinst() {
                chmod g+r "${EROOT%/}${epam_path}" \
                        || die "failed to correct ${epam_path} permissions"
        fi
+
+       if ! use nls && is_mod_irc_enabled; then
+               ewarn "nls support (dev-erlang/iconv) is required by mod_irc. 
Either rebuild ejabberd"
+               ewarn "with nls enabled or disable mod_irc in 
${EROOT%/}${JABBER_ETC}/ejabberd.yml."
+       fi
 }

diff --git a/net-im/ejabberd/ejabberd-17.04.ebuild 
b/net-im/ejabberd/ejabberd-17.04.ebuild
index 8b82f975af8..1cec62f2eba 100644
--- a/net-im/ejabberd/ejabberd-17.04.ebuild
+++ b/net-im/ejabberd/ejabberd-17.04.ebuild
@@ -108,6 +108,15 @@ customize_epam_wrapper() {
                || die 'failed to install epam-wrapper'
 }
 
+# Disable mod_irc in example configuration file.
+disable_mod_irc() {
+       local needs_iconv='needs dev-erlang/iconv (+nls USE flag)'
+       sed -r \
+               -e "s@^(\s*)(mod_irc\s*:.*$)@\1## \2 # ${needs_iconv}@" \
+               -i "${S}/ejabberd.yml.example" \
+               || die 'failed to modify example config'
+}
+
 # Check if there already exists a certificate.
 ejabberd_cert_exists() {
        local cert
@@ -139,6 +148,12 @@ get_ejabberd_path() {
        echo "/usr/$(get_libdir)/${P}"
 }
 
+# Check whether mod_irc is enabled in ejabberd configuration on target system.
+is_mod_irc_enabled() {
+       egrep '^(\s*)(mod_irc\s*:.*$)' \
+               "${EROOT%/}${JABBER_ETC}/ejabberd.yml"
+}
+
 # Make ejabberd.service for systemd from upstream provided template.
 make_ejabberd_service() {
        sed -r \
@@ -198,6 +213,7 @@ src_prepare() {
        make_ejabberd_service
        skip_docs
        adjust_config
+       use nls || disable_mod_irc
        customize_epam_wrapper "${FILESDIR}/epam-wrapper"
 
        rebar_fix_include_path fast_xml
@@ -300,4 +316,9 @@ pkg_postinst() {
        if ! ejabberd_cert_exists; then
                ejabberd_cert_install
        fi
+
+       if ! use nls && is_mod_irc_enabled; then
+               ewarn "nls support (dev-erlang/iconv) is required by mod_irc. 
Either rebuild ejabberd"
+               ewarn "with nls enabled or disable mod_irc in 
${EROOT%/}${JABBER_ETC}/ejabberd.yml."
+       fi
 }

Reply via email to