From dc9b69ef3548ead35ad041176ed821578f464c8a Mon Sep 17 00:00:00 2001 From: Tyler Hobbs Date: Tue, 20 May 2014 14:52:34 -0500 Subject: [PATCH] Fix compilation of libev C extension for py3k --- cassandra/io/libevreactor.py | 4 ++-- cassandra/io/libevwrapper.c | 15 ++++++++++----- setup.py | 4 ---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/cassandra/io/libevreactor.py b/cassandra/io/libevreactor.py index cc276ba7..02eff6ff 100644 --- a/cassandra/io/libevreactor.py +++ b/cassandra/io/libevreactor.py @@ -220,8 +220,8 @@ class LibevConnection(Connection): self._socket.setsockopt(*args) with self._loop_lock: - self._read_watcher = libev.IO(self._socket._sock, libev.EV_READ, self._loop, self.handle_read) - self._write_watcher = libev.IO(self._socket._sock, libev.EV_WRITE, self._loop, self.handle_write) + self._read_watcher = libev.IO(self._socket.fileno(), libev.EV_READ, self._loop, self.handle_read) + self._write_watcher = libev.IO(self._socket.fileno(), libev.EV_WRITE, self._loop, self.handle_write) self._send_options_message() diff --git a/cassandra/io/libevwrapper.c b/cassandra/io/libevwrapper.c index 8eb4ae2d..ced72208 100644 --- a/cassandra/io/libevwrapper.c +++ b/cassandra/io/libevwrapper.c @@ -161,7 +161,8 @@ IO_init(libevwrapper_IO *self, PyObject *args, PyObject *kwds) { Py_XDECREF(loop); return -1; } - ev_io_init(&self->io, io_callback, fd, io_flags); + struct ev_io *io = &(self->io); + ev_io_init(io, io_callback, fd, io_flags); self->io.data = self; return 0; } @@ -180,12 +181,14 @@ IO_stop(libevwrapper_IO *self, PyObject *args) { static PyObject* IO_is_active(libevwrapper_IO *self, PyObject *args) { - return PyBool_FromLong(ev_is_active(&self->io)); + struct ev_io *io = &(self->io); + return PyBool_FromLong(ev_is_active(io)); } static PyObject* IO_is_pending(libevwrapper_IO *self, PyObject *args) { - return PyBool_FromLong(ev_is_pending(&self->io)); + struct ev_io *io = &(self->io); + return PyBool_FromLong(ev_is_pending(io)); } static PyMethodDef IO_methods[] = { @@ -264,7 +267,8 @@ Async_init(libevwrapper_Async *self, PyObject *args, PyObject *kwds) { } else { return -1; } - ev_async_init(&self->async, async_callback); + struct ev_async *async = &(self->async); + ev_async_init(async, async_callback); return 0; }; @@ -379,7 +383,8 @@ Prepare_init(libevwrapper_Prepare *self, PyObject *args, PyObject *kwds) { Py_INCREF(callback); self->callback = callback; } - ev_prepare_init(&self->prepare, prepare_callback); + struct ev_prepare *prepare = &(self->prepare); + ev_prepare_init(prepare, prepare_callback); self->prepare.data = self; return 0; } diff --git a/setup.py b/setup.py index 6936e1c7..f7cb93b1 100644 --- a/setup.py +++ b/setup.py @@ -222,10 +222,6 @@ elif "--no-libev" in sys.argv: sys.argv = [a for a in sys.argv if a != "--no-libev"] extensions.remove(libev_ext) -# For now, don't try to compile the libev extension for Python 3. -# Once the extension has been updated, this can be removed. -if sys.version_info >= (3, 0) and libev_ext in extensions: - extensions.remove(libev_ext) platform_unsupported_msg = \ """