Hello community,

here is the log from the commit of package python-eventlet for openSUSE:Factory 
checked in at 2019-05-05 21:18:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-eventlet (Old)
 and      /work/SRC/openSUSE:Factory/.python-eventlet.new.5148 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-eventlet"

Sun May  5 21:18:15 2019 rev:30 rq:699142 version:0.24.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-eventlet/python-eventlet.changes  
2018-12-13 19:48:13.832717554 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-eventlet.new.5148/python-eventlet.changes    
    2019-05-05 21:18:17.668766418 +0200
@@ -1,0 +2,16 @@
+Mon Apr 29 06:00:44 UTC 2019 - Thomas Bechtold <[email protected]>
+
+- add 0001-ssl-connect-used-non-monotonic-time.time-for-timeout.patch
+- add 0002-Fix-for-Python-3.7-506.patch and
+  add 0003-Fix-compatibility-with-Python-3.7-ssl.SSLSocket-531.patch
+  Both needed for python 3.7 compatibility
+
+-------------------------------------------------------------------
+Mon Apr 29 04:30:11 UTC 2019 - Thomas Bechtold <[email protected]>
+
+- add 0001-IMPORTANT-late-import-in-use_hub-thread-race-caused-.patch
+  Fixes a problem during tests runs with python 2.7:
+  RuntimeError: no suitable implementation for this system: \
+    AttributeError("'module' object has no attribute 'epolls'",)
+
+-------------------------------------------------------------------

New:
----
  0001-IMPORTANT-late-import-in-use_hub-thread-race-caused-.patch
  0001-ssl-connect-used-non-monotonic-time.time-for-timeout.patch
  0002-Fix-for-Python-3.7-506.patch
  0003-Fix-compatibility-with-Python-3.7-ssl.SSLSocket-531.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-eventlet.spec ++++++
--- /var/tmp/diff_new_pack.5adxsO/_old  2019-05-05 21:18:18.576768891 +0200
+++ /var/tmp/diff_new_pack.5adxsO/_new  2019-05-05 21:18:18.588768924 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-eventlet
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -25,6 +25,15 @@
 Group:          Development/Languages/Python
 URL:            http://eventlet.net
 Source:         
https://files.pythonhosted.org/packages/source/e/eventlet/eventlet-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM 
0001-IMPORTANT-late-import-in-use_hub-thread-race-caused-.patch -- 
https://github.com/eventlet/eventlet/commit/77bccbe48d4d9a46982b2e0503e76784e76b066a
+Patch0:         0001-IMPORTANT-late-import-in-use_hub-thread-race-caused-.patch
+# PATCH-FIX-UPSTREAM 
0001-ssl-connect-used-non-monotonic-time.time-for-timeout.patch -- 
https://github.com/eventlet/eventlet/commit/a28a275393d3c3ae3c3a5341cc4764fad21be3e5
+Patch1:         0001-ssl-connect-used-non-monotonic-time.time-for-timeout.patch
+# PATCH-FIX-UPSTREAM 0002-Fix-for-Python-3.7-506.patch -- 
https://github.com/eventlet/eventlet/commit/cf47cb518db3e0dbdd48473fb40cf9f6ecd50e07
+Patch2:         0002-Fix-for-Python-3.7-506.patch
+# PATCH-FIX-UPSTREAM 
0003-Fix-compatibility-with-Python-3.7-ssl.SSLSocket-531.patch -- 
https://github.com/eventlet/eventlet/commit/a915bb642dd6cd4e92c959addff30509977a637c
+Patch3:         0003-Fix-compatibility-with-Python-3.7-ssl.SSLSocket-531.patch
+
 BuildRequires:  %{python_module Sphinx}
 BuildRequires:  %{python_module greenlet}
 BuildRequires:  %{python_module setuptools}
@@ -63,6 +72,10 @@
 
 %prep
 %setup -q -n eventlet-%{version}
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
 sed -i '/enum.compat/d' setup.py # crude way to drop the strange "enum-compat" 
requirement
 sed -i "s|^#!.*||" eventlet/support/greendns.py # Fix non-executable script
 

++++++ 0001-IMPORTANT-late-import-in-use_hub-thread-race-caused-.patch ++++++
++++ 717 lines (skipped)

