forked from pool/python-gevent
Accepting request 766423 from devel:languages:python
Automatic submission by obs-autosubmit OBS-URL: https://build.opensuse.org/request/show/766423 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-gevent?expand=0&rev=31
This commit is contained in:
@@ -4,32 +4,23 @@ Subject: Fix failing tests
|
||||
- ssl.OP_NO_COMPRESSION is set by default by ssl.
|
||||
- thread_ident can be represented as a negative hex number now,
|
||||
so replace the negative sign with the regex too, and not just the number.
|
||||
Index: gevent-1.4.0/src/greentest/2.7/test_ssl.py
|
||||
===================================================================
|
||||
--- gevent-1.4.0.orig/src/greentest/2.7/test_ssl.py
|
||||
+++ gevent-1.4.0/src/greentest/2.7/test_ssl.py
|
||||
@@ -742,14 +742,14 @@ class ContextTests(unittest.TestCase):
|
||||
--- a/src/greentest/2.7/test_ssl.py
|
||||
+++ b/src/greentest/2.7/test_ssl.py
|
||||
@@ -835,9 +835,10 @@ class ContextTests(unittest.TestCase):
|
||||
def test_options(self):
|
||||
ctx = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
|
||||
# OP_ALL | OP_NO_SSLv2 | OP_NO_SSLv3 is the default value
|
||||
- self.assertEqual(ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3,
|
||||
+ self.assertEqual(ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3 | ssl.OP_NO_COMPRESSION,
|
||||
ctx.options)
|
||||
ctx.options |= ssl.OP_NO_TLSv1
|
||||
- self.assertEqual(ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3 | ssl.OP_NO_TLSv1,
|
||||
+ self.assertEqual(ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3 | ssl.OP_NO_COMPRESSION | ssl.OP_NO_TLSv1,
|
||||
ctx.options)
|
||||
if can_clear_options():
|
||||
ctx.options = (ctx.options & ~ssl.OP_NO_SSLv2) | ssl.OP_NO_TLSv1
|
||||
- self.assertEqual(ssl.OP_ALL | ssl.OP_NO_TLSv1 | ssl.OP_NO_SSLv3,
|
||||
+ self.assertEqual(ssl.OP_ALL | ssl.OP_NO_TLSv1 | ssl.OP_NO_SSLv3 | ssl.OP_NO_COMPRESSION,
|
||||
ctx.options)
|
||||
ctx.options = 0
|
||||
self.assertEqual(0, ctx.options)
|
||||
Index: gevent-1.4.0/src/gevent/tests/test__util.py
|
||||
===================================================================
|
||||
--- gevent-1.4.0.orig/src/gevent/tests/test__util.py
|
||||
+++ gevent-1.4.0/src/gevent/tests/test__util.py
|
||||
- default = (ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3)
|
||||
+ default = (ssl.OP_ALL | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3 |
|
||||
+ OP_NO_COMPRESSION)
|
||||
# SSLContext also enables these by default
|
||||
- default |= (OP_NO_COMPRESSION | OP_CIPHER_SERVER_PREFERENCE |
|
||||
+ default |= (OP_CIPHER_SERVER_PREFERENCE |
|
||||
OP_SINGLE_DH_USE | OP_SINGLE_ECDH_USE |
|
||||
OP_ENABLE_MIDDLEBOX_COMPAT)
|
||||
self.assertEqual(default, ctx.options)
|
||||
--- a/src/gevent/tests/test__util.py
|
||||
+++ b/src/gevent/tests/test__util.py
|
||||
@@ -134,7 +134,7 @@ class TestTree(greentest.TestCase):
|
||||
|
||||
def _normalize_tree_format(self, value):
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1eb7fa3b9bd9174dfe9c3b59b7a09b768ecd496debfc4976a9530a3e15c990d1
|
||||
size 5169595
|
||||
3
gevent-1.5a3.tar.gz
Normal file
3
gevent-1.5a3.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f1a90da498d05fecc20fb13d4d8383704043fe1d386ebca97ebfc89747dad426
|
||||
size 3878216
|
||||
@@ -1,3 +1,164 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 3 11:51:00 CET 2020 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Use bundled libev library to overcome the current
|
||||
incompatibility with libev > 4.25. gh#gevent/gevent#1501
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 2 14:09:44 CET 2020 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Upgrade to 1.5a3:
|
||||
- The file objects (FileObjectPosix, FileObjectThread) now
|
||||
consistently text and binary modes. If neither 'b' nor 't' is
|
||||
given in the mode, they will read and write native strings.
|
||||
If 't' is given, they will always work with unicode strings,
|
||||
and 'b' will always work with byte strings. (FileObjectPosix
|
||||
already worked this way.) See :issue:`1441`.
|
||||
- The file objects accept encoding, errors and newline
|
||||
arguments. On Python 2, these are only used if 't' is in the
|
||||
mode.
|
||||
- The default mode for FileObjectPosix changed from rb to
|
||||
simply r, for consistency with the other file objects and the
|
||||
standard open and io.open functions.
|
||||
- Fix FileObjectPosix improperly being used from multiple
|
||||
greenlets. Previously this was hidden by forcing buffering,
|
||||
which raised RuntimeError.
|
||||
- Fix using monkey-patched threading.Lock and threading.RLock
|
||||
objects as spin locks by making them call sleep(0) if they
|
||||
failed to acquire the lock in a non-blocking call. This lets
|
||||
other callbacks run to release the lock, simulating
|
||||
preemptive threading. Using spin locks is not recommended,
|
||||
but may have been done in code written for threads,
|
||||
especially on Python 3. See :issue:`1464`.
|
||||
- Fix Semaphore (and monkey-patched threading locks) to be
|
||||
fair. This eliminates the rare potential for starvation of
|
||||
greenlets. As part of this change, the low-level method
|
||||
rawlink of Semaphore, Event, and AsyncResult now always
|
||||
remove the link object when calling it, so unlink can
|
||||
sometimes be optimized out. See :issue:`1487`.
|
||||
- Make gevent.pywsgi support Connection: keep-alive in
|
||||
HTTP/1.0. Based on :pr:`1331` by tanchuhan.
|
||||
- Fix a potential crash using gevent.idle() when using libuv.
|
||||
See :issue:`1489`.
|
||||
- Fix some potential crashes using libuv async watchers.
|
||||
- Make ThreadPool consistently raise InvalidThreadUseError when
|
||||
spawn is called from a thread different than the thread that
|
||||
created the threadpool. This has never been allowed, but was
|
||||
inconsistently enforced. On gevent 1.3 and before, this would
|
||||
always raise "greenlet error: invalid thread switch," or
|
||||
LoopExit. On gevent 1.4, it could raise LoopExit, depending
|
||||
on the number of tasks, but still, calling it from
|
||||
a different thread was likely to corrupt libev or libuv
|
||||
internals.
|
||||
- Remove some undocumented, deprecated functions from the
|
||||
threadpool module.
|
||||
- libuv: Fix a perceived slowness spawning many greenlets at
|
||||
the same time without yielding to the event loop while having
|
||||
no active IO watchers or timers. If the time spent launching
|
||||
greenlets exceeded the switch interval and there were no
|
||||
other active watchers, then the default IO poll time of about
|
||||
.3s would elapse between spawning batches. This could
|
||||
theoretically apply for any non-switching callbacks. This can
|
||||
be produced in synthetic benchmarks and other special
|
||||
circumstances, but real applications are unlikely to be
|
||||
affected. See :issue:`1493`.
|
||||
- Fix using the threadpool inside a script or module run with
|
||||
python -m gevent.monkey. Previously it would use greenlets
|
||||
instead of native threads. See :issue:`1484`.
|
||||
- Fix potential crashes in the FFI backends if a watcher was
|
||||
closed and stopped in the middle of a callback from the event
|
||||
loop and then raised an exception. This could happen if the
|
||||
hub's handle_error function was poorly customized, for
|
||||
example. See :issue:`1482`
|
||||
- Make gevent.killall stop greenlets from running that hadn't
|
||||
been run yet. This make it consistent with Greenlet.kill().
|
||||
See :issue:`1473` reported by kochelmonster.
|
||||
- Make gevent.spawn_raw set the loop attribute on returned
|
||||
greenlets. This lets them work with more gevent APIs, notably
|
||||
gevent.killall(). They already had dictionaries, but this may
|
||||
make them slightly larger, depending on platform (on CPython
|
||||
2.7 through 3.6 there is no apparent difference for one
|
||||
attribute but on CPython 3.7 and 3.8 dictionaries are
|
||||
initially empty and only allocate space once an attribute is
|
||||
added; they're still smaller than on earlier versions
|
||||
though).
|
||||
- Add support for CPython 3.8.0. (Windows wheels are not yet
|
||||
available.)
|
||||
- Add an --module option to gevent.monkey allowing to run
|
||||
a Python module rather than a script. See :pr:`1440`.
|
||||
- Improve the way joining the main thread works on Python 3.
|
||||
- Implement SSLSocket.verify_client_post_handshake() when
|
||||
available.
|
||||
- Fix tests when TLS1.3 is supported.
|
||||
- Disable Nagle's algorithm in the backdoor server. This can
|
||||
improve interactive response time.
|
||||
- Test on Python 3.7.4. There are important SSL test fixes.
|
||||
- Python version updates: gevent is now tested with CPython
|
||||
2.7.16, 3.5.6, 3.6.8, and 3.7.2. It is also tested with PyPy2
|
||||
7.1 and PyPy 3.6 7.1 (PyPy 7.0 and 7.1 were not capable of
|
||||
running SSL tests on Travis CI).
|
||||
- Support for Python 3.4 has been removed, as that version is
|
||||
no longer supported uptstream.
|
||||
- gevent binary wheels are now manylinux2010 and include libuv
|
||||
support. pip 19 is needed to install them. See :issue:`1346`.
|
||||
- gevent is now compiled with Cython 0.29.6 and cffi 1.12.2.
|
||||
- gevent sources include a pyproject.toml file, specifying the
|
||||
build requirements and enabling build isolation. pip 18 or
|
||||
above is needed to take advantage of this. See :issue:`1180`.
|
||||
- libev-cffi: Let the compiler fill in the definition of
|
||||
nlink_t for st_nlink in struct stat, instead of trying to
|
||||
guess it ourself. Reported in :issue:`1372` by Andreas
|
||||
Schwab.
|
||||
- Remove the Makefile. Its most useful commands, make clean and
|
||||
make distclean, can now be accomplished in a cross-platform
|
||||
way using python setup.py clean and python setup.py clean -a,
|
||||
respectively. The remainder of the Makefile contained Travis
|
||||
CI commands that have been moved to .travis.yml.
|
||||
- Deprecate the EMBED and LIBEV_EMBED, etc, build-time
|
||||
environment variables. Instead, use GEVENTSETUP_EMBED and
|
||||
GEVENTSETUP_EMBED_LIBEV. See :issue:`1402`.
|
||||
- The CFFI backends now respect the embed build-time setting.
|
||||
This allows building the libuv backend without embedding
|
||||
libuv (except on Windows).
|
||||
- Support test resources. This allows disabling tests that use
|
||||
the network. See :ref:`limiting-test-resource-usage` for
|
||||
more.
|
||||
- Python 3.7 subprocess: Copy a STARTUPINFO passed as
|
||||
a parameter. Contributed by AndCycle in :pr:`1352`.
|
||||
- subprocess: WIFSTOPPED and SIGCHLD are now handled for
|
||||
determining Popen.returncode. See
|
||||
https://bugs.python.org/issue29335
|
||||
- subprocess: No longer close redirected FDs if they are in
|
||||
pass_fds. This is a bugfix from Python 3.7 applied to all
|
||||
versions gevent runs on.
|
||||
- Fix certain operations on a Greenlet in an invalid state
|
||||
(with an invalid parent) to raise a TypeError sooner rather
|
||||
than an AttributeError later. This is also slightly faster on
|
||||
CPython with Cython. Inspired by :issue:`1363` as reported by
|
||||
Carson Ip. This means that some extreme corner cases that
|
||||
might have passed by replacing a Greenlet's parent with
|
||||
something that's not a gevent hub now no longer will.
|
||||
- Fix: The spawning_stack for Greenlets on CPython should now
|
||||
have correct line numbers in more cases. See :pr:`1379`.
|
||||
- The result of gevent.ssl.SSLSocket.makefile() can be used as
|
||||
a context manager on Python 2.
|
||||
- Python 2: If the backport of the _thread_ module from futures
|
||||
has already been imported at monkey-patch time, also patch
|
||||
this module to be consistent. The pkg_resources package
|
||||
imports this, and pkg_resources is often imported early on
|
||||
Python 2 for namespace packages, so if futures is installed
|
||||
this will likely be the case.
|
||||
- Python 2: Avoid a memory leak when an io.BufferedWriter is
|
||||
wrapped around a socket. Reported by Damien Tournoud in
|
||||
:issue:`1318`.
|
||||
- Avoid unbounded memory usage when creating very deep spawn
|
||||
trees. Reported in :issue:`1371` by dmrlawson.
|
||||
- Win: Make examples/process.py do something useful. See
|
||||
:pr:`1378` by Robert Iannucci.
|
||||
- Spawning greenlets can be up to 10% faster. See :pr:`1379`.
|
||||
- Removed remove-testCongestion.patch which was subsumed in the
|
||||
upstream tarball.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 11 14:20:20 UTC 2019 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package python-gevent
|
||||
#
|
||||
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2020 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -16,19 +16,25 @@
|
||||
#
|
||||
|
||||
|
||||
# DON'T USE FOR SLE, USES BUNDLED VERSION OF LIBEV!!!
|
||||
%define use_bundled_libev 1
|
||||
|
||||
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
|
||||
%define modversion 1.5a3
|
||||
%define modname gevent
|
||||
Name: python-gevent
|
||||
Version: 1.4.0
|
||||
Version: 1.5.0~a3
|
||||
Release: 0
|
||||
Summary: Python network library that uses greenlet and libevent
|
||||
License: MIT
|
||||
Group: Development/Languages/Python
|
||||
URL: http://www.gevent.org/
|
||||
Source: https://files.pythonhosted.org/packages/source/g/gevent/gevent-%{version}.tar.gz
|
||||
# Source: https://files.pythonhosted.org/packages/source/g/gevent/gevent-%%{version}.tar.gz
|
||||
Source0: https://github.com/gevent/%{modname}/archive/%{modversion}.tar.gz#/%{modname}-%{modversion}.tar.gz
|
||||
Source100: %{name}-rpmlintrc
|
||||
Patch0: remove-testCongestion.patch
|
||||
Patch1: fix-tests.patch
|
||||
Patch2: use-libev-cffi.patch
|
||||
BuildRequires: %{python_module Cython}
|
||||
BuildRequires: %{python_module cffi}
|
||||
BuildRequires: %{python_module devel}
|
||||
BuildRequires: %{python_module dnspython}
|
||||
@@ -47,7 +53,9 @@ BuildRequires: pkgconfig
|
||||
BuildRequires: python-rpm-macros
|
||||
BuildRequires: python3-testsuite
|
||||
BuildRequires: pkgconfig(libcares)
|
||||
%if 0%{?use_bundled_libev}
|
||||
BuildRequires: pkgconfig(libev)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(libuv)
|
||||
Requires: python-cffi
|
||||
Requires: python-dnspython
|
||||
@@ -89,20 +97,19 @@ BuildArch: noarch
|
||||
Documentation and examples for %{name}.
|
||||
|
||||
%prep
|
||||
%setup -q -n gevent-%{version}
|
||||
%patch0 -p1
|
||||
%setup -q -n gevent-%{modversion}
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
sed -i -e '1s!bin/env python!bin/python!' examples/*.py
|
||||
|
||||
%build
|
||||
export LIBEV_EMBED=0
|
||||
export LIBEV_EMBED=%{use_bundled_libev}
|
||||
export CARES_EMBED=0
|
||||
export CFLAGS="%{optflags} -fno-strict-aliasing"
|
||||
%python_build
|
||||
|
||||
%install
|
||||
export LIBEV_EMBED=0
|
||||
export LIBEV_EMBED=%{use_bundled_libev}
|
||||
export CARES_EMBED=0
|
||||
%python_install
|
||||
%python_expand %fdupes %{buildroot}%{$python_sitearch}
|
||||
@@ -112,19 +119,26 @@ export CARES_EMBED=0
|
||||
# test_ssl.py is fragile as it expect specific responses from ssl and
|
||||
# does not account to our local changes
|
||||
# Also, gh#gevent/gevent#1390
|
||||
# Also, gh#gevent/gevent#1501
|
||||
# Test threading problems may be problem of bpo#36402, which has been
|
||||
# fixed in 3.7.5.
|
||||
cat <<'EOF' >> network_tests.txt
|
||||
test_urllib2net.py
|
||||
test__server.py
|
||||
test__server_pywsgi.py
|
||||
test__socket_ssl.py
|
||||
test___example_servers.py
|
||||
test__socket_dns.py
|
||||
test__getaddrinfo_import.py
|
||||
test__all__.py
|
||||
test___config.py
|
||||
test__doctests.py
|
||||
test__examples.py
|
||||
test_https.py
|
||||
test_urllib2_localnet.py
|
||||
test_ssl.py
|
||||
test__execmodules.py
|
||||
test__getaddrinfo_import.py
|
||||
test_httplib.py
|
||||
test__socket_dns.py
|
||||
test_socket.py
|
||||
test__socket_ssl.py
|
||||
test__ssl.py
|
||||
test_ssl.py
|
||||
test_threading.py
|
||||
test_urllib2_localnet.py
|
||||
test_urllib2net.py
|
||||
test_wsgiref.py
|
||||
EOF
|
||||
export GEVENT_RESOLVER=thread
|
||||
# Setting the TRAVIS environment variable makes some different configuration
|
||||
@@ -139,7 +153,7 @@ export LANG=en_US.UTF-8
|
||||
%files %{python_files}
|
||||
%doc AUTHORS README.rst TODO CHANGES.rst CONTRIBUTING.rst
|
||||
%license LICENSE*
|
||||
%{python_sitearch}/gevent-%{version}-py*.egg-info
|
||||
%{python_sitearch}/gevent-%{modversion}-py*.egg-info
|
||||
%{python_sitearch}/gevent/
|
||||
|
||||
%files -n python-gevent-doc
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
From: Antonio Larrosa <alarrosa@suse.com>
|
||||
Subject: Remove testCongestion from test_socket.py
|
||||
|
||||
Remove testCongestion from test_socket.py which is failing with a timeout.
|
||||
|
||||
Index: gevent-1.4.0/src/greentest/3.7/test_socket.py
|
||||
===================================================================
|
||||
--- gevent-1.4.0.orig/src/greentest/3.7/test_socket.py
|
||||
+++ gevent-1.4.0/src/greentest/3.7/test_socket.py
|
||||
@@ -2054,34 +2054,6 @@ class RDSTest(ThreadedRDSSocketTest):
|
||||
self.data = b'select'
|
||||
self.cli.sendto(self.data, 0, (HOST, self.port))
|
||||
|
||||
- def testCongestion(self):
|
||||
- # wait until the sender is done
|
||||
- self.evt.wait()
|
||||
-
|
||||
- def _testCongestion(self):
|
||||
- # test the behavior in case of congestion
|
||||
- self.data = b'fill'
|
||||
- self.cli.setblocking(False)
|
||||
- try:
|
||||
- # try to lower the receiver's socket buffer size
|
||||
- self.cli.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 16384)
|
||||
- except OSError:
|
||||
- pass
|
||||
- with self.assertRaises(OSError) as cm:
|
||||
- try:
|
||||
- # fill the receiver's socket buffer
|
||||
- while True:
|
||||
- self.cli.sendto(self.data, 0, (HOST, self.port))
|
||||
- finally:
|
||||
- # signal the receiver we're done
|
||||
- self.evt.set()
|
||||
- # sendto() should have failed with ENOBUFS
|
||||
- self.assertEqual(cm.exception.errno, errno.ENOBUFS)
|
||||
- # and we should have received a congestion notification through poll
|
||||
- r, w, x = select.select([self.serv], [], [], 3.0)
|
||||
- self.assertIn(self.serv, r)
|
||||
-
|
||||
-
|
||||
@unittest.skipIf(fcntl is None, "need fcntl")
|
||||
@unittest.skipUnless(HAVE_SOCKET_VSOCK,
|
||||
'VSOCK sockets required for this test.')
|
||||
Index: gevent-1.4.0/src/greentest/3.6/test_socket.py
|
||||
===================================================================
|
||||
--- gevent-1.4.0.orig/src/greentest/3.6/test_socket.py
|
||||
+++ gevent-1.4.0/src/greentest/3.6/test_socket.py
|
||||
@@ -1769,33 +1769,6 @@ class RDSTest(ThreadedRDSSocketTest):
|
||||
self.data = b'select'
|
||||
self.cli.sendto(self.data, 0, (HOST, self.port))
|
||||
|
||||
- def testCongestion(self):
|
||||
- # wait until the sender is done
|
||||
- self.evt.wait()
|
||||
-
|
||||
- def _testCongestion(self):
|
||||
- # test the behavior in case of congestion
|
||||
- self.data = b'fill'
|
||||
- self.cli.setblocking(False)
|
||||
- try:
|
||||
- # try to lower the receiver's socket buffer size
|
||||
- self.cli.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 16384)
|
||||
- except OSError:
|
||||
- pass
|
||||
- with self.assertRaises(OSError) as cm:
|
||||
- try:
|
||||
- # fill the receiver's socket buffer
|
||||
- while True:
|
||||
- self.cli.sendto(self.data, 0, (HOST, self.port))
|
||||
- finally:
|
||||
- # signal the receiver we're done
|
||||
- self.evt.set()
|
||||
- # sendto() should have failed with ENOBUFS
|
||||
- self.assertEqual(cm.exception.errno, errno.ENOBUFS)
|
||||
- # and we should have received a congestion notification through poll
|
||||
- r, w, x = select.select([self.serv], [], [], 3.0)
|
||||
- self.assertIn(self.serv, r)
|
||||
-
|
||||
|
||||
@unittest.skipUnless(thread, 'Threading required for this test.')
|
||||
class BasicTCPTest(SocketConnectedTest):
|
||||
Reference in New Issue
Block a user