[packages/python-pyevent] - fixed building with libevent 2.1 - rel 11

baggins baggins at pld-linux.org
Tue Apr 4 19:27:26 CEST 2017


commit 4d591ea2a517f76c89cfb4fdebcd5843a4f2cd74
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Tue Apr 4 19:27:07 2017 +0200

    - fixed building with libevent 2.1
    - rel 11

 libevent-2.1.patch  | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 python-pyevent.spec |  15 ++++++--
 test-path.patch     |  11 ++++++
 3 files changed, 124 insertions(+), 3 deletions(-)
---
diff --git a/python-pyevent.spec b/python-pyevent.spec
index f0ac9b5..4c2452b 100644
--- a/python-pyevent.spec
+++ b/python-pyevent.spec
@@ -1,17 +1,22 @@
+#
+# Conditional build:
+%bcond_without	tests	# do not perform "make test"
 
-%define 	module	pyevent
+%define		module	pyevent
 
 Summary:	Python extension module for libevent
 Summary(pl.UTF-8):	Moduł rozszerzenia Pythona dla biblioteki libevent
 Name:		python-%{module}
 Version:	0.3
-Release:	10
+Release:	11
 License:	MIT
 Group:		Libraries/Python
 Source0:	http://pyevent.googlecode.com/files/%{module}-%{version}.tar.gz
 # Source0-md5:	584912c92d08bf005283fb29a47a6e4d
 Patch0:		%{name}-python25.patch
 Patch1:		%{name}-setup.patch
+Patch2:		libevent-2.1.patch
+Patch3:		test-path.patch
 URL:		http://code.google.com/p/pyevent/
 BuildRequires:	rpmbuild(macros) >= 1.710
 BuildRequires:	libevent-devel
@@ -31,9 +36,13 @@ Moduł rozszerzenia Pythona dla biblioteki libevent.
 %setup -q -n %{module}-%{version}
 %patch0 -p1
 %patch1 -p1
+%patch2 -p1
+%patch3 -p1
 
 %build
-%{__python} setup.py build_ext
+pyrexc event.pyx
+%py_build
+%{?with_tests:./test.py}
 
 %install
 rm -rf $RPM_BUILD_ROOT
diff --git a/libevent-2.1.patch b/libevent-2.1.patch
new file mode 100644
index 0000000..614c365
--- /dev/null
+++ b/libevent-2.1.patch
@@ -0,0 +1,101 @@
+diff -ur pyevent-0.3/event.pyx pyevent-0.3-libevent-2.1/event.pyx
+--- pyevent-0.3/event.pyx	2017-04-04 19:11:05.337824387 +0200
++++ pyevent-0.3-libevent-2.1/event.pyx	2017-04-04 19:20:30.738730651 +0200
+@@ -36,9 +36,12 @@
+         unsigned int tv_sec
+         unsigned int tv_usec
+     
++    struct event_callback_t "event_callback":
++        short evcb_flags
++
+     struct event_t "event":
++        event_callback_t ev_evcallback
+         int   ev_fd
+-        int   ev_flags
+         void *ev_arg
+ 
+     void event_init()
+@@ -52,6 +52,7 @@
+     int  event_del(event_t *ev)
+     int  event_dispatch()
+     int  event_loop(int loop)
++    int  event_loopbreak()
+     int  event_pending(event_t *ev, short, timeval *tv)
+ 
+     int EVLOOP_ONCE
+@@ -65,9 +66,6 @@
+ 
+ __event_exc = None
+ 
+-cdef int __event_sigcb():
+-    return -1
+-
+ cdef void __event_handler(int fd, short evtype, void *arg):
+     (<object>arg).__callback(evtype)
+ 
+@@ -112,8 +110,6 @@
+             event_set(&self.ev, handle, evtype, handler, <void *>self)
+ 
+     def __simple_callback(self, short evtype):
+-        cdef extern int event_gotsig
+-        cdef extern int (*event_sigcb)()
+         global __event_exc
+         try:
+             if self.callback(*self.args) != None:
+@@ -122,24 +118,20 @@
+                 else:
+                     event_add(&self.ev, NULL)
+         except:
++            event_loopbreak()
+             __event_exc = sys.exc_info()
+-            event_sigcb = __event_sigcb
+-            event_gotsig = 1
+         # XXX - account for event.signal() EV_PERSIST
+         if not (evtype & EV_SIGNAL) and \
+            not event_pending(&self.ev, EV_READ|EV_WRITE|EV_SIGNAL|EV_TIMEOUT, NULL):
+             Py_DECREF(self)
+     
+     def __callback(self, short evtype):
+-        cdef extern int event_gotsig
+-        cdef extern int (*event_sigcb)()
+         global __event_exc
+         try:
+             self.callback(self, self.handle, evtype, self.args)
+         except:
++            event_loopbreak()
+             __event_exc = sys.exc_info()
+-            event_sigcb = __event_sigcb
+-            event_gotsig = 1
+         if not event_pending(&self.ev, EV_READ|EV_WRITE|EV_SIGNAL|EV_TIMEOUT, NULL):
+             Py_DECREF(self)
+ 
+@@ -153,7 +156,7 @@
+         self.timeout = timeout
+         if timeout >= 0.0:
+             self.tv.tv_sec = <long>timeout
+-            self.tv.tv_usec = (timeout - <float>self.tv.tv_sec) * 1000000.0
++            self.tv.tv_usec = <long>((timeout - <float>self.tv.tv_sec) * 1000000.0)
+             event_add(&self.ev, &self.tv)
+         else:
+             self.tv.tv_sec = self.tv.tv_usec = 0
+@@ -174,7 +177,7 @@
+     
+     def __repr__(self):
+         return '<event flags=0x%x, handle=%s, callback=%s, arg=%s>' % \
+-               (self.ev.ev_flags, self.handle, self.callback, self.args)
++               (self.ev.ev_evcallback.evcb_flags, self.handle, self.callback, self.args)
+ 
+ cdef class read(event):
+     """read(handle, callback, *args) -> event object
+@@ -266,10 +266,7 @@
+ 
+ def abort():
+     """Abort event dispatch loop."""
+-    cdef extern int event_gotsig
+-    cdef extern int (*event_sigcb)()
+-    event_sigcb = __event_sigcb
+-    event_gotsig = 1
++    event_loopbreak()
+ 
+ # XXX - make sure event queue is always initialized.
+ init()
diff --git a/test-path.patch b/test-path.patch
new file mode 100644
index 0000000..a6b256d
--- /dev/null
+++ b/test-path.patch
@@ -0,0 +1,11 @@
+--- pyevent-0.3/test.py~	2005-01-26 02:43:24.000000000 +0100
++++ pyevent-0.3/test.py	2017-04-04 19:25:57.332923924 +0200
+@@ -1,7 +1,7 @@
+ #!/usr/bin/env python
+ 
+ import glob, os, signal, sys, time, unittest
+-sys.path.insert(0, glob.glob('./build/lib.*')[0])
++sys.path.insert(0, glob.glob('./build-2/lib.*')[0])
+ import event
+ 
+ class EventTest(unittest.TestCase):
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/python-pyevent.git/commitdiff/4d591ea2a517f76c89cfb4fdebcd5843a4f2cd74



More information about the pld-cvs-commit mailing list