Project import
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e99c376 --- /dev/null +++ b/Makefile
@@ -0,0 +1,139 @@ +# +# Copyright (c) 2010-2013 Nest Labs, Inc. +# All rights reserved. +# +# This document is the property of Nest. It is considered +# confidential and proprietary information. +# +# This document may not be reproduced or transmitted in any form, +# in whole or in part, without the express written permission of +# Nest. +# +# Description: +# This file is the make file for the daemon-monitoring daemon +# (DMD), monit. +# + + +include pre.mak + +PackageName := monit + +PackageExtension := tar.gz +PackageSeparator := - + +PackagePatchArgs := -p1 + +PackageArchive := $(PackageName).$(PackageExtension) +PackageSourceDir := $(PackageName)$(PackageSeparator)$(PackageVersion) + +PackageBuildMakefile = $(call GenerateBuildPaths,Makefile) + +PackageBuildConfigure = $(call GenerateBuildPaths,configure) + +LicenseSourceFiles := LICENSE COPYING +LicenseSourcePaths := $(addprefix $(PackageSourceDir)/,$(LicenseSourceFiles)) + +CleanPaths += $(PackageLicenseFile) + +OpenSSLDir := sw/tps/openssl +OpenSSLIncDir := $(call GenerateResultPaths,$(OpenSSLDir),usr/include) +OpenSSLLibDir := $(call GenerateResultPaths,$(OpenSSLDir),usr/lib) + +ZlibDir := sw/tps/zlib +ZlibIncDir := $(call GenerateResultPaths,$(ZlibDir),usr/include) +ZlibLibDir := $(call GenerateResultPaths,$(ZlibDir),usr/lib) + +SOURCEDIRS = $(PackageSourceDir) +$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure + +all: $(PackageDefaultGoal) + +# Generate the package license contents. + +$(LicenseSourcePaths): $(BuildDirectory)/source + +$(PackageLicenseFile): $(LicenseSourcePaths) + $(Verbose)touch $@ + $(Verbose)for file in $(LicenseSourcePaths); do \ + echo "Concatenating \"$${file}\"..."; \ + cat $${file} >> $@; \ + done + +# Extract the source from the archive and apply patches, if any. + +$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths) + $(expand-and-patch-package) + +# Prepare the sources. + +$(BuildDirectory)/source: | $(PackageSourceDir) + $(Verbose)touch $@ + +# Patch the sources, if necessary. + +$(BuildDirectory)/patch: $(BuildDirectory)/source + $(Verbose)touch $@ + +# Generate the package build configure script by shadowing the source +# tree as a link farm. +# +# This is generally unnecessary for most GNU autoconf-based packages; +# however, monit completely drops the ball on non-colocated builds. + +# Generate the package build makefile. + +# Configure the source for building. + +$(BuildDirectory)/configure: $(BuildDirectory)/source | $(PackageSourceDir) $(BuildDirectory) + $(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory)) + $(Verbose)cd $(BuildDirectory) && \ + ./configure \ + --config-cache \ + CC="$(CC)" CXX="$(CXX)" AR=$(AR) RANLIB=$(RANLIB) STRIP=$(STRIP) NM=$(NM) OBJDUMP=$(OBJDUMP) \ + LDFLAGS="-Wl,-rpath-link -Wl,$(ZlibLibDir)" \ + INSTALL="$(INSTALL) $(INSTALLFLAGS)" \ + libmonit_cv_setjmp_available=yes \ + libmonit_cv_vsnprintf_c99_conformant=yes \ + ac_cv_ipv6=yes \ + --build=$(HostTuple) \ + --host=$(TargetTuple) \ + --prefix=/usr \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --enable-optimized \ + --with-ssl-incl-dir=$(OpenSSLIncDir) \ + --with-ssl-lib-dir=$(OpenSSLLibDir) \ + --without-pam + $(Verbose)touch $@ + +# Build the source. +# +# We have to unset MAKEFLAGS since they confuse the package build otherwise. + +$(BuildDirectory)/build: $(BuildDirectory)/configure + $(Verbose)unset MAKEFLAGS && \ + $(MAKE) $(JOBSFLAG) -C $(BuildDirectory) all + $(Verbose)touch $@ + +# Stage the build to a temporary installation area. +# +# We have to unset MAKEFLAGS since they confuse the package build otherwise. + +$(BuildDirectory)/stage: $(BuildDirectory)/build | $(ResultDirectory) + $(Verbose)unset MAKEFLAGS && \ + $(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \ + DESTDIR=$(ResultDirectory) \ + MODE_PROGS=775 \ + install + $(Verbose)touch $@ + +.PHONY: stage +stage: $(BuildDirectory)/stage + +clean: + $(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir) + $(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory) + $(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory) + +include post.mak
diff --git a/monit.patches/monit-50.description b/monit.patches/monit-50.description new file mode 100644 index 0000000..16b2b97 --- /dev/null +++ b/monit.patches/monit-50.description
@@ -0,0 +1 @@ +This patch prints out a human reabable string indicating why the preceding fork call failed.
diff --git a/monit.patches/monit-50.patch b/monit.patches/monit-50.patch new file mode 100644 index 0000000..8fb8b7c --- /dev/null +++ b/monit.patches/monit-50.patch
@@ -0,0 +1,12 @@ +diff -aruN a/src/spawn.c b/src/spawn.c +--- a/src/spawn.c 2012-05-06 02:40:45.000000000 -0700 ++++ b/src/spawn.c 2013-03-16 16:31:41.808861381 -0700 +@@ -157,7 +157,7 @@ + + pid= fork(); + if(pid < 0) { +- LogError("Cannot fork a new process\n"); ++ LogError("Cannot fork a new process: %s\n", strerror(errno)); + exit(1); + } +
diff --git a/monit.patches/monit-51.description b/monit.patches/monit-51.description new file mode 100644 index 0000000..3f5d463 --- /dev/null +++ b/monit.patches/monit-51.description
@@ -0,0 +1,4 @@ +Forces a linux reboot if monit ever exits from a failure to fork. + +Monit can unexpected stop (which is pretty lame for a system monitor) if the +system runs out of memory. This patch forces a linux reboot if that happens.
diff --git a/monit.patches/monit-51.patch b/monit.patches/monit-51.patch new file mode 100644 index 0000000..be57788 --- /dev/null +++ b/monit.patches/monit-51.patch
@@ -0,0 +1,66 @@ +diff -aru monit-5.4/src/daemonize.c monit-edited/src/daemonize.c +--- monit-5.4/src/daemonize.c 2012-05-06 02:40:45.000000000 -0700 ++++ monit-edited/src/daemonize.c 2016-01-07 17:54:13.979175325 -0800 +@@ -61,6 +61,7 @@ + #include <string.h> + #endif + ++#include <sys/reboot.h> + #include "monit.h" + + +@@ -93,8 +94,9 @@ + */ + if((pid= fork ()) < 0) { + +- LogError("Cannot fork of a new process\n"); +- exit (1); ++ LogError("Cannot fork of a new process, rebooting\n"); ++ sync(); ++ reboot(RB_AUTOBOOT); + + } + else if(pid != 0) { +@@ -107,8 +109,9 @@ + + if((pid= fork ()) < 0) { + +- LogError("Cannot fork of a new process\n"); +- exit (1); ++ LogError("Cannot fork of a new process, rebooting\n"); ++ sync(); ++ reboot(RB_AUTOBOOT); + + } + else if(pid != 0) { +Only in monit-edited/src: .daemonize.c.swp +diff -aru monit-5.4/src/spawn.c monit-edited/src/spawn.c +--- monit-5.4/src/spawn.c 2016-01-07 14:15:22.132302393 -0800 ++++ monit-edited/src/spawn.c 2016-01-07 17:53:54.130841558 -0800 +@@ -64,10 +64,13 @@ + #include <sys/stat.h> + #endif + ++ + #ifdef HAVE_FCNTL_H + #include <fcntl.h> + #endif + ++#include <sys/reboot.h> ++ + #include "event.h" + #include "alert.h" + #include "monit.h" +@@ -157,8 +160,9 @@ + + pid= fork(); + if(pid < 0) { +- LogError("Cannot fork a new process: %s\n", strerror(errno)); +- exit(1); ++ LogError("Cannot fork a new process, rebooting: %s\n", strerror(errno)); ++ sync(); ++ reboot(RB_AUTOBOOT); + } + + if(pid == 0) { +Only in monit-edited/src: .spawn.c.swp
diff --git a/monit.patches/monit-52.description b/monit.patches/monit-52.description new file mode 100644 index 0000000..6d46fff --- /dev/null +++ b/monit.patches/monit-52.description
@@ -0,0 +1 @@ +This patch removes host name DNS resolution to speed up the start/stop process.
diff --git a/monit.patches/monit-52.patch b/monit.patches/monit-52.patch new file mode 100644 index 0000000..267c411 --- /dev/null +++ b/monit.patches/monit-52.patch
@@ -0,0 +1,38 @@ +diff -Naur monit-5.4/src/util.c monit-edited/src/util.c +--- monit-5.4/src/util.c 2012-05-06 02:40:45.000000000 -0700 ++++ monit-edited/src/util.c 2016-03-14 11:48:27.047055577 -0700 +@@ -1886,9 +1886,7 @@ + + + int Util_getfqdnhostname(char *buf, unsigned len) { +- int status; + char hostname[STRLEN]; +- struct addrinfo hints, *info = NULL; + + // Set the base hostname + if (gethostname(hostname, sizeof(hostname))) { +@@ -1896,24 +1894,6 @@ + return -1; + } + snprintf(buf, len, "%s", hostname); +- +- // Try to look for FQDN hostname +- memset(&hints, 0, sizeof(hints)); +- hints.ai_family = AF_UNSPEC; +- hints.ai_socktype = SOCK_STREAM; +- hints.ai_flags = AI_CANONNAME; +- if ((status = getaddrinfo(hostname, NULL, &hints, &info))) { +- LogError("%s: Cannot translate '%s' to FQDN name -- %s\n", prog, hostname, status == EAI_SYSTEM ? STRERROR : gai_strerror(status)); +- } else { +- for (struct addrinfo *result = info; result; result = result->ai_next) { +- if (Str_startsWith(result->ai_canonname, hostname)) { +- snprintf(buf, len, "%s", result->ai_canonname); +- break; +- } +- } +- } +- if (info) +- freeaddrinfo(info); + return 0; + } +
diff --git a/monit.tar.gz b/monit.tar.gz new file mode 100644 index 0000000..adaafb1 --- /dev/null +++ b/monit.tar.gz Binary files differ
diff --git a/monit.url b/monit.url new file mode 100644 index 0000000..70bfc2f --- /dev/null +++ b/monit.url
@@ -0,0 +1 @@ +http://mmonit.com/monit/dist/monit-5.4.tar.gz
diff --git a/monit.version b/monit.version new file mode 100644 index 0000000..37c2d99 --- /dev/null +++ b/monit.version
@@ -0,0 +1 @@ +5.4