diff options
author | Sergey Popov <pinkbyte@gentoo.org> | 2020-08-11 14:24:49 +0300 |
---|---|---|
committer | Sergey Popov <pinkbyte@gentoo.org> | 2020-08-11 14:27:51 +0300 |
commit | 523f33030115633b29ff950cc76361eb4dc23ce1 (patch) | |
tree | 5c3915ff79dd4dcb5695b4f80e7e18019f7a3ac0 /net-im/err | |
parent | dev-util/kbuild: Bump to version 0.1.9998.3407 (diff) | |
download | gentoo-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>
Diffstat (limited to 'net-im/err')
-rw-r--r-- | net-im/err/Manifest | 1 | ||||
-rw-r--r-- | net-im/err/err-6.1.4.ebuild | 91 | ||||
-rw-r--r-- | net-im/err/files/err-6.1.4-slixmpp.patch | 190 | ||||
-rw-r--r-- | net-im/err/metadata.xml | 6 |
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> |