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 +}
