aboutsummaryrefslogtreecommitdiffstats
path: root/sysutils
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils')
-rw-r--r--sysutils/Makefile1
-rw-r--r--sysutils/hfm/Makefile56
-rw-r--r--sysutils/hfm/distinfo6
-rw-r--r--sysutils/hfm/files/hfm.in47
-rw-r--r--sysutils/hfm/pkg-descr17
-rw-r--r--sysutils/hfm/pkg-message5
-rw-r--r--sysutils/hfm/pkg-plist8
7 files changed, 140 insertions, 0 deletions
diff --git a/sysutils/Makefile b/sysutils/Makefile
index 0c12b90b8968..776b38eb1258 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -405,6 +405,7 @@
SUBDIR += heartbeat
SUBDIR += heirloom
SUBDIR += hextools
+ SUBDIR += hfm
SUBDIR += hfsexplorer
SUBDIR += hfsutils
SUBDIR += hidesvn
diff --git a/sysutils/hfm/Makefile b/sysutils/hfm/Makefile
new file mode 100644
index 000000000000..4e4d0563d0da
--- /dev/null
+++ b/sysutils/hfm/Makefile
@@ -0,0 +1,56 @@
+# $FreeBSD$
+
+PORTNAME= hfm
+PORTVERSION= 1.1.3
+DISTVERSIONPREFIX= v
+CATEGORIES= sysutils
+
+MAINTAINER= 554b8425@razorfever.net
+COMMENT= Run tests in parallel at high frequency
+
+LICENSE= BSD2CLAUSE
+
+# gb 0.4 includes FreeBSD-specific fixes that this port requires
+# https://github.com/constabulary/gb/issues/506
+BUILD_DEPENDS= go>=1.5:${PORTSDIR}/lang/go \
+ gb>=0.4:${PORTSDIR}/devel/gb \
+ ${LOCALBASE}/lib/libucl.a:${PORTSDIR}/textproc/libucl
+
+USES= compiler:c++11-lang
+USE_GITHUB= yes
+
+GH_ACCOUNT= derekmarcotte mitchellh:gu op:gl
+GH_PROJECT= hfm go-libucl:gu go-logging:gl
+GH_TAGNAME= ${DISTVERSIONFULL} f9d0e55:gu dfaf3df:gl
+
+USERS= _hfm
+GROUPS= _hfm
+
+USE_RC_SUBR= hfm
+
+MAKE_ARGS+= ETCDIR=${ETCDIR} TAG=${DISTVERSIONPREFIX}${PORTVERSION}
+
+NO_INSTALL= yes
+ALL_TARGET= test build
+
+post-extract:
+ ${MKDIR} ${WRKSRC}/vendor/src/github.com/mitchellh/go-libucl
+ ${MV} ${WRKDIR}/go-libucl-f9d0e55/* ${WRKSRC}/vendor/src/github.com/mitchellh/go-libucl/
+ ${MKDIR} ${WRKSRC}/vendor/src/github.com/op/go-logging
+ ${MV} ${WRKDIR}/go-logging-dfaf3df/* ${WRKSRC}/vendor/src/github.com/op/go-logging/
+
+do-patch:
+ (cd ${WRKSRC}; ${PATCH} vendor/src/github.com/mitchellh/go-libucl/libucl.go < vendor/patches/github.com/mitchellh/go-libucl/libucl.go.patch )
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/bin/hfm ${STAGEDIR}${PREFIX}/bin
+ @${MKDIR} ${STAGEDIR}${ETCDIR}
+ ${INSTALL_DATA} ${WRKSRC}/examples/hfm.conf.sample ${STAGEDIR}${ETCDIR}
+ @${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
+ ${INSTALL_DATA} ${WRKSRC}/examples/* ${STAGEDIR}${EXAMPLESDIR}
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/doc/* ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/sysutils/hfm/distinfo b/sysutils/hfm/distinfo
new file mode 100644
index 000000000000..11a1c39c14a3
--- /dev/null
+++ b/sysutils/hfm/distinfo
@@ -0,0 +1,6 @@
+SHA256 (derekmarcotte-hfm-v1.1.3_GH0.tar.gz) = 8e00fbb4a640ac5cd6473f4705043af4067be731cdabc5aeb882121a0ccae743
+SIZE (derekmarcotte-hfm-v1.1.3_GH0.tar.gz) = 33915
+SHA256 (mitchellh-go-libucl-f9d0e55_GH0.tar.gz) = 955e56fa334e7131ca313098fcf0a91ce89270cf1294d2a07830aa1c17b58fc0
+SIZE (mitchellh-go-libucl-f9d0e55_GH0.tar.gz) = 9426
+SHA256 (op-go-logging-dfaf3df_GH0.tar.gz) = d34d3afbdb07ad92f51d2a0a9f2682a4c0fcece733618a4ad27013e5ab6c8b60
+SIZE (op-go-logging-dfaf3df_GH0.tar.gz) = 35747
diff --git a/sysutils/hfm/files/hfm.in b/sysutils/hfm/files/hfm.in
new file mode 100644
index 000000000000..74e216fe9679
--- /dev/null
+++ b/sysutils/hfm/files/hfm.in
@@ -0,0 +1,47 @@
+#!/bin/sh
+
+# $FreeBSD$
+#
+# PROVIDE: hfm
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# hfm_enable (bool): Set to NO by default.
+# Set it to YES to enable hfm.
+#
+# hfm_flags (bool): Check the sources of hfm for flags
+#
+
+. /etc/rc.subr
+
+name=hfm
+rcvar=hfm_enable
+
+command="%%PREFIX%%/bin/${name}"
+
+hfm_user=_hfm
+hfm_flags=${hfm_flags:-"-config %%ETCDIR%%/${name}.conf -facility local0 -log syslog"}
+
+pidfile="/var/run/${name}.pid"
+
+required_files="%%ETCDIR%%/${name}.conf"
+
+start_cmd=hfm_start
+stop_postcmd=hfm_postcmd
+
+hfm_start() {
+ echo "Staring ${name}."
+
+ /usr/sbin/daemon -cf -u ${hfm_user} -p ${pidfile} ${command} ${hfm_flags}
+}
+
+hfm_postcmd() {
+ [ -f ${pidfile} ] && rm ${pidfile}
+}
+
+load_rc_config $name
+run_rc_command "$1"
+
diff --git a/sysutils/hfm/pkg-descr b/sysutils/hfm/pkg-descr
new file mode 100644
index 000000000000..431436bd27da
--- /dev/null
+++ b/sysutils/hfm/pkg-descr
@@ -0,0 +1,17 @@
+hfm is an application to run tests in parallel at a high frequency.
+If the outcome of the test results in a state change, other commands
+can be executed.
+
+It is designed to be a general purpose, loosely-coupled tool, by
+having both the tests and the state change commands be executed by
+the operating system. For example, one could write the test in
+shell or c, and have it called through the exec facility.
+
+In practice, the overhead of spawning a new process per test limits
+frequency that can be achieved by the tests, and their results.
+Anecdotally, 5ms intervals have been seen to be achievable.
+
+An example application is to poll other network services for health,
+and to take actions based on their health status changes.
+
+WWW: https://github.com/derekmarcotte/hfm
diff --git a/sysutils/hfm/pkg-message b/sysutils/hfm/pkg-message
new file mode 100644
index 000000000000..52dc919ad1bb
--- /dev/null
+++ b/sysutils/hfm/pkg-message
@@ -0,0 +1,5 @@
+hfm includes an rc.d script to control a daemon mode. Use:
+
+sysrc hfh_enable=yes
+
+to enable.
diff --git a/sysutils/hfm/pkg-plist b/sysutils/hfm/pkg-plist
new file mode 100644
index 000000000000..a6359bce5f99
--- /dev/null
+++ b/sysutils/hfm/pkg-plist
@@ -0,0 +1,8 @@
+bin/hfm
+%%PORTDOCS%%%%DOCSDIR%%/README.md
+%%PORTDOCS%%%%DOCSDIR%%/architecture-90dpi.png
+%%PORTDOCS%%%%DOCSDIR%%/architecture.svg
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hfm-test-fast.conf
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hfm-test-start-delay.conf
+%%PORTEXAMPLES%%%%EXAMPLESDIR%%/hfm.conf.sample
+@sample %%ETCDIR%%/hfm.conf.sample