Sync from SUSE:ALP:Source:Standard:1.0 python-eventlet revision 71bf11cbf6641840256ac9b36addbb4d
This commit is contained in:
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
||||
435
denose-eventlet.patch
Normal file
435
denose-eventlet.patch
Normal file
@@ -0,0 +1,435 @@
|
||||
Index: eventlet-0.33.0/setup.py
|
||||
===================================================================
|
||||
--- eventlet-0.33.0.orig/setup.py
|
||||
+++ eventlet-0.33.0/setup.py
|
||||
@@ -27,7 +27,7 @@ setuptools.setup(
|
||||
'README.rst'
|
||||
)
|
||||
).read(),
|
||||
- test_suite='nose.collector',
|
||||
+ test_suite='tests',
|
||||
classifiers=[
|
||||
"Development Status :: 4 - Beta",
|
||||
"Intended Audience :: Developers",
|
||||
Index: eventlet-0.33.0/eventlet.egg-info/SOURCES.txt
|
||||
===================================================================
|
||||
--- eventlet-0.33.0.orig/eventlet.egg-info/SOURCES.txt
|
||||
+++ eventlet-0.33.0/eventlet.egg-info/SOURCES.txt
|
||||
@@ -175,7 +175,6 @@ tests/greenthread_test.py
|
||||
tests/hub_test.py
|
||||
tests/mock.py
|
||||
tests/mysqldb_test.py
|
||||
-tests/nosewrapper.py
|
||||
tests/openssl_test.py
|
||||
tests/os_test.py
|
||||
tests/parse_results.py
|
||||
@@ -275,4 +274,4 @@ tests/stdlib/test_threading_local.py
|
||||
tests/stdlib/test_timeout.py
|
||||
tests/stdlib/test_urllib.py
|
||||
tests/stdlib/test_urllib2.py
|
||||
-tests/stdlib/test_urllib2_localnet.py
|
||||
\ No newline at end of file
|
||||
+tests/stdlib/test_urllib2_localnet.py
|
||||
Index: eventlet-0.33.0/tests/greenio_test.py
|
||||
===================================================================
|
||||
--- eventlet-0.33.0.orig/tests/greenio_test.py
|
||||
+++ eventlet-0.33.0/tests/greenio_test.py
|
||||
@@ -9,8 +9,6 @@ import socket as _orig_sock
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
-from nose.tools import eq_
|
||||
-
|
||||
import eventlet
|
||||
from eventlet import event, greenio, debug
|
||||
from eventlet.hubs import get_hub
|
||||
@@ -39,7 +37,7 @@ def expect_socket_timeout(function, *arg
|
||||
raise AssertionError("socket.timeout not raised")
|
||||
except socket.timeout as e:
|
||||
assert hasattr(e, 'args')
|
||||
- eq_(e.args[0], 'timed out')
|
||||
+ assert e.args[0] == 'timed out'
|
||||
|
||||
|
||||
def min_buf_size():
|
||||
@@ -674,8 +672,8 @@ class TestGreenSocket(tests.LimitedTestC
|
||||
sender.sendto(b'second', 0, address)
|
||||
|
||||
sender_address = ('127.0.0.1', sender.getsockname()[1])
|
||||
- eq_(receiver.recvfrom(1024), (b'first', sender_address))
|
||||
- eq_(receiver.recvfrom(1024), (b'second', sender_address))
|
||||
+ assert receiver.recvfrom(1024) == (b'first', sender_address)
|
||||
+ assert receiver.recvfrom(1024) == (b'second', sender_address)
|
||||
|
||||
|
||||
def test_get_fileno_of_a_socket_works():
|
||||
Index: eventlet-0.33.0/tests/nosewrapper.py
|
||||
===================================================================
|
||||
--- eventlet-0.33.0.orig/tests/nosewrapper.py
|
||||
+++ eventlet-0.33.0/tests/nosewrapper.py
|
||||
@@ -1,20 +1,13 @@
|
||||
""" This script simply gets the paths correct for testing eventlet with the
|
||||
hub extension for Nose."""
|
||||
-import nose
|
||||
from os.path import dirname, realpath, abspath
|
||||
import sys
|
||||
+import unittest
|
||||
|
||||
|
||||
parent_dir = dirname(dirname(realpath(abspath(__file__))))
|
||||
if parent_dir not in sys.path:
|
||||
sys.path.insert(0, parent_dir)
|
||||
|
||||
-# hudson does a better job printing the test results if the exit value is 0
|
||||
-zero_status = '--force-zero-status'
|
||||
-if zero_status in sys.argv:
|
||||
- sys.argv.remove(zero_status)
|
||||
- launch = nose.run
|
||||
-else:
|
||||
- launch = nose.main
|
||||
-
|
||||
-launch(argv=sys.argv)
|
||||
+if __name__ == '__main__':
|
||||
+ unittest.main()
|
||||
Index: eventlet-0.33.0/tests/__init__.py
|
||||
===================================================================
|
||||
--- eventlet-0.33.0.orig/tests/__init__.py
|
||||
+++ eventlet-0.33.0/tests/__init__.py
|
||||
@@ -20,7 +20,7 @@ import sys
|
||||
import unittest
|
||||
import warnings
|
||||
|
||||
-from nose.plugins.skip import SkipTest
|
||||
+from unittest import SkipTest
|
||||
|
||||
import eventlet
|
||||
from eventlet import tpool
|
||||
@@ -223,7 +223,6 @@ class LimitedTestCase(unittest.TestCase)
|
||||
def check_idle_cpu_usage(duration, allowed_part):
|
||||
if resource is None:
|
||||
# TODO: use https://code.google.com/p/psutil/
|
||||
- from nose.plugins.skip import SkipTest
|
||||
raise SkipTest('CPU usage testing not supported (`import resource` failed)')
|
||||
|
||||
r1 = resource.getrusage(resource.RUSAGE_SELF)
|
||||
Index: eventlet-0.33.0/tests/dagpool_test.py
|
||||
===================================================================
|
||||
--- eventlet-0.33.0.orig/tests/dagpool_test.py
|
||||
+++ eventlet-0.33.0/tests/dagpool_test.py
|
||||
@@ -5,7 +5,6 @@
|
||||
@brief Test DAGPool class
|
||||
"""
|
||||
|
||||
-from nose.tools import *
|
||||
import eventlet
|
||||
from eventlet.dagpool import DAGPool, Collision, PropagateError
|
||||
import six
|
||||
@@ -13,8 +12,8 @@ from contextlib import contextmanager
|
||||
import itertools
|
||||
|
||||
|
||||
-# Not all versions of nose.tools.assert_raises() support the usage in this
|
||||
-# module, but it's straightforward enough to code that explicitly.
|
||||
+# Not all versions of assert_raises() support the usage in this module,
|
||||
+# but it's straightforward enough to code that explicitly.
|
||||
@contextmanager
|
||||
def assert_raises(exc):
|
||||
"""exc is an exception class"""
|
||||
@@ -163,7 +162,7 @@ class Capture(object):
|
||||
# a set. Make a set containing its elements.
|
||||
setlist.append(set(subseq))
|
||||
# Now that we've massaged 'sequence' into 'setlist', compare.
|
||||
- assert_equal(self.sequence, setlist)
|
||||
+ assert self.sequence == setlist
|
||||
|
||||
|
||||
# ****************************************************************************
|
||||
@@ -191,14 +190,14 @@ def test_init():
|
||||
with check_no_suspend():
|
||||
results = pool.waitall()
|
||||
# with no spawn() or post(), waitall() returns preload data
|
||||
- assert_equals(results, dict(a=1, b=2, c=3))
|
||||
+ assert results == dict(a=1, b=2, c=3)
|
||||
|
||||
# preload sequence of pairs
|
||||
pool = DAGPool([("d", 4), ("e", 5), ("f", 6)])
|
||||
# this must not hang
|
||||
with check_no_suspend():
|
||||
results = pool.waitall()
|
||||
- assert_equals(results, dict(d=4, e=5, f=6))
|
||||
+ assert results == dict(d=4, e=5, f=6)
|
||||
|
||||
|
||||
def test_wait_each_empty():
|
||||
@@ -216,10 +215,10 @@ def test_wait_each_preload():
|
||||
with check_no_suspend():
|
||||
# wait_each() may deliver in arbitrary order; collect into a dict
|
||||
# for comparison
|
||||
- assert_equals(dict(pool.wait_each("abc")), dict(a=1, b=2, c=3))
|
||||
+ assert dict(pool.wait_each("abc")) == dict(a=1, b=2, c=3)
|
||||
|
||||
# while we're at it, test wait() for preloaded keys
|
||||
- assert_equals(pool.wait("bc"), dict(b=2, c=3))
|
||||
+ assert pool.wait("bc") == dict(b=2, c=3)
|
||||
|
||||
|
||||
def post_each(pool, capture):
|
||||
@@ -257,7 +256,7 @@ def test_wait_posted():
|
||||
eventlet.spawn(post_each, pool, capture)
|
||||
gotten = pool.wait("bcdefg")
|
||||
capture.add("got all")
|
||||
- assert_equals(gotten,
|
||||
+ assert (gotten ==
|
||||
dict(b=2, c=3,
|
||||
d="dval", e="eval",
|
||||
f="fval", g="gval"))
|
||||
@@ -285,7 +284,7 @@ def test_spawn_collision_spawn():
|
||||
pool = DAGPool()
|
||||
pool.spawn("a", (), lambda key, results: "aval")
|
||||
# hasn't yet even started
|
||||
- assert_equals(pool.get("a"), None)
|
||||
+ assert pool.get("a") == None
|
||||
with assert_raises(Collision):
|
||||
# Attempting to spawn again with same key should collide even if the
|
||||
# first spawned greenthread hasn't yet had a chance to run.
|
||||
@@ -293,7 +292,7 @@ def test_spawn_collision_spawn():
|
||||
# now let the spawned eventlet run
|
||||
eventlet.sleep(0)
|
||||
# should have finished
|
||||
- assert_equals(pool.get("a"), "aval")
|
||||
+ assert pool.get("a") == "aval"
|
||||
with assert_raises(Collision):
|
||||
# Attempting to spawn with same key collides even when the greenthread
|
||||
# has completed.
|
||||
@@ -324,60 +323,60 @@ def test_spawn_multiple():
|
||||
capture.step()
|
||||
# but none of them has yet produced a result
|
||||
for k in "defgh":
|
||||
- assert_equals(pool.get(k), None)
|
||||
- assert_equals(set(pool.keys()), set("abc"))
|
||||
- assert_equals(dict(pool.items()), dict(a=1, b=2, c=3))
|
||||
- assert_equals(pool.running(), 5)
|
||||
- assert_equals(set(pool.running_keys()), set("defgh"))
|
||||
- assert_equals(pool.waiting(), 1)
|
||||
- assert_equals(pool.waiting_for(), dict(h=set("defg")))
|
||||
- assert_equals(pool.waiting_for("d"), set())
|
||||
- assert_equals(pool.waiting_for("c"), set())
|
||||
+ assert pool.get(k) == None
|
||||
+ assert set(pool.keys()) == set("abc")
|
||||
+ assert dict(pool.items()) == dict(a=1, b=2, c=3)
|
||||
+ assert pool.running() == 5
|
||||
+ assert set(pool.running_keys()) == set("defgh")
|
||||
+ assert pool.waiting() == 1
|
||||
+ assert pool.waiting_for() == dict(h=set("defg"))
|
||||
+ assert pool.waiting_for("d") == set()
|
||||
+ assert pool.waiting_for("c") == set()
|
||||
with assert_raises(KeyError):
|
||||
pool.waiting_for("j")
|
||||
- assert_equals(pool.waiting_for("h"), set("defg"))
|
||||
+ assert pool.waiting_for("h") == set("defg")
|
||||
|
||||
# let one of the upstream greenthreads complete
|
||||
events["f"].send("fval")
|
||||
spin()
|
||||
capture.step()
|
||||
- assert_equals(pool.get("f"), "fval")
|
||||
- assert_equals(set(pool.keys()), set("abcf"))
|
||||
- assert_equals(dict(pool.items()), dict(a=1, b=2, c=3, f="fval"))
|
||||
- assert_equals(pool.running(), 4)
|
||||
- assert_equals(set(pool.running_keys()), set("degh"))
|
||||
- assert_equals(pool.waiting(), 1)
|
||||
- assert_equals(pool.waiting_for("h"), set("deg"))
|
||||
+ assert pool.get("f") == "fval"
|
||||
+ assert set(pool.keys()) == set("abcf")
|
||||
+ assert dict(pool.items()) == dict(a=1, b=2, c=3, f="fval")
|
||||
+ assert pool.running() == 4
|
||||
+ assert set(pool.running_keys()) == set("degh")
|
||||
+ assert pool.waiting() == 1
|
||||
+ assert pool.waiting_for("h") == set("deg")
|
||||
|
||||
# now two others
|
||||
events["e"].send("eval")
|
||||
events["g"].send("gval")
|
||||
spin()
|
||||
capture.step()
|
||||
- assert_equals(pool.get("e"), "eval")
|
||||
- assert_equals(pool.get("g"), "gval")
|
||||
- assert_equals(set(pool.keys()), set("abcefg"))
|
||||
- assert_equals(dict(pool.items()),
|
||||
+ assert pool.get("e") == "eval"
|
||||
+ assert pool.get("g") == "gval"
|
||||
+ assert set(pool.keys()) == set("abcefg")
|
||||
+ assert (dict(pool.items()) ==
|
||||
dict(a=1, b=2, c=3, e="eval", f="fval", g="gval"))
|
||||
- assert_equals(pool.running(), 2)
|
||||
- assert_equals(set(pool.running_keys()), set("dh"))
|
||||
- assert_equals(pool.waiting(), 1)
|
||||
- assert_equals(pool.waiting_for("h"), set("d"))
|
||||
+ assert pool.running() == 2
|
||||
+ assert set(pool.running_keys()) == set("dh")
|
||||
+ assert pool.waiting() == 1
|
||||
+ assert pool.waiting_for("h") == set("d")
|
||||
|
||||
# last one
|
||||
events["d"].send("dval")
|
||||
# make sure both pool greenthreads get a chance to run
|
||||
spin()
|
||||
capture.step()
|
||||
- assert_equals(pool.get("d"), "dval")
|
||||
- assert_equals(set(pool.keys()), set("abcdefgh"))
|
||||
- assert_equals(dict(pool.items()),
|
||||
+ assert pool.get("d") == "dval"
|
||||
+ assert set(pool.keys()) == set("abcdefgh")
|
||||
+ assert (dict(pool.items()) ==
|
||||
dict(a=1, b=2, c=3,
|
||||
d="dval", e="eval", f="fval", g="gval", h="hval"))
|
||||
- assert_equals(pool.running(), 0)
|
||||
- assert_false(pool.running_keys())
|
||||
- assert_equals(pool.waiting(), 0)
|
||||
- assert_equals(pool.waiting_for("h"), set())
|
||||
+ assert pool.running() == 0
|
||||
+ assert not pool.running_keys()
|
||||
+ assert pool.waiting() == 0
|
||||
+ assert pool.waiting_for("h") == set()
|
||||
|
||||
capture.validate([
|
||||
["h got b", "h got c"],
|
||||
@@ -432,13 +431,13 @@ def test_spawn_many():
|
||||
spin()
|
||||
# verify that e completed (also that post(key) within greenthread
|
||||
# overrides implicit post of return value, which would be None)
|
||||
- assert_equals(pool.get("e"), "e")
|
||||
+ assert pool.get("e") == "e"
|
||||
|
||||
# With the dependency graph shown above, it is not guaranteed whether b or
|
||||
# c will complete first. Handle either case.
|
||||
sequence = capture.sequence[:]
|
||||
sequence[1:3] = [set([sequence[1].pop(), sequence[2].pop()])]
|
||||
- assert_equals(sequence,
|
||||
+ assert (sequence ==
|
||||
[set(["a done"]),
|
||||
set(["b done", "c done"]),
|
||||
set(["d done"]),
|
||||
@@ -466,7 +465,7 @@ def test_wait_each_all():
|
||||
for pos in range(len(keys)):
|
||||
# next value from wait_each()
|
||||
k, v = next(each)
|
||||
- assert_equals(k, keys[pos])
|
||||
+ assert k == keys[pos]
|
||||
# advance every pool greenlet as far as it can go
|
||||
spin()
|
||||
# everything from keys[:pos+1] should have a value by now
|
||||
@@ -494,7 +493,7 @@ def test_kill():
|
||||
pool.kill("a")
|
||||
# didn't run
|
||||
spin()
|
||||
- assert_equals(pool.get("a"), None)
|
||||
+ assert pool.get("a") == None
|
||||
# killing it forgets about it
|
||||
with assert_raises(KeyError):
|
||||
pool.kill("a")
|
||||
@@ -505,7 +504,7 @@ def test_kill():
|
||||
with assert_raises(KeyError):
|
||||
pool.kill("a")
|
||||
# verify it ran to completion
|
||||
- assert_equals(pool.get("a"), 2)
|
||||
+ assert pool.get("a") == 2
|
||||
|
||||
|
||||
def test_post_collision_preload():
|
||||
@@ -533,7 +532,7 @@ def test_post_collision_spawn():
|
||||
pool.kill("a")
|
||||
# now we can post
|
||||
pool.post("a", 3)
|
||||
- assert_equals(pool.get("a"), 3)
|
||||
+ assert pool.get("a") == 3
|
||||
|
||||
pool = DAGPool()
|
||||
pool.spawn("a", (), lambda key, result: 4)
|
||||
@@ -553,10 +552,10 @@ def test_post_replace():
|
||||
pool = DAGPool()
|
||||
pool.post("a", 1)
|
||||
pool.post("a", 2, replace=True)
|
||||
- assert_equals(pool.get("a"), 2)
|
||||
- assert_equals(dict(pool.wait_each("a")), dict(a=2))
|
||||
- assert_equals(pool.wait("a"), dict(a=2))
|
||||
- assert_equals(pool["a"], 2)
|
||||
+ assert pool.get("a") == 2
|
||||
+ assert dict(pool.wait_each("a")) == dict(a=2)
|
||||
+ assert pool.wait("a") == dict(a=2)
|
||||
+ assert pool["a"] == 2
|
||||
|
||||
|
||||
def waitfor(capture, pool, key):
|
||||
@@ -598,14 +597,14 @@ def test_waitall_exc():
|
||||
try:
|
||||
pool.waitall()
|
||||
except PropagateError as err:
|
||||
- assert_equals(err.key, "a")
|
||||
+ assert err.key == "a"
|
||||
assert isinstance(err.exc, BogusError), \
|
||||
"exc attribute is {0}, not BogusError".format(err.exc)
|
||||
- assert_equals(str(err.exc), "bogus")
|
||||
+ assert str(err.exc) == "bogus"
|
||||
msg = str(err)
|
||||
- assert_in("PropagateError(a)", msg)
|
||||
- assert_in("BogusError", msg)
|
||||
- assert_in("bogus", msg)
|
||||
+ assert "PropagateError(a)" in msg
|
||||
+ assert "BogusError" in msg
|
||||
+ assert "bogus" in msg
|
||||
|
||||
|
||||
def test_propagate_exc():
|
||||
@@ -616,20 +615,20 @@ def test_propagate_exc():
|
||||
try:
|
||||
pool["c"]
|
||||
except PropagateError as errc:
|
||||
- assert_equals(errc.key, "c")
|
||||
+ assert errc.key == "c"
|
||||
errb = errc.exc
|
||||
- assert_equals(errb.key, "b")
|
||||
+ assert errb.key == "b"
|
||||
erra = errb.exc
|
||||
- assert_equals(erra.key, "a")
|
||||
+ assert erra.key == "a"
|
||||
assert isinstance(erra.exc, BogusError), \
|
||||
"exc attribute is {0}, not BogusError".format(erra.exc)
|
||||
- assert_equals(str(erra.exc), "bogus")
|
||||
+ assert str(erra.exc) == "bogus"
|
||||
msg = str(errc)
|
||||
- assert_in("PropagateError(a)", msg)
|
||||
- assert_in("PropagateError(b)", msg)
|
||||
- assert_in("PropagateError(c)", msg)
|
||||
- assert_in("BogusError", msg)
|
||||
- assert_in("bogus", msg)
|
||||
+ assert "PropagateError(a)" in msg
|
||||
+ assert "PropagateError(b)" in msg
|
||||
+ assert "PropagateError(c)" in msg
|
||||
+ assert "BogusError" in msg
|
||||
+ assert "bogus" in msg
|
||||
|
||||
|
||||
def test_wait_each_exc():
|
||||
@@ -681,13 +680,13 @@ def test_post_get_exc():
|
||||
pass
|
||||
|
||||
# wait_each_success() filters
|
||||
- assert_equals(dict(pool.wait_each_success()), dict(a=bogua))
|
||||
- assert_equals(dict(pool.wait_each_success("ab")), dict(a=bogua))
|
||||
- assert_equals(dict(pool.wait_each_success("a")), dict(a=bogua))
|
||||
- assert_equals(dict(pool.wait_each_success("b")), {})
|
||||
+ assert dict(pool.wait_each_success()) == dict(a=bogua)
|
||||
+ assert dict(pool.wait_each_success("ab")) == dict(a=bogua)
|
||||
+ assert dict(pool.wait_each_success("a")) == dict(a=bogua)
|
||||
+ assert dict(pool.wait_each_success("b")) == {}
|
||||
|
||||
# wait_each_exception() filters the other way
|
||||
- assert_equals(dict(pool.wait_each_exception()), dict(b=bogub))
|
||||
- assert_equals(dict(pool.wait_each_exception("ab")), dict(b=bogub))
|
||||
- assert_equals(dict(pool.wait_each_exception("a")), {})
|
||||
- assert_equals(dict(pool.wait_each_exception("b")), dict(b=bogub))
|
||||
+ assert dict(pool.wait_each_exception()) == dict(b=bogub)
|
||||
+ assert dict(pool.wait_each_exception("ab")) == dict(b=bogub)
|
||||
+ assert dict(pool.wait_each_exception("a")) == {}
|
||||
+ assert dict(pool.wait_each_exception("b")) == dict(b=bogub)
|
||||
BIN
eventlet-0.33.3.tar.gz
LFS
Normal file
BIN
eventlet-0.33.3.tar.gz
LFS
Normal file
Binary file not shown.
119
fix-py3-rlock.patch
Normal file
119
fix-py3-rlock.patch
Normal file
@@ -0,0 +1,119 @@
|
||||
diff --git a/eventlet/patcher.py b/eventlet/patcher.py
|
||||
index b249d6f19..4eeb93439 100644
|
||||
--- a/eventlet/patcher.py
|
||||
+++ b/eventlet/patcher.py
|
||||
@@ -412,6 +412,23 @@ def _green_existing_locks():
|
||||
elif py3_style and not isinstance(obj, pyrlock_type):
|
||||
_fix_py3_rlock(obj)
|
||||
|
||||
+ if (3, 0) <= sys.version_info <= (3, 10):
|
||||
+ # Older py3 won't have RLocks show up in gc.get_objects() -- see
|
||||
+ # https://github.com/eventlet/eventlet/issues/546 -- so green a handful
|
||||
+ # that we know are significant
|
||||
+ import logging
|
||||
+ if isinstance(logging._lock, rlock_type):
|
||||
+ _fix_py3_rlock(logging._lock)
|
||||
+ logging._acquireLock()
|
||||
+ try:
|
||||
+ for ref in logging._handlerList:
|
||||
+ handler = ref()
|
||||
+ if handler and isinstance(handler.lock, rlock_type):
|
||||
+ _fix_py3_rlock(handler.lock)
|
||||
+ del handler
|
||||
+ finally:
|
||||
+ logging._releaseLock()
|
||||
+
|
||||
|
||||
def _fix_py2_rlock(rlock, tid):
|
||||
import eventlet.green.threading
|
||||
@@ -425,7 +442,7 @@ def _fix_py2_rlock(rlock, tid):
|
||||
|
||||
def _fix_py3_rlock(old):
|
||||
import gc
|
||||
- import threading
|
||||
+ from eventlet.green import threading
|
||||
new = threading._PyRLock()
|
||||
while old._is_owned():
|
||||
old.release()
|
||||
@@ -434,14 +451,23 @@ def _fix_py3_rlock(old):
|
||||
new.acquire()
|
||||
gc.collect()
|
||||
for ref in gc.get_referrers(old):
|
||||
- try:
|
||||
- ref_vars = vars(ref)
|
||||
- except TypeError:
|
||||
- pass
|
||||
+ if isinstance(ref, dict):
|
||||
+ for k, v in ref.items():
|
||||
+ if v is old:
|
||||
+ ref[k] = new
|
||||
+ elif isinstance(ref, list):
|
||||
+ for k, v in enumerate(ref):
|
||||
+ if v is old:
|
||||
+ ref[k] = new
|
||||
else:
|
||||
- for k, v in ref_vars.items():
|
||||
- if v == old:
|
||||
- setattr(ref, k, new)
|
||||
+ try:
|
||||
+ ref_vars = vars(ref)
|
||||
+ except TypeError:
|
||||
+ pass
|
||||
+ else:
|
||||
+ for k, v in ref_vars.items():
|
||||
+ if v is old:
|
||||
+ setattr(ref, k, new)
|
||||
|
||||
|
||||
def _green_os_modules():
|
||||
diff --git a/tests/isolated/patcher_existing_logging_module_lock.py b/tests/isolated/patcher_existing_logging_module_lock.py
|
||||
new file mode 100644
|
||||
index 000000000..2acad62ee
|
||||
--- /dev/null
|
||||
+++ b/tests/isolated/patcher_existing_logging_module_lock.py
|
||||
@@ -0,0 +1,30 @@
|
||||
+# https://github.com/eventlet/eventlet/issues/730
|
||||
+# https://github.com/eventlet/eventlet/pull/754
|
||||
+__test__ = False
|
||||
+
|
||||
+
|
||||
+if __name__ == "__main__":
|
||||
+ import logging
|
||||
+ import eventlet.patcher
|
||||
+ eventlet.patcher.monkey_patch(thread=True)
|
||||
+ import threading
|
||||
+
|
||||
+ def take_and_release():
|
||||
+ try:
|
||||
+ logging._lock.acquire()
|
||||
+ finally:
|
||||
+ logging._lock.release()
|
||||
+
|
||||
+ assert logging._lock.acquire()
|
||||
+ t = threading.Thread(target=take_and_release)
|
||||
+ t.daemon = True
|
||||
+ t.start()
|
||||
+
|
||||
+ t.join(timeout=0.1)
|
||||
+ # we should timeout, and the thread is still blocked waiting on the lock
|
||||
+ assert t.is_alive()
|
||||
+
|
||||
+ logging._lock.release()
|
||||
+ t.join(timeout=0.1)
|
||||
+ assert not t.is_alive()
|
||||
+ print("pass")
|
||||
diff --git a/tests/patcher_test.py b/tests/patcher_test.py
|
||||
index dbf6e1c71..e8d6f3300 100644
|
||||
--- a/tests/patcher_test.py
|
||||
+++ b/tests/patcher_test.py
|
||||
@@ -485,6 +485,10 @@ def test_patcher_existing_locks_unlocked():
|
||||
tests.run_isolated('patcher_existing_locks_unlocked.py')
|
||||
|
||||
|
||||
+def test_patcher_existing_logging_module_lock():
|
||||
+ tests.run_isolated('patcher_existing_logging_module_lock.py')
|
||||
+
|
||||
+
|
||||
def test_importlib_lock():
|
||||
tests.run_isolated('patcher_importlib_lock.py')
|
||||
|
||||
20
newdnspython.patch
Normal file
20
newdnspython.patch
Normal file
@@ -0,0 +1,20 @@
|
||||
--- eventlet-0.33.0.orig/tests/greendns_test.py
|
||||
+++ eventlet-0.33.0/tests/greendns_test.py
|
||||
@@ -888,7 +888,7 @@ class TinyDNSTests(tests.LimitedTestCase
|
||||
# https://github.com/eventlet/eventlet/issues/499
|
||||
# None means we don't want the server to find the IP
|
||||
with tests.dns_tcp_server(None) as dnsaddr:
|
||||
- resolver = Resolver()
|
||||
+ resolver = Resolver(configure=False)
|
||||
resolver.nameservers = [dnsaddr[0]]
|
||||
resolver.nameserver_ports[dnsaddr[0]] = dnsaddr[1]
|
||||
|
||||
@@ -899,7 +899,7 @@ class TinyDNSTests(tests.LimitedTestCase
|
||||
# https://github.com/eventlet/eventlet/issues/499
|
||||
expected_ip = "192.168.1.1"
|
||||
with tests.dns_tcp_server(expected_ip) as dnsaddr:
|
||||
- resolver = Resolver()
|
||||
+ resolver = Resolver(configure=False)
|
||||
resolver.nameservers = [dnsaddr[0]]
|
||||
resolver.nameserver_ports[dnsaddr[0]] = dnsaddr[1]
|
||||
response = resolver.query('host.example.com', 'a', tcp=True)
|
||||
50
python-eventlet-FTBFS2028.patch
Normal file
50
python-eventlet-FTBFS2028.patch
Normal file
@@ -0,0 +1,50 @@
|
||||
https://github.com/eventlet/eventlet/pull/643
|
||||
|
||||
From df6b965c1b03a688c643dc7f5845cb88287027d1 Mon Sep 17 00:00:00 2001
|
||||
From: "Bernhard M. Wiedemann" <bwiedemann@suse.de>
|
||||
Date: Fri, 28 Aug 2020 20:24:42 +0200
|
||||
Subject: [PATCH] Extend test cert to 2049
|
||||
|
||||
This change makes tests pass after 2028
|
||||
Background:
|
||||
As part of my work on reproducible builds for openSUSE, I check that software still gives identical build results in the future.
|
||||
The usual offset is +15 years, because that is how long I expect some software will be used in some places.
|
||||
This showed up failing tests in our package build.
|
||||
|
||||
See https://reproducible-builds.org/ for why this matters.
|
||||
---
|
||||
tests/test_server.crt | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/tests/test_server.crt b/tests/test_server.crt
|
||||
index 67c9adc8b..78759e810 100644
|
||||
--- a/tests/test_server.crt
|
||||
+++ b/tests/test_server.crt
|
||||
@@ -2,7 +2,7 @@
|
||||
MIIDwjCCAqqgAwIBAgIJAN19NW1oDKKtMA0GCSqGSIb3DQEBCwUAMHYxCzAJBgNV
|
||||
BAYTAlRTMQ0wCwYDVQQIDARUZXN0MQ0wCwYDVQQHDARUZXN0MRYwFAYDVQQKDA1U
|
||||
ZXN0IEV2ZW50bGV0MQ0wCwYDVQQLDARUZXN0MQ0wCwYDVQQDDARUZXN0MRMwEQYJ
|
||||
-KoZIhvcNAQkBFgRUZXN0MB4XDTE4MDgyMjEzNDIxMVoXDTI4MDgxOTEzNDIxMVow
|
||||
+KoZIhvcNAQkBFgRUZXN0MB4XDTIwMDgyODEzMTUxNloXDTQ5MTIzMTEzMTUxN1ow
|
||||
djELMAkGA1UEBhMCVFMxDTALBgNVBAgMBFRlc3QxDTALBgNVBAcMBFRlc3QxFjAU
|
||||
BgNVBAoMDVRlc3QgRXZlbnRsZXQxDTALBgNVBAsMBFRlc3QxDTALBgNVBAMMBFRl
|
||||
c3QxEzARBgkqhkiG9w0BCQEWBFRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
||||
@@ -13,11 +13,11 @@ Lvc6cJHMKaxHCeIBOL+z/9kJqhh30eqsmNB5AXSoV8b2B3MV3glW2vd5WJVYEWxl
|
||||
3+GNgzZJ3KGape7pcBYER7zg/yZLZxgNFlTCOZiysjNxC0liJA9tgUQhRc1gsqA8
|
||||
dQxzvqW8kuZedmatjyM58WixvjymobC3AgMBAAGjUzBRMB0GA1UdDgQWBBQT3V3f
|
||||
8vCoqGXe6zySSjVP+J/P7zAfBgNVHSMEGDAWgBQT3V3f8vCoqGXe6zySSjVP+J/P
|
||||
-7zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAws7zXsftw5s/P
|
||||
-dnyFAf8q0WoVtWi9ljshWfJvTFMfuCqdSoNT+kIeQq071/RFW9YLqDZGXI4fyfzW
|
||||
-50A7xFm+Syy7wPOmfLJdPx5HRJ5jgIDlij9vL45W3mXEohkkzMCdjwXfOIQPOEEx
|
||||
-ZQHF57RaHlKEGexc/yvOLlOgKP23BOgB7pZjCC9divyDJ3ETlzgE+UTymHxmFM0i
|
||||
-TCAM9dGEl1QPr7zA08rNgVae+/uQksdM55QmQFkTAXisFPcxNgHSKOSHsDiUJvWG
|
||||
-7bJrwO6+T2wjRxWRD7anQV3DqBG1WteXA/dfYqjUi0QPqreWqNb+3OM60UwPJsvl
|
||||
-ZDfUrsbY
|
||||
+7zAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAowDu7bu/6DuLH
|
||||
+yNv8Q27vhsHS2IbguGSTlpSObUqvIF1fv2UzjSl1jjmkN7IQqEjV7ql7NpmVGv5u
|
||||
+4s5uKGID9q0Eq1wNKpqps16ABOb6I415j3NMq7r9bSNrlgPHrSYnySSyN2JyiXyR
|
||||
+Q9wxY6YBQMHchFytYui9/A3WwmzfZkzZpN2AWlC/emiDlfbWT9bFO6tgImrD3BIi
|
||||
+PJoTsc5SBmevUvOC6LPPIKq3/SdywgAi3AGKcyMlLhEjFX5lRA3GK3pDudRqKY2+
|
||||
+3n6WcOut0RytatsNYqIMVakIGC4ZCLi69xSLlRVVvxnfGgJxw+mHLtlQxDz2GoQ+
|
||||
+XAW8Yf8H
|
||||
-----END CERTIFICATE-----
|
||||
632
python-eventlet.changes
Normal file
632
python-eventlet.changes
Normal file
@@ -0,0 +1,632 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri Apr 21 12:24:43 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- add sle15_python_module_pythons (jsc#PED-68)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Apr 13 22:41:06 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Make calling of %{sle15modernpython} optional.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 16 22:15:50 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- update newdnspython.patch to not patch non-testsuite as
|
||||
it breaks the functionality (bsc#1208126)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Feb 14 11:33:57 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Remove unnecessary obsolete dependency on pyzmq.
|
||||
- Clean up the SPEC file.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jan 28 12:30:48 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- update to 0.33.3:
|
||||
* dnspython 2.3.0 raised AttributeError: module 'dns.rdtypes' has no
|
||||
attribute 'ANY' https://github.com/eventlet/eventlet/issues/781
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 17 16:55:46 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
|
||||
|
||||
- Add fix-py3-rlock.patch to make the code compatible with python 3.11,
|
||||
gh#eventlet/eventlet#754
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Dec 9 10:16:59 UTC 2022 - Thorsten Kukuk <kukuk@suse.com>
|
||||
|
||||
- Reove unecessary sysconfig-netconfig BuildRequires
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Dec 3 05:14:32 UTC 2022 - Yogalakshmi Arunachalam <yarunachalam@suse.com>
|
||||
|
||||
- Update to v0.33.2
|
||||
* Stop using deprecated threading APIs
|
||||
Way back in py26, snake_case alternatives were added for the old
|
||||
camelCase APIs. py310 started emitting DeprecationWarnings about them;
|
||||
presumably they'll look to remove the old APIs eventually. See
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 9 10:52:49 UTC 2022 - Pedro Monreal <pmonreal@suse.com>
|
||||
|
||||
- Fix build with OpenSSL 3.0 [bsc#1205042]
|
||||
* Temporarily disable test_017_ssl_zeroreturnerror
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 17 06:46:05 UTC 2022 - Jiri Slaby <jslaby@suse.cz>
|
||||
|
||||
- disable test_018b_http_10_keepalive_framing (bsc#1202188)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jun 4 15:20:56 UTC 2022 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- update to 0.33.1:
|
||||
* Prevent deadlock on logging._lock
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Dec 26 14:03:52 UTC 2021 - Bernhard Wiedemann <bwiedemann@suse.com>
|
||||
|
||||
- Add python-eventlet-FTBFS2028.patch to fix build in 2028 (boo#1102840)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 16 20:11:12 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- update to 0.33.0
|
||||
* green.thread: unlocked Lock().release() should raise exception,
|
||||
returned True
|
||||
* wsgi: Don’t break HTTP framing during 100-continue handling
|
||||
* Python 3.10 partial support
|
||||
* greendns: Create a DNS resolver lazily rather than on import
|
||||
* ssl: GreenSSLContext minimum_version and maximum_version
|
||||
setters
|
||||
- Refresh denosing patches: merge remove_nose.patch and
|
||||
remove_nose_part_2.patch into denose-eventlet.patch
|
||||
- Refresh newdnspython.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Nov 7 21:12:37 UTC 2021 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- update to 0.32.0:
|
||||
* greendns: compatibility with dnspython v2
|
||||
* green.ssl: wrap_socket now accepts argument `ciphers`
|
||||
* websocket: control frames are now always uncompressed per RFC 7692
|
||||
* ssl: py3.6 using client certificates raised ValueError: check_hostname needs server_hostname argument
|
||||
* IMPORTANT: websocket: Limit maximum uncompressed frame length to 8MiB
|
||||
* wsgi: websocket ALREADY_HANDLED flag on corolocal
|
||||
* green.ssl: Set suppress_ragged_eofs default based on SSLSocket defaults
|
||||
* greenio: socket.connect_ex returned None instead of 0 on success
|
||||
* Use _imp instead of deprecated imp
|
||||
- drop pr_639.patch, merged upstream
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Mar 21 21:19:52 UTC 2021 - Ben Greiner <code@bnavigator.de>
|
||||
|
||||
- Update to 0.30.2
|
||||
* greendns: patch ssl to fix RecursionError on
|
||||
SSLContext.options.__set__ #677
|
||||
- Release 0.30.1
|
||||
* patcher: built-in open() did not accept kwargs #683
|
||||
- Release 0.30.0
|
||||
* pyopenssl tsafe module was deprecated and removed in v20.0.0
|
||||
* deprecate pyevent hub
|
||||
* Deprecate CPython 2.7 and 3.4 support
|
||||
* py39: Add _at_fork_reinit method to Semaphores
|
||||
- Drop pr_672-remove-OpenSSL-tsafe.patch merged upstream
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 10 22:43:44 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
|
||||
|
||||
- Add pr_672-remove-OpenSSL-tsafe.patch to support pyopenssl 20
|
||||
- skip some tests which are flaky inside OBS environment
|
||||
- fix python2 build requirement for Leap
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 7 00:14:23 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
|
||||
|
||||
- Update to 0.29.1
|
||||
* patcher: [py27] recursion error in pytest/python2.7 installing
|
||||
register_at_fork
|
||||
* patcher: monkey_patch(builtins=True) failed on py3 because
|
||||
`file` class is gone
|
||||
* don't crash on PyPy 7.0.0
|
||||
* Only install monotonic on python2
|
||||
- Changes for 0.29.0
|
||||
* ssl: context wrapped listener fails accept()
|
||||
- Changes for 0.28.1
|
||||
* Clean up TypeError in __del__
|
||||
- Changes for 0.28.0
|
||||
* Always remove the right listener from the hub
|
||||
gh#enventlet/eventlet#645
|
||||
- Changes for 0.27.0
|
||||
* patcher: Clean up threading book-keeping at fork when
|
||||
monkey-patched
|
||||
* backdoor: handle disconnects better
|
||||
- Fix test skips for non-default python 3.6 flavor
|
||||
gh#openSUSE/python-rpm-macros#66
|
||||
- refresh newdnspython.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Aug 19 15:28:03 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
|
||||
|
||||
- do not run test on python 2 (sadly no real macro expansion
|
||||
possible to allow run but failok with ||:)
|
||||
- disable test discovery dir recursion gh#eventlet/eventlet#638
|
||||
- simplify the pytest call, no test file deletions
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 17 09:38:44 UTC 2020 - John Vandenberg <jayvdb@gmail.com>
|
||||
|
||||
- Add pr_639.patch which fixes eventlet using dnspython 2.0.0
|
||||
- Add remove_nose_part_2.patch to complete the removal of nose
|
||||
- Activate test suite with 958 test cases passing on Tumbleweed
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 17 07:49:25 UTC 2020 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Don't limit the upper version of dnspython.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 14 21:30:16 UTC 2020 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Add newdnspython.patch which makes eventlet work with new
|
||||
dnspython 2.0.0.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 13 16:07:08 UTC 2020 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Add remove_nose.patch to remove dependency on nose (gh#eventlet/eventlet#638).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 13 14:07:43 UTC 2020 - Dirk Mueller <dmueller@suse.com>
|
||||
|
||||
- update to 0.26.1:
|
||||
* pin dnspython <2.0.0 https://github.com/eventlet/eventlet/issues/619
|
||||
* Fix compatibility with SSLContext usage >= Python 3.7
|
||||
* wsgi: Fix header capitalization on py3
|
||||
* Fix #508: Py37 Deadlock ThreadPoolExecutor (#598)
|
||||
* drop Python 3.4 support
|
||||
* Fix misc SyntaxWarning's under Python 3.8
|
||||
* Remove unnecessary assignment in _recv_loop (#601)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 29 10:49:14 UTC 2020 - Dirk Mueller <dmueller@suse.com>
|
||||
|
||||
- update to 0.25.2:
|
||||
* green.ssl: redundant set_nonblocking() caused SSLWantReadError
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 10 10:40:09 UTC 2019 - Ralf Haferkamp <rhafer@suse.de>
|
||||
|
||||
- Update to 0.25.1:
|
||||
* wsgi (tests): Stop using deprecated cgi.parse_qs() to support Python 3.8; Thanks to Miro Hrončok
|
||||
* os: Add workaround to `open` for pathlib on py 3.7; Thanks to David Szotten
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 21 12:35:13 UTC 2019 - Hans-Peter Jansen <hpj@urpla.net>
|
||||
|
||||
- we don't want to obsolete python-doc: rather python-eventlet-doc,
|
||||
which depends on python-eventlet, should get removed on update,
|
||||
anyway.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 7 12:14:00 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
||||
|
||||
- Do not generate sphinx docu, it is online and now we have only
|
||||
python3 Sphinx anyway
|
||||
- Update to 0.25.0:
|
||||
* Support for new python and ssl
|
||||
- Remove patches that are in upstream release:
|
||||
* 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
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Apr 29 06:00:44 UTC 2019 - Thomas Bechtold <tbechtold@suse.com>
|
||||
|
||||
- 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 <tbechtold@suse.com>
|
||||
|
||||
- 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'",)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 6 15:31:02 UTC 2018 - Thomas Bechtold <tbechtold@suse.com>
|
||||
|
||||
- update to 0.24.1:
|
||||
* greendns: don't contact nameservers if one entry is returned from hosts file; Thanks to Daniel Alvarez
|
||||
* greendns: Fix infinite loop when UDP source address mismatch; Thanks to Lon Hohberger
|
||||
* greendns: Fix bad ipv6 comparison; Thanks to Lon Hohberger
|
||||
* wsgi: Use byte strings on py2 and unicode strings on py3; Thanks to Tim Burke
|
||||
* pools: put to empty pool would block sometimes; Thanks to Sam Merritt
|
||||
* greendns: resolving over TCP produced ValueError; Thanks to Jaume Marhuenda
|
||||
* support.greendns: ImportError when dns.rdtypes was imported before eventlet; Thanks to Jaume Marhuenda
|
||||
* greendns: full comment lines were not skipped; Thanks to nat-goodspeed
|
||||
* Drop support for Python3.3; Python2.6 and python-epoll package
|
||||
* external dependencies for six, monotonic, dnspython; Thanks to nat-goodspeed
|
||||
* wsgi: Don't strip all Unicode whitespace from headers on py3; Thanks to Tim Burke
|
||||
* green.threading: current_thread() did not see new monkey-patched threads; Thanks to Jake Tesler
|
||||
* tpool: exception in tpool-ed call leaked memory via backtrace
|
||||
* wsgi: latin-1 encoding dance for environ[PATH_INFO]
|
||||
* Fixed issue installing excess enum34 on Python3.4+ (rebuild with updated setuptools)
|
||||
* event: Event.wait() timeout=None argument to be compatible with upstream CPython
|
||||
* greendns: Treat /etc/hosts entries case-insensitive; Thanks to Ralf Haferkamp
|
||||
* convenience: (SO_REUSEPORT) socket.error is not OSError on Python 2; Thanks to JacoFourie@github
|
||||
* convenience: SO_REUSEPORT is not available on WSL platform (Linux on Windows)
|
||||
* convenience: skip SO_REUSEPORT for bind on random port (0)
|
||||
* dns: reading /etc/hosts raised DeprecationWarning for universal lines on Python 3.4+; Thanks to Chris Kerr
|
||||
* green.openssl: Drop OpenSSL.rand support; Thanks to Haikel Guemar
|
||||
* green.subprocess: keep CalledProcessError identity; Thanks to Linbing@github
|
||||
* greendns: be explicit about expecting bytes from sock.recv; Thanks to Matt Bennett
|
||||
* greendns: early socket.timeout was breaking IO retry loops
|
||||
* GreenSocket.accept does not notify_open; Thanks to orishoshan
|
||||
* patcher: set locked RLocks' owner only when patching existing locks; Thanks to Quan Tian
|
||||
* patcher: workaround for monotonic "no suitable implementation"; Thanks to Geoffrey Thomas
|
||||
* queue: empty except was catching too much
|
||||
* socket: context manager support; Thanks to Miguel Grinberg
|
||||
* support: update monotonic 1.3 (5c0322dc559bf)
|
||||
* support: upgrade bundled dnspython to 1.16.0 (22e9de1d7957e) https://github.com/eventlet/eventlet/issues/427
|
||||
* websocket: fd leak when client did not close connection properly; Thanks to Konstantin Enchant
|
||||
* websocket: support permessage-deflate extension; Thanks to Costas Christofi and Peter Kovary
|
||||
* wsgi: close idle connections (also applies to websockets)
|
||||
* wsgi: deprecated options are one step closer to removal
|
||||
* wsgi: handle remote connection resets; Thanks to Stefan Nica
|
||||
* New timeout error API: .is_timeout=True on exception object
|
||||
It's now easy to test if network error is transient and retry is appropriate.
|
||||
Please spread the word and invite other libraries to support this interface.
|
||||
* hubs: use monotonic clock by default (bundled package); Thanks to Roman Podoliaka and Victor Stinner
|
||||
* dns: EVENTLET_NO_GREENDNS option is back, green is still default
|
||||
* dns: hosts file was consulted after nameservers
|
||||
* ssl: RecursionError on Python3.6+; Thanks to justdoit0823@github and Gevent developers
|
||||
* wsgi: log_output=False was not disabling startup and accepted messages
|
||||
* greenio: Fixed OSError: [WinError 10038] Socket operation on nonsocket
|
||||
* dns: EAI_NODATA was removed from RFC3493 and FreeBSD
|
||||
* green.select: fix mark_as_closed() wrong number of args
|
||||
* green.zmq: socket.{recv,send}_* signatures did not match recent upstream pyzmq
|
||||
* New feature: Add zipkin tracing to eventlet
|
||||
* db_pool: proxy Connection.set_isolation_level()
|
||||
* green.zmq: support RCVTIMEO (receive timeout)
|
||||
* green.profile: Python3 compatibility; Thanks to Artur Stawiarski
|
||||
* support: upgrade bundled six to 1.10 (dbfbfc818e3d)
|
||||
* python3.6: http.client.request support chunked_encoding
|
||||
* dns: try unqualified queries as top level
|
||||
* test_import_patched_defaults bended to play with pyopenssl>=16.1.0
|
||||
* Explicit environ flag for importing eventlet.__version__ without ignoring import errors
|
||||
* Type check Semaphore, GreenPool arguments; Thanks to Matthew D. Pagel
|
||||
- Drop 0001-Fix-SSL-connection-reset-errors.patch . Merged upstream
|
||||
- Drop PR-459.patch . Merged upstream
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 6 13:26:44 UTC 2018 - Tomáš Chvátal <tchvatal@suse.com>
|
||||
|
||||
- Fix fdupes call
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 4 12:47:46 UTC 2018 - Matej Cepl <mcepl@suse.com>
|
||||
|
||||
- Remove superfluous devel dependency for noarch package
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jan 12 12:57:09 UTC 2018 - tbechtold@suse.com
|
||||
|
||||
- Add PR-459.patch.
|
||||
Hostname in /etc/hosts are not case-sensitive, this fixes
|
||||
HostsResolver() accordingly.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Dec 10 20:33:20 UTC 2017 - dmueller@suse.com
|
||||
|
||||
- fix enum-compat removal
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Nov 26 16:02:38 UTC 2017 - dmueller@suse.com
|
||||
|
||||
- go back to a working version: downgrade to 0.20.0
|
||||
- add 0001-Fix-SSL-connection-reset-errors.patch to fix
|
||||
hangs on SSL connections
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 17 09:05:52 UTC 2017 - snica@suse.com
|
||||
|
||||
- add netcfg package to list of requirements
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Oct 6 07:35:07 UTC 2017 - tbechtold@suse.com
|
||||
|
||||
- update to 0.21.0:
|
||||
* New timeout error API: .is_timeout=True on exception object
|
||||
It's now easy to test if network error is transient and retry is
|
||||
appropriate.
|
||||
Please spread the word and invite other libraries to support this interface.
|
||||
* hubs: use monotonic clock by default (bundled package);
|
||||
* dns: EVENTLET_NO_GREENDNS option is back, green is still default
|
||||
* dns: hosts file was consulted after nameservers
|
||||
* ssl: RecursionError on Python3.6+;
|
||||
* wsgi: log_output=False was not disabling startup and accepted messages
|
||||
* greenio: Fixed OSError: [WinError 10038] Socket operation on nonsocket
|
||||
* dns: EAI_NODATA was removed from RFC3493 and FreeBSD
|
||||
* green.select: fix mark_as_closed() wrong number of args
|
||||
* green.zmq: socket.{recv,send}_* signatures did not match recent
|
||||
upstream pyzmq
|
||||
* New feature: Add zipkin tracing to eventlet
|
||||
* db_pool: proxy Connection.set_isolation_level()
|
||||
* green.zmq: support RCVTIMEO (receive timeout)
|
||||
* green.profile: Python3 compatibility; Thanks to Artur Stawiarski
|
||||
* support: upgrade bundled six to 1.10 (dbfbfc818e3d)
|
||||
* python3.6: http.client.request support chunked_encoding
|
||||
- Use fdupes
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 5 21:50:25 UTC 2017 - jengelh@inai.de
|
||||
|
||||
- Ensure neutrality of description.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 5 09:30:33 UTC 2017 - jmatejek@suse.com
|
||||
|
||||
- remove dependency on metapackage "enum-compat" in favor of
|
||||
specifying this requirement the usual way via RPM requirement
|
||||
conditional on version
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 24 13:38:29 UTC 2017 - jmatejek@suse.com
|
||||
|
||||
- singlespec auto-conversion
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 11 18:10:38 UTC 2017 - dmueller@suse.com
|
||||
|
||||
- update to 0.20.1:
|
||||
* dns: try unqualified queries as top level
|
||||
* test_import_patched_defaults bended to play with pyopenssl>=16.1.0
|
||||
* Explicit environ flag for importing eventlet.__version__ without ignoring import errors
|
||||
* Type check Semaphore, GreenPool arguments; Thanks to Matthew D. Pagel
|
||||
* IMPORTANT: removed select.poll() function
|
||||
* DNS resolving is always green with dnspython bundled in
|
||||
* greenio: only trampoline when we block
|
||||
* convenience: listen() sets SO_REUSEPORT when available; Thanks to Zhengwei Gao
|
||||
* ssl: Fix "TypeError: read() argument 2 must be read-write bytes-like object, not None"
|
||||
* greenio: _recv_loop behaviour with recv_into on closed sock
|
||||
* ipv6: getaddrinfo would fail with scope index
|
||||
* green.zmq: Support {send,recv}_{string,json,pyobj} wrappers
|
||||
* greendns: Return answers from /etc/hosts despite nameserver errors
|
||||
* patcher: fixed green existing locks fail (Python3)
|
||||
* Add DAGPool, a dependency-driven greenthread pool
|
||||
* wsgi: Unix socket address representation; Thanks to Samuel Merritt
|
||||
* tpool: isolate internal socket from default timeout; Thanks to Alex Villacís Lasso
|
||||
* wsgi: only skip Content-Type and Content-Length headers (GH-327)
|
||||
* wsgi: 400 on blank Content-Length headers (GH-334)
|
||||
* greenio: makefile related pypy socket ref counting
|
||||
* ssl: Fix recv_into blocking when reading chunks of data
|
||||
* websocket: support Gunicorn environ['gunicorn.socket']
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Dec 3 18:15:53 UTC 2016 - dmueller@suse.com
|
||||
|
||||
- update to 0.19.0:
|
||||
* ssl: IMPORTANT DoS FIX do_handshake_connect=False in server accept();
|
||||
* green.urllib2: missing patched ssl module;
|
||||
* wsgi: environ[headers_raw] tuple of unmodified name: value pairs
|
||||
* test against modern pyopenssl 16.0.0 for Python 2.7+;
|
||||
* wsgi: document compatibility with python `logging`
|
||||
* Minor grammatical improvements and typo fixes to the docs
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 26 19:02:50 UTC 2016 - dmueller@suse.com
|
||||
|
||||
- update to 0.18.4:
|
||||
* wsgi: change TCP_NODELAY to TCP_QUICKACK, ignore socket error when not available
|
||||
* wsgi: Use buffered writes - fixes partial socket.send without custom
|
||||
writelines(); Github issue #295
|
||||
* wsgi: TCP_NODELAY enabled by default
|
||||
* wsgi: Fix data loss on partial writes (socket.send); Thanks to Jakub Stasiak
|
||||
* IMPORTANT: do not use Eventlet 0.18.0 and 0.18.1
|
||||
* patcher: Fix AttributeError in subprocess communicate()
|
||||
* greenio: Fix "TypeError: an integer is required" in sendto()
|
||||
* IMPORTANT: do not use Eventlet 0.18.0 and 0.18.1
|
||||
* greenio: Fixed a bug that could cause send() to start an endless loop on
|
||||
ENOTCONN; Thanks to Seyeong Kim
|
||||
* wsgi: Fixed UNIX socket address being trimmed in "wsgi starting" log; Thanks
|
||||
to Ihar Hrachyshka
|
||||
* ssl: Ported eventlet.green.OpenSSL to Python 3; Thanks to Victor Stinner
|
||||
* greenio: Made read() support buflen=-1 and added readall() (Python 3);
|
||||
Thanks to David Szotten
|
||||
* wsgi: Made the error raised in case of chunk read failures more precise (this
|
||||
should be backwards compatible as the new exception class,
|
||||
wsgi.ChunkReadError, is a subclass of ValueError which was being used there
|
||||
before); Thanks to Samuel Merritt
|
||||
* greenio: Fixed socket.recv() sometimes returning str instead of bytes on
|
||||
Python 3; Thanks to Janusz Harkot
|
||||
* wsgi: Improved request body discarding
|
||||
* websocket: Fixed TypeError on empty websocket message (Python 3); Thanks to
|
||||
Fukuchi Daisuke
|
||||
* subprocess: Fixed universal_newlines support
|
||||
* wsgi: Output of 0-byte chunks is now suppressed; Thanks to Samuel Merritt
|
||||
* Improved the documentation; Thanks to Ramakrishnan G, ashutosh-mishra and
|
||||
Azhar Hussain
|
||||
* greenio: Changed GreenFileIO.write() (Python 3) to always write all data to
|
||||
match the behavior on Python 2; Thanks to Victor Stinner
|
||||
* subprocess: Fixed missing subprocess.mswindows attribute on Python 3.5;
|
||||
Thanks to Josh VanderLinden
|
||||
* ssl/monkey patching: Fixed a bug that would cause merely importing eventlet
|
||||
to monkey patch the ssl module; Thanks to David Szotten
|
||||
* documentation: Added support for building plain text documentation; thanks
|
||||
to Levente Polyak
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jun 22 14:29:32 UTC 2015 - tbechtold@suse.com
|
||||
|
||||
- update to 0.17.4:
|
||||
* ssl: incorrect initalization of default context; Thanks to stuart-mclaren
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 22 13:11:05 UTC 2015 - tbechtold@suse.com
|
||||
|
||||
- update to 0.17.3:
|
||||
* green.thread: Python3.3+ fixes; Thanks to Victor Stinner
|
||||
* Semaphore.acquire() accepts timeout=-1; Thanks to Victor Stinner
|
||||
* wsgi: Provide python logging compatibility; Thanks to Sean Dague
|
||||
* greendns: fix premature connection closing in DNS proxy; Thanks to
|
||||
Tim Simmons
|
||||
* greenio: correct fd close; Thanks to Antonio Cuni and Victor Sergeyev
|
||||
* green.ssl: HTTPS client Python 2.7.9+ compatibility
|
||||
* setup: tests.{isolated,manual} polluted top-level packages
|
||||
* greendns: fix dns.name import and Python3 compatibility
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Feb 24 11:12:59 UTC 2015 - tbechtold@suse.com
|
||||
|
||||
- update to version 0.17.0
|
||||
* Full Python3 compatibility
|
||||
* greendns: IPv6 support, improved handling of /etc/hosts
|
||||
* tpool: make sure we return results during killall
|
||||
* semaphore: Don't hog a semaphore if someone else is waiting for it
|
||||
* green.socket: create_connection() was wrapping all exceptions
|
||||
in socket.error
|
||||
* Make sure SSL retries are done using the exact same data buffer
|
||||
* greenio: shutdown already closed sockets without error
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 2 08:47:34 UTC 2015 - tbechtold@suse.com
|
||||
|
||||
- update to version 0.16.1:
|
||||
* Wheel build 0.16.0 incorrectly shipped removed module eventlet.util.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 8 13:56:43 UTC 2015 - tbechtold@suse.com
|
||||
|
||||
- update to 0.16.0:
|
||||
* Fix SSL socket wrapping and Python 2.7.9 compatibility; Thanks to Jakub Stasiak
|
||||
* Fix monkey_patch() on Python 3; Thanks to Victor Stinner
|
||||
* Fix "maximum recursion depth exceeded in GreenSocket.__del__"; Thanks to Jakub Stasiak
|
||||
* db_pool: BaseConnectionPool.clear updates .current_size #139; Thanks to Andrey Gubarev
|
||||
* Fix __str__ method on the TimeoutExpired exception class.; Thanks to Tomaz Muraus
|
||||
* hubs: drop Twisted support
|
||||
* Removed deprecated modules: api, most of coros, pool, proc, processes and util
|
||||
* Improved Python 3 compatibility (including patch by raylu); Thanks to Jakub Stasiak
|
||||
* Allow more graceful shutdown of wsgi server; Thanks to Stuart McLaren
|
||||
* wsgi.input: Make send_hundred_continue_headers() a public API; Thanks to Tushar Gohad
|
||||
* tpool: Windows compatibility, fix ResourceWarning. Thanks to Victor Stinner
|
||||
* tests: Fix timers not cleaned up on MySQL test skips; Thanks to Corey Wright
|
||||
- Remove README.twisted from docs (removed upstream)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 2 08:00:50 UTC 2014 - dmueller@suse.com
|
||||
|
||||
- update to 0.15.2:
|
||||
* greenio: fixed memory leak, introduced in 0.15.1; Thanks to Michael Kerrin, Tushar Gohad
|
||||
* wsgi: Support optional headers w/ "100 Continue" responses; Thanks to Tushar Gohad
|
||||
* greenio: Fix second simultaneous read (parallel paramiko issue); Thanks to Jan Grant, Michael Kerrin
|
||||
* db_pool: customizable connection cleanup function; Thanks to Avery Fay
|
||||
* Python3 compatibility -- **not ready yet**; Thanks to Astrum Kuo, Davanum Srinivas, Jakub Stasiak, Victor Sergeyev
|
||||
* coros: remove Actor which was deprecated in 2010-01
|
||||
* saranwrap: remove saranwrap which was deprecated in 2010-02
|
||||
* PyPy compatibility fixes; Thanks to Dmitriy Kruglyak, Jakub Stasiak
|
||||
* green.profile: accumulate results between runs; Thanks to Zhang Hua
|
||||
* greenthread: add .unlink() method; Thanks to Astrum Kuo
|
||||
* packaging: Generate universal wheels; Thanks to Jakub Stasiak
|
||||
* queue: Make join not wait if there are no unfinished tasks; Thanks to Jakub Stasiak
|
||||
* tpool: proxy __enter__, __exit__ fixes Bitbucket-158; Thanks to Eric Urban
|
||||
* websockets: Add websockets13 support; handle lack of Upgrade header; Thanks to Edward George
|
||||
* wsgi: capitalize_response_headers option
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 24 11:05:29 UTC 2013 - speilicke@suse.com
|
||||
|
||||
- Require python-setuptools instead of distribute (upstreams merged)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Sep 17 08:56:56 UTC 2013 - dmueller@suse.com
|
||||
|
||||
- update to 0.14.0:
|
||||
* wsgi: handle connection socket timeouts; Thanks to Paul Oppenheim
|
||||
* wsgi: close timed out client connections
|
||||
* greenio: socket pypy compatibility; Thanks to Alex Gaynor
|
||||
* wsgi: env['wsgi.input'] was returning 1 byte strings; Thanks to Eric Urban
|
||||
* green.ssl: fix NameError; Github #17; Thanks to Jakub Stasiak
|
||||
* websocket: allow "websocket" in lowercase in Upgrade header; Compatibility with current Google Chrome; Thanks to Dmitry Orlov
|
||||
* wsgi: allow minimum_chunk_size to be overriden on a per request basis; Thanks to David Goetz
|
||||
* wsgi: configurable socket_timeout
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jul 3 15:42:06 UTC 2013 - dmueller@suse.com
|
||||
|
||||
- update to 0.13.1:
|
||||
* hubs: kqueue support! Thanks to YAMAMOTO Takashi, Edward George
|
||||
* greenio: Fix AttributeError on MacOSX; Bitbucket #136; Thanks to Derk Tegeler
|
||||
* green: subprocess: Fix subprocess.communicate() block on Python 2.7; Thanks to Edward George
|
||||
* green: select: ensure that hub can .wait() at least once before timeout; Thanks to YAMAMOTO Takashi
|
||||
* tpool: single request queue to avoid deadlocks; Bitbucket pull request 31,32; Thanks to Edward George
|
||||
* zmq: pyzmq 13.x compatibility; Thanks to Edward George
|
||||
* green: subprocess: Popen.wait() accepts new `timeout` kwarg; Python 3.3 and RHEL 6.1 compatibility
|
||||
* hubs: EVENTLET_HUB can point to external modules; Thanks to Edward George
|
||||
* semaphore: support timeout for acquire(); Thanks to Justin Patrin
|
||||
* support: do not clear sys.exc_info if can be preserved (greenlet >= 0.3.2); Thanks to Edward George
|
||||
* Travis continous integration; Thanks to Thomas Grainger, Jakub Stasiak
|
||||
* wsgi: minimum_chunk_size of last Server altered all previous (global variable); Thanks to Jakub Stasiak
|
||||
* doc: hubs: Point to the correct function in exception message; Thanks to Floris Bruynooghe
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Feb 8 11:19:25 UTC 2013 - p.drouand@gmail.com
|
||||
|
||||
- Update to version 0.12.1:
|
||||
* zmq: Fix 100% busy CPU in idle after .bind(PUB)
|
||||
* greenio: Fix socket.settimeout() did not switch back to blocking mode
|
||||
* greenio: socket.dup() made excess fcntl syscalls
|
||||
* setup: Remove legacy --without-greenlet option and unused httplib2 dependency
|
||||
* wsgi: environ[REMOTE_PORT], also available in log_format, log accept event
|
||||
* tests: Support libzmq 3.0 SNDHWM option
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 15 19:53:02 UTC 2013 - p.drouand@gmail.com
|
||||
|
||||
- Update to version 0.11.0:
|
||||
* ssl: Fix 100% busy CPU in socket.sendall() (thanks to Raymon Lu)
|
||||
* zmq: Return linger argument to Socket.close() (thanks to Eric Windisch)
|
||||
* tests: SSL tests were always skipped due to bug in skip_if_no_ssl decorator
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 23 10:57:40 UTC 2012 - saschpe@suse.de
|
||||
|
||||
- Update to version 0.9.17:
|
||||
+ ZeroMQ support calling send and recv from multiple greenthreads
|
||||
+ SSL: unwrap() sends data, and so it needs trampolining
|
||||
+ hubs.epolls: Fix imports for exception handler
|
||||
+ db_pool: Fix .clear() when min_size > 0
|
||||
+ db_pool: Add MySQL's insert_id() method
|
||||
+ db_pool: Close connections after timeout, fix get-after-close race
|
||||
condition with using TpooledConnectionPool
|
||||
+ threading monkey patch fixes
|
||||
+ pools: Better accounting of current_size in pools.Pool
|
||||
+ wsgi: environ['RAW_PATH_INFO'] with request path as received from client
|
||||
+ wsgi: log_output flag
|
||||
+ wsgi: Limit HTTP header size
|
||||
+ wsgi: Configurable maximum URL length
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Sep 2 11:36:04 UTC 2011 - saschpe@suse.de
|
||||
|
||||
- Update to version 0.9.16:
|
||||
+ SO_REUSEADDR now correctly set.
|
||||
- Don't package unittests
|
||||
- Fix non-executable script rpmlint warning
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 2 14:13:32 CET 2011 - berendt@b1-systems.de
|
||||
|
||||
- bumped version to 0.9.14
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Nov 26 14:44:42 UTC 2010 - seife+obs@b1-systems.com
|
||||
|
||||
- initial package (version 0.9.9)
|
||||
|
||||
|
||||
119
python-eventlet.spec
Normal file
119
python-eventlet.spec
Normal file
@@ -0,0 +1,119 @@
|
||||
#
|
||||
# spec file for package python-eventlet
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define skip_python2 1
|
||||
%{?sle15_python_module_pythons}
|
||||
Name: python-eventlet
|
||||
Version: 0.33.3
|
||||
Release: 0
|
||||
Summary: Concurrent networking library for Python
|
||||
License: MIT
|
||||
Group: Development/Languages/Python
|
||||
URL: https://eventlet.net
|
||||
Source: https://files.pythonhosted.org/packages/source/e/eventlet/eventlet-%{version}.tar.gz
|
||||
# PATCH-FEATURE-UPSTREAM remove_nose.patch gh#eventlet/eventlet#638 mcepl@suse.com
|
||||
# Removes dependency on nose
|
||||
Patch0: denose-eventlet.patch
|
||||
# PATCH-FIX-UPSTREAM newdnspython.patch mcepl@suse.com -- patch is from gh#rthalley/dnspython#519, discussion in gh#eventlet/eventlet#638
|
||||
Patch1: newdnspython.patch
|
||||
# PATCH-FIX-UPSTREAM https://github.com/eventlet/eventlet/pull/643
|
||||
Patch2: python-eventlet-FTBFS2028.patch
|
||||
# PATCH-FIX-UPSTREAM fix-py3-rlock.patch gh#eventlet/eventlet#754
|
||||
Patch3: fix-py3-rlock.patch
|
||||
BuildRequires: %{python_module setuptools}
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: python-rpm-macros
|
||||
Requires: netcfg
|
||||
Requires: python-dnspython >= 1.15.0
|
||||
Requires: python-greenlet >= 0.3
|
||||
Requires: python-six >= 1.10.0
|
||||
BuildArch: noarch
|
||||
# SECTION TEST requirements
|
||||
BuildRequires: %{python_module dnspython >= 1.15.0}
|
||||
BuildRequires: %{python_module greenlet >= 0.3}
|
||||
BuildRequires: %{python_module pytest}
|
||||
BuildRequires: %{python_module six >= 1.10.0}
|
||||
BuildRequires: %{python_module testsuite}
|
||||
# eventlet parses /etc/protocols which is not available in normal build envs
|
||||
BuildRequires: netcfg
|
||||
%if 0%{?suse_version} >= 1550
|
||||
BuildRequires: %{python_module pyOpenSSL}
|
||||
%endif
|
||||
# /SECTION
|
||||
%python_subpackages
|
||||
|
||||
%description
|
||||
Eventlet is a concurrent networking library for Python that allows
|
||||
changing how code is run.
|
||||
|
||||
It uses epoll or libevent for scalable non-blocking I/O. Coroutines
|
||||
ensure that the developer uses a blocking style of programming that is similar
|
||||
to threading, but provide the benefits of non-blocking I/O. The event dispatch
|
||||
is implicit, which means Eventlet can be used from the Python
|
||||
interpreter, or as part of a larger application.
|
||||
|
||||
%prep
|
||||
%setup -q -n eventlet-%{version}
|
||||
%autopatch -p1
|
||||
|
||||
# Fix non-executable script
|
||||
sed -i '1{/^#!/ d}' eventlet/support/greendns.py
|
||||
|
||||
%build
|
||||
%python_build
|
||||
|
||||
%install
|
||||
%python_install
|
||||
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
||||
|
||||
%check
|
||||
# python2 is required to build for Leap, but tests fail (even upstream)
|
||||
python2_pytest_param='--collect-only'
|
||||
# dnspython 1 and 2: backdoor tests fail with "take too long"
|
||||
skiptests="(BackdoorTest and test_server)"
|
||||
# fail only with dnspython 2:
|
||||
skiptests+=" or test_dns_methods_are_green or test_noraise_dns_tcp or test_clear"
|
||||
# These are flaky inside the OBS environment
|
||||
skiptests+=" or test_fork_after_monkey_patch or test_send_1k_req_rep or test_cpu_usage_after_bind"
|
||||
# tracebacks in denosed suite with pytest inside obs presumably work different than when upstream is running nose?
|
||||
skiptests+=" or test_leakage_from_tracebacks"
|
||||
# temporarily disable to build with OpenSSL 3.0 bsc#1205042
|
||||
skiptests+=" or test_017_ssl_zeroreturnerror"
|
||||
# it is racy, see: https://lore.kernel.org/all/CADVnQy=AnJY9NZ3w_xNghEG80-DhsXL0r_vEtkr=dmz0ugcoVw@mail.gmail.com/ (bsc#1202188)
|
||||
skiptests+=" or test_018b_http_10_keepalive_framing"
|
||||
|
||||
# Unknown Python 3.6 specific errors
|
||||
# TypeError: _wrap_socket() argument 1 must be _socket.socket, not SSLSocket
|
||||
# https://github.com/rthalley/dnspython/issues/559#issuecomment-675274960
|
||||
python36_skiptests+=" or test_connect_ssl or test_ssl_sending_messages or test_wrap_ssl"
|
||||
python36_skiptests+=" or ssl_test or wsgi_test"
|
||||
python3_skiptests+="$python36_skiptests"
|
||||
# https://github.com/eventlet/eventlet/issues/730
|
||||
python310_skiptests+=" or test_patcher_existing_locks_locked"
|
||||
# https://github.com/eventlet/eventlet/issues/739
|
||||
python310_skiptests+=" or test_017_ssl_zeroreturnerror"
|
||||
# no subdir recursion https://github.com/eventlet/eventlet/issues/638#issuecomment-676085599
|
||||
%pytest -o norecursedirs="tests/*" -k "not ($skiptests ${$python_skiptests})" ${$python_pytest_param}
|
||||
|
||||
%files %{python_files}
|
||||
%license LICENSE
|
||||
%doc AUTHORS NEWS README.rst
|
||||
%{python_sitelib}/eventlet
|
||||
%{python_sitelib}/eventlet-%{version}*-info
|
||||
|
||||
%changelog
|
||||
Reference in New Issue
Block a user