From 4d591ea2a517f76c89cfb4fdebcd5843a4f2cd74 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jan=20R=C4=99korajski?= Date: Tue, 4 Apr 2017 19:27:07 +0200 Subject: [PATCH] - 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(-) create mode 100644 libevent-2.1.patch create mode 100644 test-path.patch 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): + (arg).__callback(evtype) + +@@ -112,8 +110,6 @@ + event_set(&self.ev, handle, evtype, handler, 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 = timeout +- self.tv.tv_usec = (timeout - self.tv.tv_sec) * 1000000.0 ++ self.tv.tv_usec = ((timeout - 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 '' % \ +- (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/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/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): -- 2.44.0