Index: GIDs =================================================================== --- GIDs +++ GIDs @@ -242,7 +242,7 @@ backuppc:*:300: # free: 301 netdata:*:302: -# free: 303 +avalanchemq:*:303: # free: 304 # free: 305 # free: 306 Index: UIDs =================================================================== --- UIDs +++ UIDs @@ -247,7 +247,7 @@ backuppc:*:300:300::0:0:BackupPC pseudo-user:/nonexistent:/usr/sbin/nologin # free: 301 netdata:*:302:302::0:0:NetData Daemon:/var/cache/netdata:/usr/sbin/nologin -# free: 303 +avalanchemq:*:303:303::0:0:AvalancheMQ user:/nonexistent:/usr/sbin/nologin # free: 304 # free: 305 # free: 306 Index: net/Makefile =================================================================== --- net/Makefile +++ net/Makefile @@ -47,6 +47,7 @@ SUBDIR += avahi-libdns SUBDIR += avahi-qt5 SUBDIR += avahi-sharp + SUBDIR += avalanchemq SUBDIR += axa SUBDIR += babeld SUBDIR += balance Index: net/avalanchemq/Makefile =================================================================== --- /dev/null +++ net/avalanchemq/Makefile @@ -0,0 +1,59 @@ +PORTNAME= avalanchemq +DISTVERSIONPREFIX= v +DISTVERSION= 1.0.0-alpha.31 +CATEGORIES= net + +MAINTAINER= dch@FreeBSD.org +COMMENT= Next-generation AMQP 0.9.1 based message broker + +LICENSE= APACHE20 + +BUILD_DEPENDS= crystal:lang/crystal \ + shards:devel/shards + +USES= pkgconfig ssl:build +USE_GITHUB= yes +GH_ACCOUNT= cloudamqp +GH_TUPLE= dch:avalanchemq-lib:${DISTVERSION}:lib + +USE_RC_SUBR= avalanchemq + +USERS= avalanchemq +GROUPS= avalanchemq + +PORTDOCS= CHANGELOG.md NOTICE README.md SECURITY.md + +OPTIONS_DEFINE= DOCS + +SHARDS_ENV= --release --production --local --no-color --progress --stats --static + +post-extract: + @${MV} ${WRKDIR}/avalanchemq-lib-${DISTVERSION} ${WRKSRC}/lib + # switch config example into hier(5) compliance + @${REINPLACE_CMD} -E \ + -e 's,/etc/,${PREFIX}/etc/,' \ + -e 's,/lib/,/db/,' \ + -e 's,/tmp/avalanchemq-http.sock,/var/run/avalanchemq/http.sock,' \ + -e 's,/tmp/avalanchemq.sock,/var/run/avalanchemq/amqp.sock,' \ + ${WRKSRC}/extras/config.ini + +do-build: + (cd ${WRKSRC} && ${LOCALBASE}/bin/shards build ${SHARDS_ENV}) + +do-install: + ${MKDIR} \ + ${STAGEDIR}${ETCDIR} \ + ${STAGEDIR}/var/db/avalanchemq \ + ${STAGEDIR}/var/log/avalanchemq +.for f in mq mqctl mqperf + ${INSTALL_PROGRAM} ${WRKSRC}/bin/avalanche${f} \ + ${STAGEDIR}${PREFIX}/bin +.endfor + +do-install-DOCS-on: + ${MKDIR} ${STAGEDIR}${DOCSDIR} +.for f in ${PORTDOCS} + ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR} +.endfor + +.include Index: net/avalanchemq/distinfo =================================================================== --- /dev/null +++ net/avalanchemq/distinfo @@ -0,0 +1,5 @@ +TIMESTAMP = 1628108503 +SHA256 (cloudamqp-avalanchemq-v1.0.0-alpha.31_GH0.tar.gz) = c4264e6dff3b3b65e17604a3dea21e2614a8167495c8167a431f59bef9218ec0 +SIZE (cloudamqp-avalanchemq-v1.0.0-alpha.31_GH0.tar.gz) = 871165 +SHA256 (dch-avalanchemq-lib-1.0.0-alpha.31_GH0.tar.gz) = 15fd65ae3b6ae8a36605e70f34c67ca6a3f0ee94fdbedaba4c4b3d06c71292a6 +SIZE (dch-avalanchemq-lib-1.0.0-alpha.31_GH0.tar.gz) = 121562 Index: net/avalanchemq/files/avalanchemq.in =================================================================== --- /dev/null +++ net/avalanchemq/files/avalanchemq.in @@ -0,0 +1,94 @@ +#!/bin/sh + +# PROVIDE: avalanchemq +# REQUIRE: DAEMON +# KEYWORD: shutdown +# +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf +# to enable this service: +# +# avalanchemq_enable (bool): Set it to YES to enable avalanchemq. +# Default is "NO". +# avalanchemq_user (user): Set user to run avalanchemq. +# Default is "avalanchemq". +# avalanchemq_group (group): Set group to run avalanchemq. +# Default is "avalanchemq". +# avalanchemq_config (file): Set avalanchemq config file. +# Default is "%%ETCDIR%%/avalanchemq.conf". +# avalanchemq_syslog_output_enable (bool): Set to enable syslog output. +# Default is "NO". See daemon(8). +# avalanchemq_syslog_output_priority (str): Set syslog priority if syslog enabled. +# Default is "info". See daemon(8). +# avalanchemq_syslog_output_facility (str): Set syslog facility if syslog enabled. +# Default is "daemon". See daemon(8). + +. /etc/rc.subr + +name=avalanchemq +rcvar=avalanchemq_enable + +load_rc_config $name + +: ${avalanchemq_enable:="NO"} +: ${avalanchemq_dir:="/var/db/avalanchemq"} +: ${avalanchemq_run:="/var/run/avalanchemq"} +: ${avalanchemq_user:="avalanchemq"} +: ${avalanchemq_group:="avalanchemq"} +: ${avalanchemq_config:="%%ETCDIR%%/config.ini"} + +DAEMON=$(/usr/sbin/daemon 2>&1 | grep -q syslog ; echo $?) +if [ ${DAEMON} -eq 0 ]; then + : ${avalanchemq_syslog_output_enable:="NO"} + : ${avalanchemq_syslog_output_priority:="info"} + : ${avalanchemq_syslog_output_facility:="daemon"} + if checkyesno avalanchemq_syslog_output_enable; then + avalanchemq_syslog_output_flags="-T ${name}" + + if [ -n "${avalanchemq_syslog_output_priority}" ]; then + avalanchemq_syslog_output_flags="${avalanchemq_syslog_output_flags} -s ${avalanchemq_syslog_output_priority}" + fi + + if [ -n "${avalanchemq_syslog_output_facility}" ]; then + avalanchemq_syslog_output_flags="${avalanchemq_syslog_output_flags} -l ${avalanchemq_syslog_output_facility}" + fi + fi +else + avalanchemq_syslog_output_enable="NO" + avalanchemq_syslog_output_flags="" +fi + +pidfile=/var/run/avalanchemq/daemon.pid +procname="%%PREFIX%%/bin/avalanchemq" +command="/usr/sbin/daemon" +command_args="-f -t ${name} ${avalanchemq_syslog_output_flags} -p ${pidfile} /usr/bin/env ${avalanchemq_env} ${procname} --config=${avalanchemq_config}" + +extra_commands="reload monitor" +monitor_cmd=avalanchemq_monitor +start_precmd=avalanchemq_startprecmd +required_files="$avalanchemq_config" + +avalanchemq_monitor() +{ + sig_reload=USR1 + run_rc_command "reload" +} + +avalanchemq_startprecmd() +{ + if [ ! -d ${avalanchemq_run} ]; then + install -d -o ${avalanchemq_user} -g ${avalanchemq_group} ${avalanchemq_run} + fi + + if [ ! -d ${avalanchemq_dir} ]; then + install -d -o ${avalanchemq_user} -g ${avalanchemq_group} ${avalanchemq_dir} + fi + + if [ ! -e ${pidfile} ]; then + install -o ${avalanchemq_user} -g ${avalanchemq_group} /dev/null ${pidfile}; + fi + + # remove stray sockets that can block startup + rm -rf ${avalanchemq_run}/*.sock /tmp/avalanchemq +} + +run_rc_command "$1" Index: net/avalanchemq/pkg-descr =================================================================== --- /dev/null +++ net/avalanchemq/pkg-descr @@ -0,0 +1,16 @@ +AvalancheMQ is a message queue server, also called a message broker, +where messages are published by a sending service called a producer, via +the broker, to then be consumed by the receiving service called a +consumer. When not handling messages, the queue can route, buffer, and +persist the messages according to rules set up by the user. + +Messages can be sent across languages, platforms, and OS, which decouple +processes and creates a highly scalable system. AvalancheMQ, as queue +management software, gives an organized, safe place for messages to wait +until another application or part of the system can come along and +consume them for processing. + +AvalancheMQ is written in Crystal, a statically compiled LLVM-based +language with a ruby-like syntax. + +WWW: https://www.avalanchemq.com/ Index: net/avalanchemq/pkg-plist =================================================================== --- /dev/null +++ net/avalanchemq/pkg-plist @@ -0,0 +1,7 @@ +@dir(avalanchemq,avalanchemq,750) %%ETCDIR%% +@dir(avalanchemq,avalanchemq,750) /var/db/avalanchemq +@dir(avalanchemq,avalanchemq,750) /var/log/avalanchemq +@comment TBH is there a default to use yet? @sample %%ETCDIR%%/avalanchemq.conf.sample +bin/avalanchemq +bin/avalanchemqctl +bin/avalanchemqperf