diff options
author | Tobias Klausmann <klausman@gentoo.org> | 2015-10-15 09:38:47 +0200 |
---|---|---|
committer | Tobias Klausmann <klausman@gentoo.org> | 2015-10-15 09:38:47 +0200 |
commit | 9183fd4b8989b9411c96db8b7f71780422af4b2e (patch) | |
tree | 6ea54785c3c924d4b348f2b8009801c71547da56 | |
parent | sys-kernel/vanilla-sources: Automated version bump to 3.2.72 - remove old. (diff) | |
download | gentoo-9183fd4b8989b9411c96db8b7f71780422af4b2e.tar.gz gentoo-9183fd4b8989b9411c96db8b7f71780422af4b2e.tar.bz2 gentoo-9183fd4b8989b9411c96db8b7f71780422af4b2e.zip |
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
-rw-r--r-- | dev-libs/libevent/files/event_signals_ordering.patch | 36 | ||||
-rw-r--r-- | dev-libs/libevent/libevent-2.1.5-r4.ebuild | 70 |
2 files changed, 106 insertions, 0 deletions
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 000000000000..d0cb2b3b4bcf --- /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 000000000000..e55213f0d758 --- /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 +} |