++++++ 0001-ssl-connect-used-non-monotonic-time.time-for-timeout.patch ++++++
>From a28a275393d3c3ae3c3a5341cc4764fad21be3e5 Mon Sep 17 00:00:00 2001
From: Sergey Shepelev <[email protected]>
Date: Mon, 27 Aug 2018 00:22:35 +0500
Subject: [PATCH 1/3] ssl: connect used non-monotonic time.time() for timeout
 (#520)

Origin: https://github.com/eventlet/eventlet/pull/517

Related:
https://github.com/eventlet/eventlet/pull/388
https://github.com/eventlet/eventlet/pull/303
https://github.com/eventlet/eventlet/issues/270
https://github.com/eventlet/eventlet/issues/132
---
 eventlet/green/ssl.py | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/eventlet/green/ssl.py b/eventlet/green/ssl.py
index 53ee9a3..577afba 100644
--- a/eventlet/green/ssl.py
+++ b/eventlet/green/ssl.py
@@ -6,9 +6,8 @@ slurp_properties(__ssl, globals(), srckeys=dir(__ssl))
 import errno
 import functools
 import sys
-import time
 
-from eventlet import greenio
+from eventlet import greenio, hubs
 from eventlet.greenio import (
     set_nonblocking, GreenSocket, CONNECT_ERR, CONNECT_SUCCESS,
 )
@@ -264,6 +263,7 @@ class GreenSSLSocket(_original_sslsocket):
         if self.act_non_blocking:
             return real_connect(self, addr)
         else:
+            clock = hubs.get_hub().clock
             # *NOTE: gross, copied code from greenio because it's not factored
             # well enough to reuse
             if self.gettimeout() is None:
@@ -278,7 +278,7 @@ class GreenSSLSocket(_original_sslsocket):
                         else:
                             raise
             else:
-                end = time.time() + self.gettimeout()
+                end = clock() + self.gettimeout()
                 while True:
                     try:
                         real_connect(self, addr)
@@ -286,12 +286,12 @@ class GreenSSLSocket(_original_sslsocket):
                         if get_errno(exc) in CONNECT_ERR:
                             trampoline(
                                 self, write=True,
-                                timeout=end - time.time(), 
timeout_exc=timeout_exc('timed out'))
+                                timeout=end - clock(), 
timeout_exc=timeout_exc('timed out'))
                         elif get_errno(exc) in CONNECT_SUCCESS:
                             return
                         else:
                             raise
-                    if time.time() >= end:
+                    if clock() >= end:
                         raise timeout_exc('timed out')
 
     def connect(self, addr):
-- 
2.21.0

