Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F150662841
D31410.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
10 KB
Referenced Files
None
Subscribers
None
D31410.diff
View Options
diff --git a/GIDs b/GIDs
--- a/GIDs
+++ b/GIDs
@@ -255,7 +255,7 @@
_sphinx:*:312:
_fastdfs:*:313:
promscale:*:314:
-# free: 315
+lavinmq:*:315:
# free: 316
# free: 317
# free: 318
diff --git a/UIDs b/UIDs
--- a/UIDs
+++ b/UIDs
@@ -260,7 +260,7 @@
_sphinx:*:312:312::0:0:Sphinxsearch Owner:/nonexistent:/usr/sbin/nologin
_fastdfs:*:313:313::0:0:FastDFS Owner:/nonexistent:/usr/sbin/nologin
promscale:*:314:314::0:0:Promscale:/nonexistent:/usr/sbin/nologin
-# free: 315
+lavinmq:*:315:315::0:0:LavinMQ user:/nonexistent:/usr/sbin/nologin
# free: 316
# free: 317
# free: 318
diff --git a/net/Makefile b/net/Makefile
--- a/net/Makefile
+++ b/net/Makefile
@@ -346,6 +346,7 @@
SUBDIR += lambdamoo
SUBDIR += landrop
SUBDIR += latd
+ SUBDIR += lavinmq
SUBDIR += ldap-stats
SUBDIR += ldapbrowser
SUBDIR += ldapdiff
diff --git a/net/lavinmq/Makefile b/net/lavinmq/Makefile
new file mode 100644
--- /dev/null
+++ b/net/lavinmq/Makefile
@@ -0,0 +1,88 @@
+PORTNAME= lavinmq
+DISTVERSIONPREFIX= v
+DISTVERSION= 1.0.0-beta.8
+CATEGORIES= net
+
+PATCH_SITES= https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
+# PATCHFILES+= 3a73c414b749.patch:-p1 # https://github.com/cloudamqp/lavinmq/pull/273
+
+MAINTAINER= dch@FreeBSD.org
+COMMENT= Next-generation AMQP 0.9.1 based message broker
+
+LICENSE= APACHE20
+
+BUILD_DEPENDS= crystal:lang/crystal \
+ help2man:misc/help2man \
+ shards:devel/shards
+
+USES= pkgconfig ssl:build
+USE_GITHUB= yes
+GH_ACCOUNT= cloudamqp
+GH_TUPLE= \
+ 84codes:http-protection:893a191d55e301e0df96d6dd0f7d72c527bddeb8:a/deps/http-protection \
+ 84codes:systemd.cr:v2.0.0:systemd/deps/systemd.cr \
+ cloudamqp:amq-protocol.cr:v1.1.2:proto/deps/amq-protocol.cr \
+ cloudamqp:amqp-client.cr:v1.0.9:client/deps/amqp-client.cr \
+ luislavena:radix:v0.4.1:radix/deps/radix \
+ schovi:baked_file_system:v0.10.0:baked/deps/baked_file_system \
+ tbrand:router.cr:v0.2.8:router/deps/router.cr
+
+USE_RC_SUBR= lavinmq
+
+USERS= lavinmq
+GROUPS= lavinmq
+
+PORTDOCS= CHANGELOG.md NOTICE README.md SECURITY.md
+
+OPTIONS_DEFINE= DOCS
+
+SHARDS_ENV= --time --verbose --production --release --no-color --stats --static
+
+post-extract:
+ # force shards to use local paths, not git repos, for dependencies
+ @${RM} ${WRKSRC}/shard.lock
+ @${REINPLACE_CMD} -E \
+ -e 's,github: .*/,path: deps/,' \
+ -e '/branch:/d' \
+ -e '/version: .>1/d' \
+ ${WRKSRC}/shard.yml ${WRKSRC}/deps/*/shard.yml
+ # switch config example into hier(5) compliance
+ @${REINPLACE_CMD} -E \
+ -e 's,/etc/,${PREFIX}/etc/,' \
+ -e 's,/lib/,/db/,' \
+ -e 's,/tmp/lavinmq-http.sock,/var/run/lavinmq/http.sock,' \
+ -e 's,/tmp/lavinmq.sock,/var/run/lavinmq/amqp.sock,' \
+ ${WRKSRC}/extras/config.ini
+
+do-build:
+ ${MKDIR} ${WRKDIR}/man1
+ (cd ${WRKSRC} && ${LOCALBASE}/bin/shards lock ${SHARDS_ENV} \
+ && ${LOCALBASE}/bin/shards build ${SHARDS_ENV})
+ help2man -Nn "fast and advanced message queue server" \
+ ${WRKSRC}/bin/lavinmq -o ${WRKDIR}/man1/lavinmq.1
+ help2man -Nn "control utility for lavinmq server" \
+ ${WRKSRC}/bin/lavinmqctl -o ${WRKDIR}/man1/lavinmqctl.1
+ help2man -Nn "performance testing tool for amqp servers" \
+ ${WRKSRC}/bin/lavinmqperf -o ${WRKDIR}/man1/lavinmqperf.1
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${ETCDIR} \
+ ${STAGEDIR}/var/db/lavinmq \
+ ${STAGEDIR}/var/log/lavinmq \
+ ${STAGEDIR}${MAN1PREFIX}/man/man1
+ ${INSTALL_DATA} ${WRKSRC}/extras/config.ini \
+ ${STAGEDIR}${ETCDIR}/config.ini.sample
+.for f in lavinmq lavinmqctl lavinmqperf
+ ${INSTALL_PROGRAM} ${WRKSRC}/bin/${f} \
+ ${STAGEDIR}${PREFIX}/bin
+ ${INSTALL_MAN} ${WRKDIR}/man1/${f}.1 ${STAGEDIR}${MAN1PREFIX}/man/man1/
+.endfor
+
+do-install-DOCS-on:
+ ${MKDIR} ${STAGEDIR}${DOCSDIR}
+.for f in ${PORTDOCS}
+ ${INSTALL_DATA} ${WRKSRC}/${f} \
+ ${STAGEDIR}${DOCSDIR}
+.endfor
+
+.include <bsd.port.mk>
diff --git a/net/lavinmq/distinfo b/net/lavinmq/distinfo
new file mode 100644
--- /dev/null
+++ b/net/lavinmq/distinfo
@@ -0,0 +1,17 @@
+TIMESTAMP = 1672656176
+SHA256 (cloudamqp-lavinmq-v1.0.0-beta.8_GH0.tar.gz) = e0c7a90bc0b240f2dcf118a9c922c4b0ee604f19dfb2ed0b7137cb73af8abe3b
+SIZE (cloudamqp-lavinmq-v1.0.0-beta.8_GH0.tar.gz) = 707858
+SHA256 (84codes-http-protection-893a191d55e301e0df96d6dd0f7d72c527bddeb8_GH0.tar.gz) = eba9fed6dff8ed2b1322ca57b5bdd1e6d4afe49367ca84f38cd0cd7c062dab93
+SIZE (84codes-http-protection-893a191d55e301e0df96d6dd0f7d72c527bddeb8_GH0.tar.gz) = 10307
+SHA256 (84codes-systemd.cr-v2.0.0_GH0.tar.gz) = 4dd0c6f838542f97338866aef36de7b464c06112c4434e4db48aa65586b68ef3
+SIZE (84codes-systemd.cr-v2.0.0_GH0.tar.gz) = 4339
+SHA256 (cloudamqp-amq-protocol.cr-v1.1.2_GH0.tar.gz) = 23c1f3bd2c611a4249fc4a5438db2d68d647dfef900138675aabdc0e4a122ca5
+SIZE (cloudamqp-amq-protocol.cr-v1.1.2_GH0.tar.gz) = 15611
+SHA256 (cloudamqp-amqp-client.cr-v1.0.9_GH0.tar.gz) = 9c7cbcd390b353ac9e138d669ec251236341c0f8ccf18b190f37b46f16a5c0d8
+SIZE (cloudamqp-amqp-client.cr-v1.0.9_GH0.tar.gz) = 19647
+SHA256 (luislavena-radix-v0.4.1_GH0.tar.gz) = 5f207eb769101d94726eb476eb5f9b4603482c7941396ab4c85866722b7497b1
+SIZE (luislavena-radix-v0.4.1_GH0.tar.gz) = 13847
+SHA256 (schovi-baked_file_system-v0.10.0_GH0.tar.gz) = ea63c25b5327817bb494edb3e74950a42a4a50efc25e8035292f15f1e3039a50
+SIZE (schovi-baked_file_system-v0.10.0_GH0.tar.gz) = 56007
+SHA256 (tbrand-router.cr-v0.2.8_GH0.tar.gz) = a64540dbd57bc2feba50a432b37d3647f4ab72ee16058746623f3f024b5f3f25
+SIZE (tbrand-router.cr-v0.2.8_GH0.tar.gz) = 5132
diff --git a/net/lavinmq/files/lavinmq.in b/net/lavinmq/files/lavinmq.in
new file mode 100644
--- /dev/null
+++ b/net/lavinmq/files/lavinmq.in
@@ -0,0 +1,94 @@
+#!/bin/sh
+
+# PROVIDE: lavinmq
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# lavinmq_enable (bool): Set it to YES to enable lavinmq.
+# Default is "NO".
+# lavinmq_user (user): Set user to run lavinmq.
+# Default is "lavinmq".
+# lavinmq_group (group): Set group to run lavinmq.
+# Default is "lavinmq".
+# lavinmq_config (file): Set lavinmq config file.
+# Default is "%%ETCDIR%%/lavinmq.conf".
+# lavinmq_syslog_output_enable (bool): Set to enable syslog output.
+# Default is "NO". See daemon(8).
+# lavinmq_syslog_output_priority (str): Set syslog priority if syslog enabled.
+# Default is "info". See daemon(8).
+# lavinmq_syslog_output_facility (str): Set syslog facility if syslog enabled.
+# Default is "daemon". See daemon(8).
+
+. /etc/rc.subr
+
+name=lavinmq
+rcvar=lavinmq_enable
+
+load_rc_config $name
+
+: ${lavinmq_enable:="NO"}
+: ${lavinmq_dir:="/var/db/lavinmq"}
+: ${lavinmq_run:="/var/run/lavinmq"}
+: ${lavinmq_user:="lavinmq"}
+: ${lavinmq_group:="lavinmq"}
+: ${lavinmq_config:="%%ETCDIR%%/config.ini"}
+
+DAEMON=$(/usr/sbin/daemon 2>&1 | grep -q syslog ; echo $?)
+if [ ${DAEMON} -eq 0 ]; then
+ : ${lavinmq_syslog_output_enable:="NO"}
+ : ${lavinmq_syslog_output_priority:="info"}
+ : ${lavinmq_syslog_output_facility:="daemon"}
+ if checkyesno lavinmq_syslog_output_enable; then
+ lavinmq_syslog_output_flags="-T ${name}"
+
+ if [ -n "${lavinmq_syslog_output_priority}" ]; then
+ lavinmq_syslog_output_flags="${lavinmq_syslog_output_flags} -s ${lavinmq_syslog_output_priority}"
+ fi
+
+ if [ -n "${lavinmq_syslog_output_facility}" ]; then
+ lavinmq_syslog_output_flags="${lavinmq_syslog_output_flags} -l ${lavinmq_syslog_output_facility}"
+ fi
+ fi
+else
+ lavinmq_syslog_output_enable="NO"
+ lavinmq_syslog_output_flags=""
+fi
+
+pidfile=/var/run/lavinmq/daemon.pid
+procname="%%PREFIX%%/bin/lavinmq"
+command="/usr/sbin/daemon"
+command_args="-f -t ${name} ${lavinmq_syslog_output_flags} -p ${pidfile} /usr/bin/env ${lavinmq_env} ${procname} --config=${lavinmq_config}"
+
+extra_commands="reload monitor"
+monitor_cmd=lavinmq_monitor
+start_precmd=lavinmq_startprecmd
+required_files="$lavinmq_config"
+
+lavinmq_monitor()
+{
+ sig_reload=USR1
+ run_rc_command "reload"
+}
+
+lavinmq_startprecmd()
+{
+ if [ ! -d ${lavinmq_run} ]; then
+ install -d -o ${lavinmq_user} -g ${lavinmq_group} ${lavinmq_run}
+ fi
+
+ if [ ! -d ${lavinmq_dir} ]; then
+ install -d -o ${lavinmq_user} -g ${lavinmq_group} ${lavinmq_dir}
+ fi
+
+ if [ ! -e ${pidfile} ]; then
+ install -o ${lavinmq_user} -g ${lavinmq_group} /dev/null ${pidfile};
+ fi
+
+ # remove stray sockets that can block startup
+ rm -rf ${lavinmq_run}/*.sock /tmp/lavinmq
+}
+
+run_rc_command "$1"
diff --git a/net/lavinmq/files/patch-src_lavinmqperf.cr b/net/lavinmq/files/patch-src_lavinmqperf.cr
new file mode 100644
--- /dev/null
+++ b/net/lavinmq/files/patch-src_lavinmqperf.cr
@@ -0,0 +1,11 @@
+--- src/lavinmqperf.cr.orig 2023-01-02 14:26:00 UTC
++++ src/lavinmqperf.cr
+@@ -482,7 +482,7 @@ class ConnectionCount < Perf
+
+ private def client : AMQP::Client
+ client = @client ||= AMQP::Client.new(@uri)
+- client.host = "127.0.#{Random.rand(UInt8)}.#{Random.rand(UInt8)}" if @random_localhost
++ # client.host = "127.0.#{Random.rand(UInt8)}.#{Random.rand(UInt8)}" if @random_localhost
+ client
+ end
+
diff --git a/net/lavinmq/pkg-descr b/net/lavinmq/pkg-descr
new file mode 100644
--- /dev/null
+++ b/net/lavinmq/pkg-descr
@@ -0,0 +1,16 @@
+LavinMQ is a message queue server, also called a message broker, compatible
+with the AMQP0.9 spec, 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. lavinmq, 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.
+
+lavinmq is written in Crystal, a statically compiled LLVM-based
+language with a ruby-like syntax.
+
+WWW: https://www.lavinmq.com/
diff --git a/net/lavinmq/pkg-plist b/net/lavinmq/pkg-plist
new file mode 100644
--- /dev/null
+++ b/net/lavinmq/pkg-plist
@@ -0,0 +1,10 @@
+@dir(lavinmq,lavinmq,750) %%ETCDIR%%
+@dir(lavinmq,lavinmq,750) /var/db/lavinmq
+@dir(lavinmq,lavinmq,750) /var/log/lavinmq
+@sample %%ETCDIR%%/config.ini.sample
+bin/lavinmq
+bin/lavinmqctl
+bin/lavinmqperf
+man/man1/lavinmq.1.gz
+man/man1/lavinmqctl.1.gz
+man/man1/lavinmqperf.1.gz
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 4, 4:48 AM (6 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30777186
Default Alt Text
D31410.diff (10 KB)
Attached To
Mode
D31410: net/lavinmq: NEW PORT a high-speed AMQP-0.9.1 message broker
Attached
Detach File
Event Timeline
Log In to Comment