diff --git a/net/lavinmq/Makefile b/net/lavinmq/Makefile index f9b91a70ff16..d53bec6b0ad9 100644 --- a/net/lavinmq/Makefile +++ b/net/lavinmq/Makefile @@ -1,155 +1,166 @@ PORTNAME= lavinmq DISTVERSIONPREFIX= v -DISTVERSION= 2.7.1 +DISTVERSION= 2.9.1 CATEGORIES= net # JavaScripts MASTER_SITES+= https://github.com/chartjs/Chart.js/releases/download/v${_CHARTJS}/:chartjs \ - https://github.com/cloudamqp/amqp-client.js/releases/download/v${_AMQP_JS}/:amqpclient \ https://moment.github.io/luxon/es6/:luxon \ https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@${_LUXON_JS}/dist/:chartjsadapter \ - https://unpkg.com/@stoplight/elements@${_ELEMENTS}/:elements \ - https://raw.githubusercontent.com/eclipse-paho/paho.mqtt.javascript/master/src/:paho + https://unpkg.com/@stoplight/elements@${_ELEMENTS}/:elements DISTFILES+= chart.js-${_CHARTJS}.tgz:chartjs \ - amqp-websocket-client.mjs:amqpclient \ - amqp-websocket-client.mjs.map:amqpclient \ luxon.js:luxon \ chartjs-adapter-luxon.esm.js:chartjsadapter \ web-components.min.js:elements \ - styles.min.css:elements \ - paho-mqtt.js:paho + styles.min.css:elements EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} \ 84codes-lz4.cr-${_LZ4}_GH0.tar.gz \ 84codes-systemd.cr-v${_SYSTEMD}_GH0.tar.gz \ cloudamqp-amq-protocol.cr-v${_AMQP_PROTO}_GH0.tar.gz \ cloudamqp-amqp-client.cr-v${_AMQP_CLIENT}_GH0.tar.gz \ 84codes-mqtt-protocol.cr-v${_MQTT}_GH0.tar.gz \ chart.js-${_CHARTJS}.tgz # Crystal library versions -_AMQP_CLIENT= 1.3.2 -_AMQP_PROTO= 1.1.22 -_LZ4= 96d714f7593c66ca7425872fd26c7b1286806d3d +_AMQP_CLIENT= 1.3.3 +_AMQP_PROTO= 1.3.0 +_LZ4= 0015e74e0ed0f6bb15de9c25c25034ad4bc7f636 _MQTT= 0.3.0 -_SYSTEMD= 3.0.0 +_SYSTEMD= 3.0.1 # JavaScript library versions -_AMQP_JS= 3.1.1 _CHARTJS= 4.0.1 _ELEMENTS= 8.2.0 _LUXON_JS= 1.3.1 MAINTAINER= dch@FreeBSD.org COMMENT= Next-generation AMQP 0.9.1 based message broker WWW= https://www.lavinmq.com/ LICENSE= APACHE20 BUILD_DEPENDS= crystal:lang/crystal \ help2man:misc/help2man \ shards:devel/shards LIB_DEPENDS= liblz4.so:archivers/liblz4 \ libpcre2-8.so:devel/pcre2 USES= pkgconfig ssl:build USE_GITHUB= yes GH_ACCOUNT= cloudamqp GH_TUPLE= 84codes:lz4.cr:${_LZ4}:a/deps/lz4.cr \ 84codes:systemd.cr:v${_SYSTEMD}:systemd/deps/systemd.cr \ cloudamqp:amq-protocol.cr:v${_AMQP_PROTO}:proto/deps/amq-protocol.cr \ cloudamqp:amqp-client.cr:v${_AMQP_CLIENT}:client/deps/amqp-client.cr \ 84codes:mqtt-protocol.cr:v${_MQTT}:mqtt/deps/mqtt-protocol.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 \ -Dgc_none -Dpreview_mt -Dexecution_context .include .if ${SSL_DEFAULT:Mopenssl} || ${SSL_DEFAULT:Mopenssl3*} BROKEN= fails to compile: undefined symbol: EVP_MD_size .endif 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/lavinmq.ini + @${ECHO} "control_unix_path = /var/run/lavinmq/lavinmqctl.sock" \ + >> ${WRKSRC}/extras/lavinmq.ini +# fix compiled-in defaults for FreeBSD hier(7) paths + @${REINPLACE_CMD} \ + -e 's,/var/lib/lavinmq,/var/db/lavinmq,' \ + ${WRKSRC}/src/lavinmq/config/options.cr + @${REINPLACE_CMD} \ + -e 's,/tmp/lavinmqctl.sock,/var/run/lavinmq/lavinmqctl.sock,' \ + ${WRKSRC}/src/lavinmq/http/constants.cr + @${REINPLACE_CMD} \ + -e 's,/etc/lavinmq,${PREFIX}/etc/lavinmq,' \ + ${WRKSRC}/src/lavinmq/config.cr # setup javaScript directories ${MKDIR} ${WRKSRC}/static/js/lib \ ${WRKSRC}/static/js/lib/chunks # extract Chart.js files from tarball ${TAR} -xOf ${DISTDIR}/chart.js-${_CHARTJS}.tgz package/dist/chart.js \ > ${WRKSRC}/static/js/lib/chart.js ${TAR} -xOf ${DISTDIR}/chart.js-${_CHARTJS}.tgz package/dist/chunks/helpers.segment.js \ > ${WRKSRC}/static/js/lib/chunks/helpers.segment.js -# copy AMQP WebSocket client files - ${CP} ${DISTDIR}/amqp-websocket-client.mjs ${WRKSRC}/static/js/lib/ - ${CP} ${DISTDIR}/amqp-websocket-client.mjs.map ${WRKSRC}/static/js/lib/ # copy luxon and Chart.js adapter ${CP} ${DISTDIR}/luxon.js ${WRKSRC}/static/js/lib/ ${CP} ${DISTDIR}/chartjs-adapter-luxon.esm.js ${WRKSRC}/static/js/lib/ ${SED} -i '' \ -e "s|\(import { _adapters } from\).*|\1 './chart.js'|; s|\(import { DateTime } from\).*|\1 './luxon.js'|" \ ${WRKSRC}/static/js/lib/chartjs-adapter-luxon.esm.js # copy stoplight Elements files ${CP} ${DISTDIR}/web-components.min.js ${WRKSRC}/static/js/lib/elements-${_ELEMENTS}.js ${CP} ${DISTDIR}/styles.min.css ${WRKSRC}/static/js/lib/elements-${_ELEMENTS}.css -# copy paho MQTT - ${CP} ${DISTDIR}/paho-mqtt.js ${WRKSRC}/static/js/lib/ + +pre-build: +# render .shtml views into static .html (baked into binary at compile time) +.for v in 401 404 channel channels connection connections consumers \ + exchange exchanges federation login logs nodes operator-policies \ + overview policies queue queues shovels stream unacked user users \ + vhost vhosts + ${WRKSRC}/views/render.sh ${WRKSRC}/views/${v}.shtml \ + "${DISTVERSION}" > ${WRKSRC}/static/${v}.html +.endfor 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}${PREFIX}/share/man/man1 ${INSTALL_DATA} ${WRKSRC}/extras/lavinmq.ini \ ${STAGEDIR}${ETCDIR}/lavinmq.ini.sample .for f in lavinmq lavinmqctl lavinmqperf ${INSTALL_PROGRAM} ${WRKSRC}/bin/${f} \ ${STAGEDIR}${PREFIX}/bin ${INSTALL_MAN} ${WRKDIR}/man1/${f}.1 \ ${STAGEDIR}${PREFIX}/share/man/man1/ .endfor do-install-DOCS-on: ${MKDIR} ${STAGEDIR}${DOCSDIR} .for f in ${PORTDOCS} ${INSTALL_DATA} ${WRKSRC}/${f} \ ${STAGEDIR}${DOCSDIR} .endfor .include diff --git a/net/lavinmq/distinfo b/net/lavinmq/distinfo index a9728e9bcbb9..aa1ca03a69ec 100644 --- a/net/lavinmq/distinfo +++ b/net/lavinmq/distinfo @@ -1,29 +1,23 @@ -TIMESTAMP = 1777205890 +TIMESTAMP = 1782984691 SHA256 (chart.js-4.0.1.tgz) = 461dae2edc0eda7beeb16c7030ab630ab5129aedd3fc6de9a036f6dfe488556f SIZE (chart.js-4.0.1.tgz) = 793292 -SHA256 (amqp-websocket-client.mjs) = a779d8417536e31e44eaceeef5ae745e5f0b95f16cf13a45e6ac5dcaadfd1c47 -SIZE (amqp-websocket-client.mjs) = 82795 -SHA256 (amqp-websocket-client.mjs.map) = 797db087b848af4427e5632d3205fb2ceede7379cb049a2b37c8d2d408b2eec9 -SIZE (amqp-websocket-client.mjs.map) = 86911 SHA256 (luxon.js) = b83748173e228de065fae3256042d88ce656d6cabf6c4eedaa4703a8cf09a730 SIZE (luxon.js) = 256400 SHA256 (chartjs-adapter-luxon.esm.js) = fa02364f717191a48067215aaf9ff93b54ff52e2de64704270742e1d15d1b6df SIZE (chartjs-adapter-luxon.esm.js) = 2531 SHA256 (web-components.min.js) = 598862da6d551769ebad9d61d4e3037535de573a13d3e0bd1ded4c5fc65c5885 SIZE (web-components.min.js) = 1942514 SHA256 (styles.min.css) = 119784e23ffc39b6fa3fdb3df93f391f8250e8af141b78dfc3b6bed86079f93b SIZE (styles.min.css) = 296065 -SHA256 (paho-mqtt.js) = a0c734a00a2172d579ca1ff4f92fb366bccb40974005bdad5ea7a2f0326ac158 -SIZE (paho-mqtt.js) = 90293 -SHA256 (cloudamqp-lavinmq-v2.7.1_GH0.tar.gz) = e071943c001d07d0876e6da02248b7226ad65f28bb75062e3cd5fa05de2773da -SIZE (cloudamqp-lavinmq-v2.7.1_GH0.tar.gz) = 1242917 -SHA256 (84codes-lz4.cr-96d714f7593c66ca7425872fd26c7b1286806d3d_GH0.tar.gz) = 6a851169d1382a35aecff253d24f6acbaaa92b906a24b5edd903637bd212f380 -SIZE (84codes-lz4.cr-96d714f7593c66ca7425872fd26c7b1286806d3d_GH0.tar.gz) = 7298 -SHA256 (84codes-systemd.cr-v3.0.0_GH0.tar.gz) = be484d1c09dd610974adacd0ccd6b8f09ae57510bb92f8f3af9f31870236bb0e -SIZE (84codes-systemd.cr-v3.0.0_GH0.tar.gz) = 8153 -SHA256 (cloudamqp-amq-protocol.cr-v1.1.22_GH0.tar.gz) = 16bfaf3193612d50952149750a2c81194e6aaa673d3f1c6f67e38488e9125027 -SIZE (cloudamqp-amq-protocol.cr-v1.1.22_GH0.tar.gz) = 22538 -SHA256 (cloudamqp-amqp-client.cr-v1.3.2_GH0.tar.gz) = b87a36549a66bdaf625bd9f167643a359ef549d60f6173c688f12a318604abff -SIZE (cloudamqp-amqp-client.cr-v1.3.2_GH0.tar.gz) = 24636 +SHA256 (cloudamqp-lavinmq-v2.9.1_GH0.tar.gz) = b9efc1df449904e4be99c86127a9d821720fc93e7c1ebc8765d826809bb652ca +SIZE (cloudamqp-lavinmq-v2.9.1_GH0.tar.gz) = 1416101 +SHA256 (84codes-lz4.cr-0015e74e0ed0f6bb15de9c25c25034ad4bc7f636_GH0.tar.gz) = 154a447ba927eeca1bcb413662e4df82ed692690c79fd843c47efe545261cf58 +SIZE (84codes-lz4.cr-0015e74e0ed0f6bb15de9c25c25034ad4bc7f636_GH0.tar.gz) = 7301 +SHA256 (84codes-systemd.cr-v3.0.1_GH0.tar.gz) = b1a3a6bec0c3af48d5f7abb0b013fb5b77a8febd5d8a02aeaba597ca3cb9c472 +SIZE (84codes-systemd.cr-v3.0.1_GH0.tar.gz) = 8185 +SHA256 (cloudamqp-amq-protocol.cr-v1.3.0_GH0.tar.gz) = 17431a66be584132fab3400175e0bc91cf9af5b1f818025a8b38f0e9bfb57a49 +SIZE (cloudamqp-amq-protocol.cr-v1.3.0_GH0.tar.gz) = 26041 +SHA256 (cloudamqp-amqp-client.cr-v1.3.3_GH0.tar.gz) = 388a451e94e97a0e45a554a49787e65ebee15ed89552babcab407506f1fa6b24 +SIZE (cloudamqp-amqp-client.cr-v1.3.3_GH0.tar.gz) = 25756 SHA256 (84codes-mqtt-protocol.cr-v0.3.0_GH0.tar.gz) = 2edc2311ffa4d191fb4cef63ed52d7ff810b045a961ac0cc7117233192852c2f SIZE (84codes-mqtt-protocol.cr-v0.3.0_GH0.tar.gz) = 17970 diff --git a/net/lavinmq/files/lavinmq.in b/net/lavinmq/files/lavinmq.in index 3b65c08c50ae..d20d9db15a00 100644 --- a/net/lavinmq/files/lavinmq.in +++ b/net/lavinmq/files/lavinmq.in @@ -1,94 +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.ini". # 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%%/lavinmq.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 + rm -f ${lavinmq_run}/*.sock } run_rc_command "$1"