net-im/ejabberd: Disable mod_irc if nls USE flag is disbled
authorAmadeusz Żołnowski <aidecoe@gentoo.org>
Sun, 28 May 2017 18:06:04 +0000 (19:06 +0100)
committerAmadeusz Żołnowski <aidecoe@gentoo.org>
Sun, 28 May 2017 18:06:26 +0000 (19:06 +0100)
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
net-im/ejabberd/ejabberd-17.01-r1.ebuild
net-im/ejabberd/ejabberd-17.01.ebuild
net-im/ejabberd/ejabberd-17.04.ebuild

index 5621156189ea397836dd877b3960c11bf926363c..99e4a3aabcc2a2d416ad09b5e57890cc626766b5 100644 (file)
@@ -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
 }
index 6ee9e157db6b4c9596d413f857fb0df8e7bd8adc..7c2e9586ebdfc498a368caec98fd201d22ad71c7 100644 (file)
@@ -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
 }
index a55828a551ec495b8a02c3da0206f9e8e3ea541d..061059b61832344065a14a13e42a7df23edbc2eb 100644 (file)
@@ -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
 }
index 8b82f975af8769bc5d117146d02c64cbfc784495..1cec62f2eba28776478ae25e1d85cbfe847c3a30 100644 (file)
@@ -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
 }