++++++ 0002-Fix-for-Python-3.7-506.patch ++++++
>From cf47cb518db3e0dbdd48473fb40cf9f6ecd50e07 Mon Sep 17 00:00:00 2001
From: Marcel Plch <[email protected]>
Date: Fri, 28 Sep 2018 17:08:59 +0200
Subject: [PATCH 2/3] Fix for Python 3.7 (#506)

* Fix for Python 3.7

* Remove redundant piece of code.

* Put back do_handshake_on_connect kwarg

* Use Python 3.7 instead of 3.7-dev

* Fix buildbot failing permissions with 3.7

* tests: env_tpool_zero assert details

* setup: Python 3.7 classificator
---
 eventlet/green/ssl.py | 46 +++++++++++++++++++++++++++++++++++++------
 1 file changed, 40 insertions(+), 6 deletions(-)

diff --git a/eventlet/green/ssl.py b/eventlet/green/ssl.py
index 577afba..53dff70 100644
--- a/eventlet/green/ssl.py
+++ b/eventlet/green/ssl.py
@@ -23,6 +23,7 @@ __patched__ = [
     'create_default_context', '_create_default_https_context']
 
 _original_sslsocket = __ssl.SSLSocket
+_original_wrap_socket = __ssl.wrap_socket
 
 
 class GreenSSLSocket(_original_sslsocket):
@@ -56,11 +57,41 @@ class GreenSSLSocket(_original_sslsocket):
             # this assignment
             self._timeout = sock.gettimeout()
 
-        # nonblocking socket handshaking on connect got disabled so let's 
pretend it's disabled
-        # even when it's on
-        super(GreenSSLSocket, self).__init__(
-            sock.fd, keyfile, certfile, server_side, cert_reqs, ssl_version,
-            ca_certs, do_handshake_on_connect and six.PY2, *args, **kw)
+        if sys.version_info >= (3, 7):
+            # Monkey-patch the sslsocket so our modified self gets
+            # injected into its _create method.
+            def fake_new(self, cls, *args, **kwargs):
+                return self
+
+            orig_new = _original_sslsocket.__new__
+            try:
+                _original_sslsocket.__new__ = fake_new.__get__(self, 
GreenSSLSocket)
+
+                self = _original_wrap_socket(
+                    sock=sock.fd,
+                    keyfile=keyfile,
+                    certfile=certfile,
+                    server_side=server_side,
+                    cert_reqs=cert_reqs,
+                    ssl_version=ssl_version,
+                    ca_certs=ca_certs,
+                    do_handshake_on_connect=False,
+                    *args, **kw
+                )
+                self.keyfile = keyfile
+                self.certfile = certfile
+                self.cert_reqs = cert_reqs
+                self.ssl_version = ssl_version
+                self.ca_certs = ca_certs
+            finally:
+                # Unpatch
+                _original_sslsocket.__new__ = orig_new
+        else:
+            # nonblocking socket handshaking on connect got disabled so let's 
pretend it's disabled
+            # even when it's on
+            super(GreenSSLSocket, self).__init__(
+                sock.fd, keyfile, certfile, server_side, cert_reqs, 
ssl_version,
+                ca_certs, do_handshake_on_connect and six.PY2, *args, **kw)
 
         # the superclass initializer trashes the methods so we remove
         # the local-object versions of them and let the actual class
@@ -323,7 +354,10 @@ class GreenSSLSocket(_original_sslsocket):
         except NameError:
             self._sslobj = sslobj
         else:
-            self._sslobj = SSLObject(sslobj, owner=self)
+            if sys.version_info < (3, 7):
+                self._sslobj = SSLObject(sslobj, owner=self)
+            else:
+                self._sslobj = sslobj
 
         if self.do_handshake_on_connect:
             self.do_handshake()
-- 
2.21.0

++++++ 0003-Fix-compatibility-with-Python-3.7-ssl.SSLSocket-531.patch ++++++
>From a915bb642dd6cd4e92c959addff30509977a637c Mon Sep 17 00:00:00 2001
From: Junyi <[email protected]>
Date: Wed, 30 Jan 2019 00:10:31 -0800
Subject: [PATCH 3/3] Fix compatibility with Python 3.7 ssl.SSLSocket  (#531)

---
 eventlet/green/ssl.py | 86 ++++++++++++++++++++++++-------------------
 1 file changed, 49 insertions(+), 37 deletions(-)

diff --git a/eventlet/green/ssl.py b/eventlet/green/ssl.py
index 53dff70..9504aef 100644
--- a/eventlet/green/ssl.py
+++ b/eventlet/green/ssl.py
@@ -3,10 +3,7 @@ __ssl = __import__('ssl')
 from eventlet.patcher import slurp_properties
 slurp_properties(__ssl, globals(), srckeys=dir(__ssl))
 
-import errno
-import functools
 import sys
-
 from eventlet import greenio, hubs
 from eventlet.greenio import (
     set_nonblocking, GreenSocket, CONNECT_ERR, CONNECT_SUCCESS,
@@ -14,6 +11,8 @@ from eventlet.greenio import (
 from eventlet.hubs import trampoline, IOClosed
 from eventlet.support import get_errno, PY33
 import six
+from contextlib import contextmanager
+
 orig_socket = __import__('socket')
 socket = orig_socket.socket
 timeout_exc = SSLError
@@ -24,6 +23,21 @@ __patched__ = [
 
 _original_sslsocket = __ssl.SSLSocket
 _original_wrap_socket = __ssl.wrap_socket
+_original_sslcontext = getattr(__ssl, 'SSLContext', None)
+_is_under_py_3_7 = sys.version_info < (3, 7)
+
+
+@contextmanager
+def _original_ssl_context(*args, **kwargs):
+    tmp_sslcontext = _original_wrap_socket.__globals__.get('SSLContext', None)
+    tmp_sslsocket = _original_sslsocket._create.__globals__.get('SSLSocket', 
None)
+    _original_sslsocket._create.__globals__['SSLSocket'] = _original_sslsocket
+    _original_wrap_socket.__globals__['SSLContext'] = _original_sslcontext
+    try:
+        yield
+    finally:
+        _original_wrap_socket.__globals__['SSLContext'] = tmp_sslcontext
+        _original_sslsocket._create.__globals__['SSLSocket'] = tmp_sslsocket
 
 
 class GreenSSLSocket(_original_sslsocket):
@@ -40,16 +54,43 @@ class GreenSSLSocket(_original_sslsocket):
     settimeout(), and to close/reopen the connection when a timeout
     occurs at an unexpected juncture in the code.
     """
+    def __new__(cls, sock=None, keyfile=None, certfile=None,
+                server_side=False, cert_reqs=CERT_NONE,
+                ssl_version=PROTOCOL_SSLv23, ca_certs=None,
+                do_handshake_on_connect=True, *args, **kw):
+        if _is_under_py_3_7:
+            return super(GreenSSLSocket, cls).__new__(cls)
+        else:
+            if not isinstance(sock, GreenSocket):
+                sock = GreenSocket(sock)
+            with _original_ssl_context():
+                ret = _original_wrap_socket(
+                    sock=sock.fd,
+                    keyfile=keyfile,
+                    certfile=certfile,
+                    server_side=server_side,
+                    cert_reqs=cert_reqs,
+                    ssl_version=ssl_version,
+                    ca_certs=ca_certs,
+                    do_handshake_on_connect=False,
+                    *args, **kw
+                )
+            ret.keyfile = keyfile
+            ret.certfile = certfile
+            ret.cert_reqs = cert_reqs
+            ret.ssl_version = ssl_version
+            ret.ca_certs = ca_certs
+            ret.__class__ = GreenSSLSocket
+            return ret
+
     # we are inheriting from SSLSocket because its constructor calls
     # do_handshake whose behavior we wish to override
-
     def __init__(self, sock, keyfile=None, certfile=None,
                  server_side=False, cert_reqs=CERT_NONE,
                  ssl_version=PROTOCOL_SSLv23, ca_certs=None,
                  do_handshake_on_connect=True, *args, **kw):
         if not isinstance(sock, GreenSocket):
             sock = GreenSocket(sock)
-
         self.act_non_blocking = sock.act_non_blocking
 
         if six.PY2:
@@ -57,42 +98,12 @@ class GreenSSLSocket(_original_sslsocket):
             # this assignment
             self._timeout = sock.gettimeout()
 
-        if sys.version_info >= (3, 7):
-            # Monkey-patch the sslsocket so our modified self gets
-            # injected into its _create method.
-            def fake_new(self, cls, *args, **kwargs):
-                return self
-
-            orig_new = _original_sslsocket.__new__
-            try:
-                _original_sslsocket.__new__ = fake_new.__get__(self, 
GreenSSLSocket)
-
-                self = _original_wrap_socket(
-                    sock=sock.fd,
-                    keyfile=keyfile,
-                    certfile=certfile,
-                    server_side=server_side,
-                    cert_reqs=cert_reqs,
-                    ssl_version=ssl_version,
-                    ca_certs=ca_certs,
-                    do_handshake_on_connect=False,
-                    *args, **kw
-                )
-                self.keyfile = keyfile
-                self.certfile = certfile
-                self.cert_reqs = cert_reqs
-                self.ssl_version = ssl_version
-                self.ca_certs = ca_certs
-            finally:
-                # Unpatch
-                _original_sslsocket.__new__ = orig_new
-        else:
+        if _is_under_py_3_7:
             # nonblocking socket handshaking on connect got disabled so let's 
pretend it's disabled
             # even when it's on
             super(GreenSSLSocket, self).__init__(
                 sock.fd, keyfile, certfile, server_side, cert_reqs, 
ssl_version,
                 ca_certs, do_handshake_on_connect and six.PY2, *args, **kw)
-
         # the superclass initializer trashes the methods so we remove
         # the local-object versions of them and let the actual class
         # methods shine through
@@ -354,7 +365,7 @@ class GreenSSLSocket(_original_sslsocket):
         except NameError:
             self._sslobj = sslobj
         else:
-            if sys.version_info < (3, 7):
+            if _is_under_py_3_7:
                 self._sslobj = SSLObject(sslobj, owner=self)
             else:
                 self._sslobj = sslobj
@@ -396,6 +407,7 @@ class GreenSSLSocket(_original_sslsocket):
     def dup(self):
         raise NotImplementedError("Can't dup an ssl object")
 
+
 SSLSocket = GreenSSLSocket
 
 
-- 
2.21.0


Reply via email to