commit:     523f33030115633b29ff950cc76361eb4dc23ce1
Author:     Sergey Popov <pinkbyte <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 11 11:24:49 2020 +0000
Commit:     Sergey Popov <pinkbyte <AT> gentoo <DOT> org>
CommitDate: Tue Aug 11 11:27:51 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=523f3303

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 <AT> gentoo.org>

 net-im/err/Manifest                      |   1 +
 net-im/err/err-6.1.4.ebuild              |  91 +++++++++++++++
 net-im/err/files/err-6.1.4-slixmpp.patch | 190 +++++++++++++++++++++++++++++++
 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 62697aaabee..fa2c1a0b636 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 00000000000..65c20b5d54f
--- /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 00000000000..ccccc171f23
--- /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 <[email protected]>
+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 21914ed5cfe..f1f4f68229d 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>[email protected]</email>
-                       <name>Guillaume BINET</name>
-               </maintainer>
+               <remote-id type="github">errbotio/errbot</remote-id>
                <remote-id type="pypi">err</remote-id>
        </upstream>
 </pkgmetadata>

Reply via email to