Hello community, here is the log from the commit of package python-gevent for openSUSE:Factory checked in at 2020-03-08 22:20:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-gevent (Old) and /work/SRC/openSUSE:Factory/.python-gevent.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gevent" Sun Mar 8 22:20:58 2020 rev:31 rq:766423 version:1.5.0~a3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-gevent/python-gevent.changes 2019-04-14 12:21:33.199698598 +0200 +++ /work/SRC/openSUSE:Factory/.python-gevent.new.26092/python-gevent.changes 2020-03-08 22:20:58.599960444 +0100 @@ -1,0 +2,161 @@ +Fri Jan 3 11:51:00 CET 2020 - Matej Cepl <mc...@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 <mc...@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. + +------------------------------------------------------------------- Old: ---- gevent-1.4.0.tar.gz remove-testCongestion.patch New: ---- gevent-1.5a3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-gevent.spec ++++++ --- /var/tmp/diff_new_pack.SqnlxI/_old 2020-03-08 22:20:59.751961155 +0100 +++ /var/tmp/diff_new_pack.SqnlxI/_new 2020-03-08 22:20:59.755961158 +0100 @@ -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: 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 @@ 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 @@ # 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 @@ %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 ++++++ fix-tests.patch ++++++ --- /var/tmp/diff_new_pack.SqnlxI/_old 2020-03-08 22:20:59.779961173 +0100 +++ /var/tmp/diff_new_pack.SqnlxI/_new 2020-03-08 22:20:59.779961173 +0100 @@ -4,32 +4,23 @@ - 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): ++++++ gevent-1.4.0.tar.gz -> gevent-1.5a3.tar.gz ++++++ ++++ 447663 lines of diff (skipped)