commit:     9183fd4b8989b9411c96db8b7f71780422af4b2e
Author:     Tobias Klausmann <klausman <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 15 07:38:47 2015 +0000
Commit:     Tobias Klausmann <klausman <AT> gentoo <DOT> org>
CommitDate: Thu Oct 15 07:38:47 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9183fd4b

dev-libs/libevent: Add patch to fix Zombie leftovers

When-if upstream makes a release that contains this patch, we can drop it. But
since it has been six months without a release, let'suse it directly ourselves.

Gentoo-Bug: 540456
Libevent-Bug: http://sourceforge.net/p/levent/bugs/350/

Package-Manager: portage-2.2.23

 .../libevent/files/event_signals_ordering.patch    | 36 +++++++++++
 dev-libs/libevent/libevent-2.1.5-r4.ebuild         | 70 ++++++++++++++++++++++
 2 files changed, 106 insertions(+)

diff --git a/dev-libs/libevent/files/event_signals_ordering.patch 
b/dev-libs/libevent/files/event_signals_ordering.patch
new file mode 100644
index 0000000..d0cb2b3
--- /dev/null
+++ b/dev-libs/libevent/files/event_signals_ordering.patch
@@ -0,0 +1,36 @@
+diff --git a/event.c b/event.c
+index acef2b2..ad4c7f0 100644
+--- a/event.c
++++ b/event.c
+@@ -926,13 +926,13 @@ event_reinit(struct event_base *base)
+               event_del_nolock_(&base->sig.ev_signal, EVENT_DEL_AUTOBLOCK);
+               event_debug_unassign(&base->sig.ev_signal);
+               memset(&base->sig.ev_signal, 0, sizeof(base->sig.ev_signal));
+-              if (base->sig.ev_signal_pair[0] != -1)
+-                      EVUTIL_CLOSESOCKET(base->sig.ev_signal_pair[0]);
+-              if (base->sig.ev_signal_pair[1] != -1)
+-                      EVUTIL_CLOSESOCKET(base->sig.ev_signal_pair[1]);
+               had_signal_added = 1;
+               base->sig.ev_signal_added = 0;
+       }
++    if (base->sig.ev_signal_pair[0] != -1)
++        EVUTIL_CLOSESOCKET(base->sig.ev_signal_pair[0]);
++    if (base->sig.ev_signal_pair[1] != -1)
++        EVUTIL_CLOSESOCKET(base->sig.ev_signal_pair[1]);
+       if (base->th_notify_fn != NULL) {
+               was_notifiable = 1;
+               base->th_notify_fn = NULL;
+@@ -981,8 +981,12 @@ event_reinit(struct event_base *base)
+               if (evmap_reinit_(base) < 0)
+                       res = -1;
+       } else {
+-              if (had_signal_added)
+                       res = evsig_init_(base);
++                      if (res == 0 && had_signal_added) {
++                              res = event_add_nolock_(&base->sig.ev_signal, 
NULL, 0);
++                              if (res == 0)
++                                      base->sig.ev_signal_added = 1;
++                      }
+       }
+ 
+       /* If we were notifiable before, and nothing just exploded, become

diff --git a/dev-libs/libevent/libevent-2.1.5-r4.ebuild 
b/dev-libs/libevent/libevent-2.1.5-r4.ebuild
new file mode 100644
index 0000000..e55213f
--- /dev/null
+++ b/dev-libs/libevent/libevent-2.1.5-r4.ebuild
@@ -0,0 +1,70 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit eutils libtool multilib-minimal
+
+MY_P="${P}-beta"
+
+DESCRIPTION="A library to execute a function when a specific event occurs on a 
file descriptor"
+HOMEPAGE="http://libevent.org/";
+SRC_URI="mirror://sourceforge/levent/files/${MY_P}.tar.gz"
+
+LICENSE="BSD"
+# libevent-2.1.so.5
+SLOT="0/2.1-5"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sh 
~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~x64-freebsd ~x86-freebsd 
~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris 
~x64-solaris ~x86-solaris"
+IUSE="debug libressl +ssl static-libs test +threads"
+
+DEPEND="
+       ssl? (
+               !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0[${MULTILIB_USEDEP}] 
)
+               libressl? ( dev-libs/libressl[${MULTILIB_USEDEP}] )
+       )
+"
+RDEPEND="
+       ${DEPEND}
+       !<=dev-libs/9libs-1.0
+"
+
+MULTILIB_WRAPPED_HEADERS=(
+       /usr/include/event2/event-config.h
+)
+
+S=${WORKDIR}/${MY_P}
+
+src_prepare() {
+       elibtoolize
+       epatch "${FILESDIR}/event_signals_ordering.patch"
+       # don't waste time building tests
+       # https://github.com/libevent/libevent/pull/144
+       sed -i -e '/^all:/s|tests||g' Makefile.nmake || die
+}
+
+multilib_src_configure() {
+       # fix out-of-source builds
+       mkdir -p test || die
+
+       ECONF_SOURCE="${S}" \
+       econf \
+               $(use_enable debug debug-mode) \
+               $(use_enable debug malloc-replacement) \
+               $(use_enable ssl openssl) \
+               $(use_enable static-libs static) \
+               $(use_enable threads thread-support)
+}
+
+src_test() {
+       # The test suite doesn't quite work (see bug #406801 for the latest
+       # installment in a riveting series of reports).
+       :
+       # emake -C test check | tee "${T}"/tests
+}
+
+DOCS=( ChangeLog{,-1.4,-2.0} )
+
+multilib_src_install_all() {
+       einstalldocs
+       prune_libtool_files
+}

Reply via email to