diff options
-rw-r--r-- | app-admin/monit/files/monit-fix-unmonitor.patch | 27 | ||||
-rw-r--r-- | app-admin/monit/monit-5.27.1-r1.ebuild | 59 |
2 files changed, 86 insertions, 0 deletions
diff --git a/app-admin/monit/files/monit-fix-unmonitor.patch b/app-admin/monit/files/monit-fix-unmonitor.patch new file mode 100644 index 000000000000..9e134a08d374 --- /dev/null +++ b/app-admin/monit/files/monit-fix-unmonitor.patch @@ -0,0 +1,27 @@ +From a737d3e3bac5bd0378f645eb675a7e4c248e2216 Mon Sep 17 00:00:00 2001 +From: tildeslash <info@tildeslash.com> +Date: Tue, 27 Oct 2020 19:53:56 +0100 +Subject: [PATCH] Fixed: Issue #931: The "if oes exist" file test with + unmonitor or stop action didn't work properly. + +--- + CHANGES | 9 +++++++-- + configure.ac | 2 +- + src/validate.c | 3 +++ + system/packages/redhat/monit.spec | 5 ++++- + 4 files changed, 15 insertions(+), 4 deletions(-) + +diff --git a/src/validate.c b/src/validate.c +index 2bf818a..36aa7ef 100644 +--- a/src/validate.c ++++ b/src/validate.c +@@ -1686,6 +1686,9 @@ State_Type check_file(Service_T s) { + Event_post(s, Event_Exist, State_Failed, l->action, "file exists"); + } + } ++ // Double-check the monitoring state: the "if does exist" may call unmonitor/stop, which resets the service object ++ if (s->monitor == Monitor_Not) ++ return rv; + if (! S_ISREG(s->inf.file->mode) && ! S_ISSOCK(s->inf.file->mode)) { + Event_post(s, Event_Invalid, State_Failed, s->action_INVALID, "is neither a regular file nor a socket"); + return State_Failed; diff --git a/app-admin/monit/monit-5.27.1-r1.ebuild b/app-admin/monit/monit-5.27.1-r1.ebuild new file mode 100644 index 000000000000..ae564169cc26 --- /dev/null +++ b/app-admin/monit/monit-5.27.1-r1.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit bash-completion-r1 pam systemd eutils + +DESCRIPTION="Monitoring and managing daemons or similar programs running on a Unix system" +HOMEPAGE="http://mmonit.com/monit/" +SRC_URI="http://mmonit.com/monit/dist/${P}.tar.gz" + +LICENSE="AGPL-3" +SLOT="0" +KEYWORDS="~amd64 ~ppc ~ppc64 ~x86 ~amd64-linux" +IUSE="ipv6 libressl pam ssl" + +RDEPEND=" + ssl? ( + !libressl? ( dev-libs/openssl:0= ) + libressl? ( dev-libs/libressl:0= ) + )" +DEPEND="${RDEPEND} + pam? ( sys-libs/pam )" +BDEPEND=" + sys-devel/flex + sys-devel/bison +" + +PATCHES=( "${FILESDIR}/monit-fix-unmonitor.patch" ) + +src_prepare() { + default + sed -i -e '/^INSTALL_PROG/s/-s//' Makefile.in || die +} + +src_configure() { + local myeconfargs=( + $(use_with ipv6) + $(use_with pam) + $(use_with ssl) + ) + econf "${myeconfargs[@]}" +} + +src_install() { + default + + insinto /etc; insopts -m600; doins monitrc + newinitd "${FILESDIR}"/monit.initd-5.0-r1 monit + systemd_dounit "${FILESDIR}"/${PN}.service + + use pam && newpamd "${FILESDIR}"/${PN}.pamd ${PN} + + dobashcomp system/bash/monit +} + +pkg_postinst() { + elog "Sample configurations are available at:" + elog "http://mmonit.com/monit/documentation/" +} |