summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app-admin/monit/files/monit-fix-unmonitor.patch27
-rw-r--r--app-admin/monit/monit-5.27.1-r1.ebuild59
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/"
+}