summaryrefslogtreecommitdiff
path: root/net-im
diff options
context:
space:
mode:
authorFlorian Schmaus <flow@gentoo.org>2022-02-26 21:46:43 +0100
committerFlorian Schmaus <flow@gentoo.org>2022-02-26 21:46:43 +0100
commitfa0328d9ed0a32193aaf0df9ae19ea33d4317856 (patch)
tree9126f74d8a3a4ad4423b250e2bbbd24555525ece /net-im
parentnet-fs/s3fs: add 1.90 (diff)
downloadgentoo-fa0328d9ed0a32193aaf0df9ae19ea33d4317856.tar.gz
gentoo-fa0328d9ed0a32193aaf0df9ae19ea33d4317856.tar.bz2
gentoo-fa0328d9ed0a32193aaf0df9ae19ea33d4317856.zip
net-im/biboumi: add 9.0-r3 with fix for newer libexpat
Signed-off-by: Florian Schmaus <flow@gentoo.org>
Diffstat (limited to 'net-im')
-rw-r--r--net-im/biboumi/biboumi-9.0-r3.ebuild114
-rw-r--r--net-im/biboumi/files/biboumi-9.0-fix-namespace-separator.patch57
2 files changed, 171 insertions, 0 deletions
diff --git a/net-im/biboumi/biboumi-9.0-r3.ebuild b/net-im/biboumi/biboumi-9.0-r3.ebuild
new file mode 100644
index 000000000000..90caef48feda
--- /dev/null
+++ b/net-im/biboumi/biboumi-9.0-r3.ebuild
@@ -0,0 +1,114 @@
+# Copyright 2020-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+MY_PV="${PV/_/-}"
+
+DESCRIPTION="XMPP gateway to IRC"
+HOMEPAGE="https://biboumi.louiz.org/"
+SRC_URI="https://git.louiz.org/biboumi/snapshot/biboumi-${MY_PV}.tar.xz"
+
+LICENSE="ZLIB"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="+idn postgres +sqlite +ssl systemd udns"
+
+DEPEND="
+ dev-libs/expat
+ virtual/libiconv
+ sys-apps/util-linux
+ sqlite? ( dev-db/sqlite:3 )
+ postgres? ( dev-db/postgresql:* )
+ idn? ( net-dns/libidn:= )
+ udns? ( net-libs/udns )
+ ssl? ( dev-libs/botan:2= )
+ !ssl? ( dev-libs/libgcrypt )
+ systemd? ( sys-apps/systemd:= )
+"
+BDEPEND="dev-python/sphinx"
+RDEPEND="
+ ${DEPEND}
+ acct-user/biboumi
+"
+
+S="${WORKDIR}/${PN}-${MY_PV}"
+
+DOCS=( README.rst CHANGELOG.rst doc/user.rst )
+
+PATCHES=(
+ "${FILESDIR}/${PN}-9.0-fix-namespace-separator.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ -DSERVICE_USER="${PN}"
+ -DSERVICE_GROUP="${PN}"
+ )
+
+ # Account for biboumi's atypical configuration system.
+ if use systemd; then
+ mycmakeargs+=(-DWITH_SYSTEMD=yes)
+ else
+ mycmakeargs+=(-DWITHOUT_SYSTEMD=yes)
+ fi
+
+ if use idn; then
+ mycmakeargs+=(-DWITH_LIBIDN=yes)
+ else
+ mycmakeargs+=(-DWITHOUT_LIBIDN=yes)
+ fi
+
+ if use ssl; then
+ mycmakeargs+=(-DWITH_BOTAN=yes)
+ else
+ mycmakeargs+=(-DWITHOUT_BOTAN=yes)
+ fi
+
+ if use udns; then
+ mycmakeargs+=(-DWITH_UDNS=yes)
+ else
+ mycmakeargs+=(-DWITHOUT_UDNS=yes)
+ fi
+
+ if use sqlite; then
+ mycmakeargs+=(-DWITH_SQLITE3=yes)
+ else
+ mycmakeargs+=(-DWITHOUT_SQLITE3=yes)
+ fi
+
+ if use postgres; then
+ mycmakeargs+=(-DWITH_POSTGRESQL=yes)
+ else
+ mycmakeargs+=(-DWITHOUT_POSTGRESQL=yes)
+ fi
+
+ cmake_src_configure
+}
+
+src_compile() {
+ cmake_src_compile
+
+ cmake_build man
+}
+
+src_install() {
+ cmake_src_install
+
+ newinitd "${FILESDIR}/${PN}.initd" "${PN}"
+
+ insinto /etc/logrotate.d
+ newins "${FILESDIR}/${PN}.logrotate" "${PN}"
+
+ diropts --owner=biboumi --group=biboumi --mode=750
+ if use sqlite; then
+ keepdir /var/lib/biboumi
+ fi
+ keepdir /var/log/biboumi
+
+ insinto /etc/biboumi
+ insopts --group=biboumi --mode=640
+ newins conf/biboumi.cfg biboumi.cfg.example
+}
diff --git a/net-im/biboumi/files/biboumi-9.0-fix-namespace-separator.patch b/net-im/biboumi/files/biboumi-9.0-fix-namespace-separator.patch
new file mode 100644
index 000000000000..507382f66f67
--- /dev/null
+++ b/net-im/biboumi/files/biboumi-9.0-fix-namespace-separator.patch
@@ -0,0 +1,57 @@
+From 380abf66e930f5c4ead591014f31624d80a3151c Mon Sep 17 00:00:00 2001
+From: Florian Schmaus <flo@geekplace.eu>
+Date: Sat, 26 Feb 2022 21:41:34 +0100
+Subject: [PATCH] Fix bad namespace separator
+
+Fixes: https://lab.louiz.org/louiz/biboumi/-/issues/3465
+---
+ src/xmpp/xmpp_parser.cpp | 2 +-
+ src/xmpp/xmpp_parser.hpp | 4 ++--
+ src/xmpp/xmpp_stanza.cpp | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/xmpp/xmpp_parser.cpp b/src/xmpp/xmpp_parser.cpp
+index 781fe4cd94b0..1f25fa6f982b 100644
+--- a/src/xmpp/xmpp_parser.cpp
++++ b/src/xmpp/xmpp_parser.cpp
+@@ -38,7 +38,7 @@ XmppParser::XmppParser():
+ void XmppParser::init_xml_parser()
+ {
+ // Create the expat parser
+- this->parser = XML_ParserCreateNS("UTF-8", ':');
++ this->parser = XML_ParserCreateNS("UTF-8", '\1');
+ XML_SetUserData(this->parser, static_cast<void*>(this));
+
+ // Install Expat handlers
+diff --git a/src/xmpp/xmpp_parser.hpp b/src/xmpp/xmpp_parser.hpp
+index ec42f9a326e1..1e5e4e55a875 100644
+--- a/src/xmpp/xmpp_parser.hpp
++++ b/src/xmpp/xmpp_parser.hpp
+@@ -18,9 +18,9 @@
+ * stanza is reasonnably short.
+ *
+ * The element names generated by expat contain the namespace of the
+- * element, a colon (':') and then the actual name of the element. To get
++ * element, a \1 separator and then the actual name of the element. To get
+ * an element "x" with a namespace of "http://jabber.org/protocol/muc", you
+- * just look for an XmlNode named "http://jabber.org/protocol/muc:x"
++ * just look for an XmlNode named "http://jabber.org/protocol/muc\1x"
+ *
+ * TODO: enforce the size-limit for the stanza (limit the number of childs
+ * it can contain). For example forbid the parser going further than level
+diff --git a/src/xmpp/xmpp_stanza.cpp b/src/xmpp/xmpp_stanza.cpp
+index 435f33313b09..bd668cf2f28d 100644
+--- a/src/xmpp/xmpp_stanza.cpp
++++ b/src/xmpp/xmpp_stanza.cpp
+@@ -52,7 +52,7 @@ XmlNode::XmlNode(const std::string& name, XmlNode* parent):
+ parent(parent)
+ {
+ // split the namespace and the name
+- auto n = name.rfind(':');
++ auto n = name.rfind('\1');
+ if (n == std::string::npos)
+ this->name = name;
+ else
+--
+2.34.1
+