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
}