commit 4d591ea2a517f76c89cfb4fdebcd5843a4f2cd74
Author: Jan Rękorajski <[email protected]>
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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to