diff options
-rw-r--r-- | net/libtorrent/Makefile | 6 | ||||
-rw-r--r-- | net/libtorrent/distinfo | 3 | ||||
-rw-r--r-- | net/libtorrent/patches/patch-ab | 57 |
3 files changed, 62 insertions, 4 deletions
diff --git a/net/libtorrent/Makefile b/net/libtorrent/Makefile index e7863143a32..0be1acaefbe 100644 --- a/net/libtorrent/Makefile +++ b/net/libtorrent/Makefile @@ -1,7 +1,7 @@ -# $NetBSD: Makefile,v 1.32 2009/06/04 14:04:08 tron Exp $ +# $NetBSD: Makefile,v 1.33 2009/06/04 19:15:46 tron Exp $ DISTNAME= libtorrent-0.12.2 -PKGREVISION= 1 +PKGREVISION= 2 CATEGORIES= net MASTER_SITES= ${HOMEPAGE:=downloads/} @@ -21,7 +21,7 @@ GCC_REQD+= 3.3 .include "../../mk/bsd.prefs.mk" -.if ${OPSYS} == "DragonFly" || ${OPSYS} == "FreeBSD" || ${OPSYS} == "OpenBSD" +.if !empty(OPSYS:M*BSD) || ${OPSYS} == "DragonFly" CONFIGURE_ARGS+= --with-kqueue .endif diff --git a/net/libtorrent/distinfo b/net/libtorrent/distinfo index 82bbf401f32..fe5a7602d16 100644 --- a/net/libtorrent/distinfo +++ b/net/libtorrent/distinfo @@ -1,6 +1,7 @@ -$NetBSD: distinfo,v 1.22 2009/04/10 09:06:20 tron Exp $ +$NetBSD: distinfo,v 1.23 2009/06/04 19:15:46 tron Exp $ SHA1 (libtorrent-0.12.2.tar.gz) = a53d2c671e9f2dd971d0622d5b3672da91c46ef9 RMD160 (libtorrent-0.12.2.tar.gz) = 88cdc415f98afd8b87fa6d7330906737c3e434fa Size (libtorrent-0.12.2.tar.gz) = 585374 bytes SHA1 (patch-aa) = d864808b9e9524b3a7f72bcc1b465d4e6b2d4f4a +SHA1 (patch-ab) = 161a2b0d354ba326a82a2747050b8f323ea420a6 diff --git a/net/libtorrent/patches/patch-ab b/net/libtorrent/patches/patch-ab new file mode 100644 index 00000000000..6e44851d20e --- /dev/null +++ b/net/libtorrent/patches/patch-ab @@ -0,0 +1,57 @@ +$NetBSD: patch-ab,v 1.9 2009/06/04 19:15:47 tron Exp $ + +Deal with the kqueue(2) API differences between NetBSD and the other BSDs. + +--- src/torrent/poll_kqueue.cc.orig 2008-05-07 13:19:13.000000000 +0100 ++++ src/torrent/poll_kqueue.cc 2009-06-04 18:10:50.000000000 +0100 +@@ -57,6 +57,12 @@ + + #ifdef USE_KQUEUE + ++#ifdef __NetBSD__ ++typedef uintptr_t kevent_udata_t; ++#else ++typedef void *kevent_udata_t; ++#endif ++ + inline uint32_t + PollKQueue::event_mask(Event* e) { + return m_table[e->file_descriptor()]; +@@ -83,7 +89,7 @@ + + struct kevent* itr = m_changes + (m_changedEvents++); + +- EV_SET(itr, event->file_descriptor(), mask, op, 0, 0, event); ++ EV_SET(itr, event->file_descriptor(), mask, op, 0, 0, (kevent_udata_t)event); + } + + PollKQueue* +@@ -146,10 +152,10 @@ + + // Also check current mask. + +- if (itr->filter == EVFILT_READ && itr->udata != NULL && event_mask((Event*)itr->udata) & flag_read) ++ if (itr->filter == EVFILT_READ && itr->udata != (kevent_udata_t)NULL && event_mask((Event*)itr->udata) & flag_read) + ((Event*)itr->udata)->event_read(); + +- if (itr->filter == EVFILT_WRITE && itr->udata != NULL && event_mask((Event*)itr->udata) & flag_write) ++ if (itr->filter == EVFILT_WRITE && itr->udata != (kevent_udata_t)NULL && event_mask((Event*)itr->udata) & flag_write) + ((Event*)itr->udata)->event_write(); + } + +@@ -173,10 +179,12 @@ + throw internal_error("PollKQueue::close(...) called but the file descriptor is active"); + + for (struct kevent *itr = m_events, *last = m_events + m_waitingEvents; itr != last; ++itr) +- if (itr->udata == event) +- itr->udata = NULL; ++ if (itr->udata == (kevent_udata_t)event) ++ itr->udata = (kevent_udata_t)NULL; ++ ++ struct kevent *oitr = m_changes; + +- m_changedEvents = std::remove_if(m_changes, m_changes + m_changedEvents, rak::equal(event, rak::mem_ref(&kevent::udata))) - m_changes; ++ m_changedEvents = std::remove_if(m_changes, m_changes + m_changedEvents, rak::equal((kevent_udata_t)event, rak::mem_ref(&kevent::udata))) - m_changes; + } + + // Use custom defines for EPOLL* to make the below code compile with |