summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Popov <pinkbyte@gentoo.org>2020-08-11 14:24:49 +0300
committerSergey Popov <pinkbyte@gentoo.org>2020-08-11 14:27:51 +0300
commit523f33030115633b29ff950cc76361eb4dc23ce1 (patch)
tree5c3915ff79dd4dcb5695b4f80e7e18019f7a3ac0
parentdev-util/kbuild: Bump to version 0.1.9998.3407 (diff)
downloadgentoo-523f33030115633b29ff950cc76361eb4dc23ce1.tar.gz
gentoo-523f33030115633b29ff950cc76361eb4dc23ce1.tar.bz2
gentoo-523f33030115633b29ff950cc76361eb4dc23ce1.zip
net-im/err: version bump
Set supported Python version to 3.7 Migrate away from vulnerable sleekxmpp to slixmpp Update HOMEPAGE and metadata Closes: https://bugs.gentoo.org/show_bug.cgi?id=725664 Closes: https://bugs.gentoo.org/show_bug.cgi?id=735830 Package-Manager: Portage-2.3.103, Repoman-2.3.23 Signed-off-by: Sergey Popov <pinkbyte@gentoo.org>
-rw-r--r--net-im/err/Manifest1
-rw-r--r--net-im/err/err-6.1.4.ebuild91
-rw-r--r--net-im/err/files/err-6.1.4-slixmpp.patch190
-rw-r--r--net-im/err/metadata.xml6
4 files changed, 283 insertions, 5 deletions
diff --git a/net-im/err/Manifest b/net-im/err/Manifest
index 62697aaabeec..fa2c1a0b636d 100644
--- a/net-im/err/Manifest
+++ b/net-im/err/Manifest
@@ -1 +1,2 @@
DIST errbot-5.2.0.tar.gz 189305 BLAKE2B 96e275ee2a70fcab217f4a91c855192d8536cc177e0cafe08c8f55e17a09c06913c07e50473f87ea29e4537cd6389907615eba86d44756962ed59a87498be398 SHA512 d879e9da6647d697ead0a5f72fe83cf33614201863a9a62bc62c90d7ac0478e1e0902438c6f053d2ea56c940d68b136bbfa497175fb11647913bd7f139220aec
+DIST errbot-6.1.4.tar.gz 207370 BLAKE2B 187e87cc36393f85c1405a29d332d703cdd2ac9d9c6b50178ff7382bc5feb620b69a77dc21ce8144fc24045f11067865c7273118fc25ec1ad9afb93d6ccc635e SHA512 60cc8f070e2420e4ef5f0124eb6d03b3cf01c44e148ebb8b92f5b504eb6968c754fd82771da9528daab62c9e9f4d6ef97ab1063f1093163208521b26e36b2f2d
diff --git a/net-im/err/err-6.1.4.ebuild b/net-im/err/err-6.1.4.ebuild
new file mode 100644
index 000000000000..65c20b5d54fb
--- /dev/null
+++ b/net-im/err/err-6.1.4.ebuild
@@ -0,0 +1,91 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_7 )
+
+MY_PN="errbot"
+MY_P="${MY_PN}-${PV}"
+
+inherit distutils-r1 user
+
+DESCRIPTION="Multiprotocol chatbot designed to be easily deployable and maintainable"
+HOMEPAGE="https://errbot.readthedocs.io/en/latest/"
+SRC_URI="mirror://pypi/${PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
+
+KEYWORDS="~amd64"
+LICENSE="GPL-3"
+SLOT="0"
+IUSE="irc +xmpp"
+
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+RDEPEND="
+ dev-python/ansi[${PYTHON_USEDEP}]
+ dev-python/bottle[${PYTHON_USEDEP}]
+ dev-python/colorlog[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ dev-python/daemonize[${PYTHON_USEDEP}]
+ dev-python/dnspython[${PYTHON_USEDEP}]
+ >=dev-python/dulwich-0.19.16[${PYTHON_USEDEP}]
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ <dev-python/markdown-3.0[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/webtest[${PYTHON_USEDEP}]
+ dev-python/yapsy[${PYTHON_USEDEP}]
+ irc? (
+ dev-python/irc[${PYTHON_USEDEP}]
+ )
+ xmpp? (
+ dev-python/pyasn1[${PYTHON_USEDEP}]
+ dev-python/pyasn1-modules[${PYTHON_USEDEP}]
+ dev-python/slixmpp[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=( "${FILESDIR}/${P}-slixmpp.patch" )
+
+S="${WORKDIR}/${MY_P}"
+
+# NOTES:
+# 1. Support for BOT_SENTRY option is missing, cause
+# we do not have apropriate packages in portage yet
+# 2. Currently only XMPP is supported(IRC still untested)
+# 3. Internal web server is temporarily removed (rocket-err from requires.txt)
+# 4. pygments-markdown-lexer dependency(needed only for debugging?) is temporarily removed (pygments-markdown-lexer from requires.txt)
+
+pkg_setup() {
+ ebegin "Creating err group and user"
+ enewgroup 'err'
+ enewuser 'err' -1 -1 -1 'err'
+ eend ${?}
+}
+
+python_prepare_all() {
+ sed -i \
+ -e '/rocket-errbot/d' \
+ -e 's/dnspython3/dnspython/' \
+ -e '/pygments-markdown-lexer/d' \
+ setup.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ newinitd "${FILESDIR}"/errd.initd.2 errd
+ newconfd "${FILESDIR}"/errd.confd errd
+
+ dodir /etc/${PN}
+ keepdir /var/lib/${PN}
+ keepdir /var/log/${PN}
+ fowners -R err:err /var/lib/${PN}
+ fowners -R err:err /var/log/${PN}
+
+ insinto /etc/${PN}
+ newins errbot/config-template.py config.py
+}
diff --git a/net-im/err/files/err-6.1.4-slixmpp.patch b/net-im/err/files/err-6.1.4-slixmpp.patch
new file mode 100644
index 000000000000..ccccc171f238
--- /dev/null
+++ b/net-im/err/files/err-6.1.4-slixmpp.patch
@@ -0,0 +1,190 @@
+From e68c539c727c7275665a198fc7a217a3c1ad3be2 Mon Sep 17 00:00:00 2001
+From: Birger Schacht <1143280+bisco2@users.noreply.github.com>
+Date: Sat, 11 Jul 2020 11:20:53 +0000
+Subject: [PATCH] Replace sleekxmpp with slixmpp (#1430)
+
+* Start moving to slixmpp
+
+* Pass a default value for ssl_version to the XMPPConnection
+---
+ .../plugin_development/backend_specifics.rst | 6 +--
+ errbot/backends/xmpp.py | 49 +++++++++----------
+ setup.py | 4 +-
+
+diff --git a/errbot/backends/xmpp.py b/errbot/backends/xmpp.py
+index 08f49340..e27c2893 100644
+--- a/errbot/backends/xmpp.py
++++ b/errbot/backends/xmpp.py
+@@ -2,7 +2,6 @@
+ import sys
+ from functools import lru_cache
+
+-from threading import Thread
+ from time import sleep
+
+ from errbot.backends.base import Message, Room, Presence, RoomNotJoinedError, Identifier, RoomOccupant, Person
+@@ -13,10 +12,10 @@
+ log = logging.getLogger(__name__)
+
+ try:
+- from sleekxmpp import ClientXMPP
+- from sleekxmpp.xmlstream import resolver, cert
+- from sleekxmpp import JID
+- from sleekxmpp.exceptions import IqError
++ from slixmpp import ClientXMPP
++ from slixmpp.xmlstream import resolver, cert
++ from slixmpp import JID
++ from slixmpp.exceptions import IqError
+
+ except ImportError:
+ log.exception("Could not start the XMPP backend")
+@@ -114,15 +113,10 @@ def join(self, username=None, password=None):
+ :meth:`create` on it first.
+ """
+ room = str(self)
+- self.xep0045.joinMUC(room, username, password=password, wait=True)
++ self.xep0045.join_muc(room, username, password=password, wait=True)
+ self._bot.conn.add_event_handler(f'muc::{room}::got_online', self._bot.user_joined_chat)
+ self._bot.conn.add_event_handler(f'muc::{room}::got_offline', self._bot.user_left_chat)
+- # Room configuration can only be done once a MUC presence stanza
+- # has been received from the server. This HAS to take place in a
+- # separate thread because of how SleekXMPP processes these stanzas.
+- t = Thread(target=self.configure)
+- t.setDaemon(True)
+- t.start()
++ self.configure()
+ self._bot.callback_room_joined(self)
+ log.info('Joined room %s.', room)
+
+@@ -137,7 +131,7 @@ def leave(self, reason=None):
+ reason = ""
+ room = str(self)
+ try:
+- self.xep0045.leaveMUC(room=room, nick=self.xep0045.ourNicks[room], msg=reason)
++ self.xep0045.leave_muc(room=room, nick=self.xep0045.ourNicks[room], msg=reason)
+
+ self._bot.conn.del_event_handler(f'muc::{room}::got_online', self._bot.user_joined_chat)
+ self._bot.conn.del_event_handler(f'muc::{room}::got_offline', self._bot.user_left_chat)
+@@ -148,7 +142,7 @@ def leave(self, reason=None):
+
+ def create(self):
+ """
+- Not supported on this back-end (SleekXMPP doesn't support it).
++ Not supported on this back-end (Slixmpp doesn't support it).
+ Will join the room to ensure it exists, instead.
+ """
+ logging.warning(
+@@ -186,7 +180,7 @@ def joined(self):
+ :getter:
+ Returns `True` if the room has been joined, `False` otherwise.
+ """
+- return str(self) in self.xep0045.getJoinedRooms()
++ return str(self) in self.xep0045.get_joined_rooms()
+
+ @property
+ def topic(self):
+@@ -214,7 +208,7 @@ def topic(self, topic):
+ :param topic:
+ The topic to set.
+ """
+- # Not supported by SleekXMPP at the moment :(
++ # Not supported by Slixmpp at the moment :(
+ raise NotImplementedError("Setting the topic is not supported on this back-end.")
+
+ @property
+@@ -261,16 +255,16 @@ def configure(self):
+ affiliation = None
+ while affiliation is None:
+ sleep(0.5)
+- affiliation = self.xep0045.getJidProperty(
++ affiliation = self.xep0045.get_jid_property(
+ room=room,
+- nick=self.xep0045.ourNicks[room],
+- jidProperty='affiliation'
++ nick=self.xep0045.our_nicks[room],
++ jid_property='affiliation'
+ )
+
+ if affiliation == "owner":
+ log.debug('Configuring room %s: we have owner affiliation.', room)
+- form = self.xep0045.getRoomConfig(room)
+- self.xep0045.configureRoom(room, form)
++ form = yield from self.xep0045.get_room_config(room)
++ self.xep0045.configure_room(room, form)
+ else:
+ log.debug("Not configuring room %s: we don't have owner affiliation (affiliation=%s)", room, affiliation)
+
+@@ -291,7 +285,7 @@ def real_jid(self):
+ Will only work if the errbot is moderator in the MUC or it is not anonymous.
+ """
+ room_jid = self._node + '@' + self._domain
+- jid = JID(self._room.xep0045.getJidProperty(room_jid, self.resource, 'jid'))
++ jid = JID(self._room.xep0045.get_jid_property(room_jid, self.resource, 'jid'))
+ return jid.bare
+
+ @property
+@@ -303,7 +297,8 @@ def room(self):
+
+ class XMPPConnection(object):
+ def __init__(self, jid, password, feature=None, keepalive=None,
+- ca_cert=None, server=None, use_ipv6=None, bot=None):
++ ca_cert=None, server=None, use_ipv6=None, bot=None,
++ ssl_version=None):
+ if feature is None:
+ feature = {}
+ self._bot = bot
+@@ -317,7 +312,7 @@ def __init__(self, jid, password, feature=None, keepalive=None,
+ self.client.register_plugin('xep_0249') # XMPP direct MUC invites
+
+ if keepalive is not None:
+- self.client.whitespace_keepalive = True # Just in case SleekXMPP's default changes to False in the future
++ self.client.whitespace_keepalive = True # Just in case Slixmpp's default changes to False in the future
+ self.client.whitespace_keepalive_interval = keepalive
+
+ if use_ipv6 is not None:
+@@ -348,7 +343,7 @@ def disconnect(self):
+ self.connected = False
+
+ def serve_forever(self):
+- self.client.process(block=True)
++ self.client.process()
+
+ def add_event_handler(self, name, cb):
+ self.client.add_event_handler(name, cb)
+@@ -447,7 +442,7 @@ def incoming_message(self, xmppmsg):
+ msg.to = self._build_person(xmppmsg['to'].full)
+
+ msg.nick = xmppmsg['mucnick']
+- msg.delayed = bool(xmppmsg['delay']._get_attr('stamp')) # this is a bug in sleekxmpp it should be ['from']
++ msg.delayed = bool(xmppmsg['delay']._get_attr('stamp')) # this is a bug in slixmpp it should be ['from']
+ self.callback_message(msg)
+
+ def _idd_from_event(self, event):
+@@ -582,7 +577,7 @@ def rooms(self):
+ A list of :class:`~errbot.backends.base.XMPPMUCRoom` instances.
+ """
+ xep0045 = self.conn.client.plugin['xep_0045']
+- return [XMPPRoom(room, self) for room in xep0045.getJoinedRooms()]
++ return [XMPPRoom(room, self) for room in xep0045.get_joined_rooms()]
+
+ def query_room(self, room):
+ """
+diff --git a/setup.py b/setup.py
+index 3d0c09f8..4a3c1ea1 100755
+--- a/setup.py
++++ b/setup.py
+@@ -105,12 +105,12 @@ def read(fname, encoding='ascii'):
+ },
+ extras_require={
+ 'graphic': ['PySide', ],
+- 'hipchat': ['hypchat', 'sleekxmpp', 'pyasn1', 'pyasn1-modules'],
++ 'hipchat': ['hypchat', 'slixmpp', 'pyasn1', 'pyasn1-modules'],
+ 'IRC': ['irc', ],
+ 'slack': ['slackclient>=1.0.5,<2.0', ],
+ 'slack-rtm': ['slackclient>=2.0', ],
+ 'telegram': ['python-telegram-bot', ],
+- 'XMPP': ['sleekxmpp', 'pyasn1', 'pyasn1-modules'],
++ 'XMPP': ['slixmpp', 'pyasn1', 'pyasn1-modules'],
+ ':python_version<"3.7"': ['dataclasses'], # backward compatibility for 3.3->3.6 for dataclasses
+ ':sys_platform!="win32"': ['daemonize'],
+ },
diff --git a/net-im/err/metadata.xml b/net-im/err/metadata.xml
index 21914ed5cfe5..f1f4f68229d0 100644
--- a/net-im/err/metadata.xml
+++ b/net-im/err/metadata.xml
@@ -9,11 +9,7 @@
<flag name="irc">Pull optional dependencies, needed for IRC backend</flag>
</use>
<upstream>
- <remote-id type="github">gbin/err</remote-id>
- <maintainer status="active">
- <email>gbin@gootz.net</email>
- <name>Guillaume BINET</name>
- </maintainer>
+ <remote-id type="github">errbotio/errbot</remote-id>
<remote-id type="pypi">err</remote-id>
</upstream>
</pkgmetadata>