From d377fbe3b5922a8b60985bdf078170cc6ca87154cd1228e579333eb48cbce246 Mon Sep 17 00:00:00 2001 From: Dirk Mueller Date: Tue, 9 Feb 2021 21:33:29 +0000 Subject: [PATCH 1/2] - update to 20.12.0: * Make worker threads created by :class:`gevent.threadpool.ThreadPool` install the :func:`threading.setprofile` and :func:`threading.settrace` hooks while tasks are running. This provides visibility to profiling and tracing tools like yappi. * Incorrectly passing an exception *instance* instead of an exception *type* to `gevent.Greenlet.kill` or `gevent.killall` no longer prints an exception to stderr. * Make destroying a hub try harder to more forcibly stop loop processing when there are outstanding callbacks or IO operations scheduled. * Improve the ability to use monkey-patched locks, and `gevent.lock.BoundedSemaphore`, across threads, especially when the various threads might not have a gevent hub or any other active greenlets. In particular, this handles some cases that previously raised ``LoopExit`` or would hang. Note that this may not be reliable on PyPy on Windows; such an environment is not currently recommended. * Make error reporting when a greenlet suffers a `RecursionError` more reliable. * gevent.pywsgi: Avoid printing an extra traceback ("TypeError: not enough arguments for format string") to standard error on certain invalid client requests. * Add support for PyPy2 7.3.3. * Python 2: Make ``gevent.subprocess.Popen.stdin`` objects have a ``write`` method that guarantees to write the entire argument in binary, unbuffered mode. This may require multiple trips around the event loop, but more closely matches the behaviour of the Python 2 standard library (and gevent prior to 1.5). The number of bytes written is still returned (instead of ``None``). See :issue:`1711`. * Make `gevent.pywsgi` stop trying to enforce the rules for reading chunked input or OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-gevent?expand=0&rev=73 --- gevent-20.12.0.tar.gz | 3 +++ gevent-20.9.0.tar.gz | 3 --- python-gevent.changes | 40 ++++++++++++++++++++++++++++++++++++++++ python-gevent.spec | 6 +++--- 4 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 gevent-20.12.0.tar.gz delete mode 100644 gevent-20.9.0.tar.gz diff --git a/gevent-20.12.0.tar.gz b/gevent-20.12.0.tar.gz new file mode 100644 index 0000000..4641833 --- /dev/null +++ b/gevent-20.12.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf23e14db991918cc67a9def3f073828b1c50a303364c4384ef9be0aeda0aad5 +size 4276595 diff --git a/gevent-20.9.0.tar.gz b/gevent-20.9.0.tar.gz deleted file mode 100644 index 782e1b6..0000000 --- a/gevent-20.9.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a43d6b8335eae4d1ebb3f9585bcb78c397c6f1f141eb2449838167cbb4a40ee3 -size 4237730 diff --git a/python-gevent.changes b/python-gevent.changes index 32d203f..20e7ea4 100644 --- a/python-gevent.changes +++ b/python-gevent.changes @@ -1,3 +1,43 @@ +------------------------------------------------------------------- +Tue Feb 9 21:32:04 UTC 2021 - Dirk Müller + +- update to 20.12.0: + * Make worker threads created by :class:`gevent.threadpool.ThreadPool` install + the :func:`threading.setprofile` and :func:`threading.settrace` hooks + while tasks are running. This provides visibility to profiling and + tracing tools like yappi. + * Incorrectly passing an exception *instance* instead of an exception + *type* to `gevent.Greenlet.kill` or `gevent.killall` no longer prints + an exception to stderr. + * Make destroying a hub try harder to more forcibly stop loop processing + when there are outstanding callbacks or IO operations scheduled. + * Improve the ability to use monkey-patched locks, and + `gevent.lock.BoundedSemaphore`, across threads, especially when the + various threads might not have a gevent hub or any other active + greenlets. In particular, this handles some cases that previously + raised ``LoopExit`` or would hang. Note that this may not be reliable + on PyPy on Windows; such an environment is not currently recommended. + * Make error reporting when a greenlet suffers a `RecursionError` more + reliable. + * gevent.pywsgi: Avoid printing an extra traceback ("TypeError: not + enough arguments for format string") to standard error on certain + invalid client requests. + * Add support for PyPy2 7.3.3. + * Python 2: Make ``gevent.subprocess.Popen.stdin`` objects have a + ``write`` method that guarantees to write the entire argument in + binary, unbuffered mode. This may require multiple trips around the + event loop, but more closely matches the behaviour of the Python 2 + standard library (and gevent prior to 1.5). The number of bytes + written is still returned (instead of ``None``). + See :issue:`1711`. + * Make `gevent.pywsgi` stop trying to enforce the rules for reading chunked input or + ``Content-Length`` terminated input when the connection is being + upgraded, for example to a websocket connection. Likewise, if the + protocol was switched by returning a ``101`` status, stop trying to + automatically chunk the responses. + * Remove the ``__dict__`` attribute from `gevent.socket.socket` objects. The + standard library socket do not have a ``__dict__``. + ------------------------------------------------------------------- Fri Dec 11 23:52:16 UTC 2020 - Matej Cepl diff --git a/python-gevent.spec b/python-gevent.spec index 4939baf..b8c69af 100644 --- a/python-gevent.spec +++ b/python-gevent.spec @@ -1,7 +1,7 @@ # # spec file for package python-gevent # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,10 +24,10 @@ %endif %{?!python_module:%define python_module() python-%{**} python3-%{**}} -%define modversion 20.9.0 +%define modversion 20.12.0 %define modname gevent Name: python-gevent -Version: 20.9.0 +Version: 20.12.0 Release: 0 Summary: Python network library that uses greenlet and libevent License: MIT From 626618e40cd3c6e7e67e643b3ab247b0de576aec338a138407f07dad8c37f48d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Fri, 12 Feb 2021 10:58:33 +0000 Subject: [PATCH 2/2] Accepting request 871401 from home:pmonrealgonzalez:branches:devel:languages:python - Relax the crypto policies for the test-suite - Update to 21.1.2: * Features: - Update the embedded libev from 4.31 to 4.33. - Update the embedded libuv from 1.38.0 to 1.40.0. - Update to 21.1.1: * Bugfixes: - Fix a TypeError on startup on Python 2 with zope.schema installed. - Update to 21.1.0: * Bugfixes: - Make gevent FileObjects more closely match the semantics of native file objects for the name attribute.: Objects opened from a file descriptor integer have that integer as their name. (Note that this is the Python 3 semantics; Python 2 native file objects returned from os.fdopen() have the string "" as their name , but here gevent always follows Python 3.) The name remains accessible after the file object is closed. * Misc: - Make gevent.event.AsyncResult print a warning when it detects improper cross-thread usage instead of hanging. - AsyncResult has never been safe to use from multiple threads. It, like most gevent objects, is intended to work with greenlets from a single thread. Using AsyncResult from multiple threads has undefined semantics. The safest way to communicate between threads is using an event loop async watcher. - Those undefined semantics changed in recent gevent versions, making it more likely that an abused AsyncResult would OBS-URL: https://build.opensuse.org/request/show/871401 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-gevent?expand=0&rev=74 --- fix-no-return-in-nonvoid-function.patch | 12 ++--- gevent-20.12.0.tar.gz | 3 -- gevent-21.1.2.tar.gz | 3 ++ python-gevent.changes | 60 +++++++++++++++++++++++++ python-gevent.spec | 7 ++- 5 files changed, 74 insertions(+), 11 deletions(-) delete mode 100644 gevent-20.12.0.tar.gz create mode 100644 gevent-21.1.2.tar.gz diff --git a/fix-no-return-in-nonvoid-function.patch b/fix-no-return-in-nonvoid-function.patch index 95c0833..9db3207 100644 --- a/fix-no-return-in-nonvoid-function.patch +++ b/fix-no-return-in-nonvoid-function.patch @@ -1,8 +1,8 @@ -Index: b/deps/libev/ev_iouring.c +Index: gevent-21.1.2/deps/libev/ev_iouring.c =================================================================== ---- a/deps/libev/ev_iouring.c -+++ b/deps/libev/ev_iouring.c -@@ -213,6 +213,9 @@ iouring_sqe_get (EV_P) +--- gevent-21.1.2.orig/deps/libev/ev_iouring.c ++++ gevent-21.1.2/deps/libev/ev_iouring.c +@@ -286,6 +286,9 @@ iouring_sqe_get (EV_P) return EV_SQES + (tail & EV_SQ_VAR (ring_mask)); } @@ -12,8 +12,8 @@ Index: b/deps/libev/ev_iouring.c inline_size struct io_uring_sqe * iouring_sqe_submit (EV_P_ struct io_uring_sqe *sqe) -@@ -260,6 +263,8 @@ iouring_internal_destroy (EV_P) - if (ev_is_active (&iouring_tfd_w )) ev_ref (EV_A); ev_io_stop (EV_A_ &iouring_tfd_w ); +@@ -330,6 +333,8 @@ iouring_internal_destroy (EV_P) + } } +#pragma GCC diagnostic pop diff --git a/gevent-20.12.0.tar.gz b/gevent-20.12.0.tar.gz deleted file mode 100644 index 4641833..0000000 --- a/gevent-20.12.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bf23e14db991918cc67a9def3f073828b1c50a303364c4384ef9be0aeda0aad5 -size 4276595 diff --git a/gevent-21.1.2.tar.gz b/gevent-21.1.2.tar.gz new file mode 100644 index 0000000..90b763d --- /dev/null +++ b/gevent-21.1.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fc6579fee04c0bc348cb1dcbc10f822129e6af7dcf2c52c24f1497cea3bd45c +size 4296331 diff --git a/python-gevent.changes b/python-gevent.changes index 20e7ea4..e774192 100644 --- a/python-gevent.changes +++ b/python-gevent.changes @@ -1,3 +1,63 @@ +------------------------------------------------------------------- +Fri Feb 12 10:18:37 UTC 2021 - Pedro Monreal + +- Relax the crypto policies for the test-suite + +------------------------------------------------------------------- +Fri Feb 12 10:10:53 UTC 2021 - Pedro Monreal + +- Update to 21.1.2: + * Features: + - Update the embedded libev from 4.31 to 4.33. + - Update the embedded libuv from 1.38.0 to 1.40.0. +- Update to 21.1.1: + * Bugfixes: + - Fix a TypeError on startup on Python 2 with zope.schema + installed. +- Update to 21.1.0: + * Bugfixes: + - Make gevent FileObjects more closely match the semantics of + native file objects for the name attribute.: Objects opened + from a file descriptor integer have that integer as their + name. (Note that this is the Python 3 semantics; Python 2 + native file objects returned from os.fdopen() have the string + "" as their name , but here gevent always follows + Python 3.) The name remains accessible after the file object + is closed. + * Misc: + - Make gevent.event.AsyncResult print a warning when it detects + improper cross-thread usage instead of hanging. + - AsyncResult has never been safe to use from multiple threads. + It, like most gevent objects, is intended to work with greenlets + from a single thread. Using AsyncResult from multiple threads + has undefined semantics. The safest way to communicate between + threads is using an event loop async watcher. + - Those undefined semantics changed in recent gevent versions, + making it more likely that an abused AsyncResult would + misbehave in ways that could cause the program to hang. + - Now, when AsyncResult detects a situation that would hang, it + prints a warning to stderr. Note that this is best-effort, and + hangs are still possible, especially under PyPy 7.3.3. + - At the same time, AsyncResult is tuned to behave more like it + did in older versions, meaning that the hang is once again much + less likely. If you were getting lucky and using AsyncResult + successfully across threads, this may restore your luck. In + addition, cross-thread wakeups are faster. Note that the gevent + hub now uses an extra file descriptor to implement this. + - Similar changes apply to gevent.event.Event +- Update to 20.12.1: + * Features: + - Make :class:`gevent.Greenlet` objects function as context + managers. When the with suite finishes, execution doesn't + continue until the greenlet is finished. This can be a simpler + alternative to a :class:`gevent.pool.Group` when the lifetime + of greenlets can be lexically scoped. + * Bugfixes: + - Make gevent's Semaphore objects properly handle native thread + identifiers larger than can be stored in a C long on Python 3, + instead of raising an OverflowError. +- Rebase fix-no-return-in-nonvoid-function.patch + ------------------------------------------------------------------- Tue Feb 9 21:32:04 UTC 2021 - Dirk Müller diff --git a/python-gevent.spec b/python-gevent.spec index b8c69af..07b7738 100644 --- a/python-gevent.spec +++ b/python-gevent.spec @@ -24,10 +24,10 @@ %endif %{?!python_module:%define python_module() python-%{**} python3-%{**}} -%define modversion 20.12.0 +%define modversion 21.1.2 %define modname gevent Name: python-gevent -Version: 20.12.0 +Version: 21.1.2 Release: 0 Summary: Python network library that uses greenlet and libevent License: MIT @@ -147,6 +147,9 @@ export TRAVIS=1 # for Appveyor that we also need in obs for "wait_threads() failed to cleanup 1 threads" export APPVEYOR=1 export LANG=en_US.UTF-8 +# Relax the crypto policies for the test-suite +export OPENSSL_SYSTEM_CIPHERS_OVERRIDE=xyz_nonexistent_file +export OPENSSL_CONF='' # don't bother with python2 tests %{python_expand if [ "$python" != "python2" ]; then PYTHONPATH=%{buildroot}%{$python_sitearch} $python -m gevent.tests --ignore network_tests.txt