pkgsrc/net/rabbitmq/Makefile
adam 7a5976fd29 rabbitmq: updated to 3.8.2
RabbitMQ 3.8.2
Changes

Core Server

Enhancements

Raft implementation optimizations.

Quorum queue optimization: enables local (not going through the leader) delivery from Raft followers
when appropriate and safe.

If x-queue-type argument is not provided at queue declaration time, the type is assumed to be classic
instead of missing.

Quorum queue consumer timeout now can be configured using new style configuration file:

# Hard timeout for quorum queue consumer acknowledgemnts of two minutes
consumer_timeout = 120000

Bug Fixes

A quorum queue could produce an empty Raft log segment if node is killed at a particular moment in time,
which would prevent the node from successfully recovering the log after restart.

Quorum queue consumer count metric could be duplicated when reported via HTTP API or to a Prometheus scraper.

Quorum queue with single active consumer enabled crashes after some basic.get calls. Quorum queues now forbid basic.get when single active consumer is enabled.

CLI Tools

Enhancements

It is now possible to export and import definitions without the use of plugins with
rabbitmqctl export_definitions and rabbitmqctl import_definitions:

# export as a JSON file
rabbitmqctl export_definitions /path/to/target.file.json

# export as JSON to standard output and pipe to jq
rabbitmqctl export_definitions "-" | jq

# export as a compressed Erlang term file
rabbitmqctl export_definitions /path/to/target.file --format=erlang

# learn more
rabbitmqctl help export_definitions
# import from a JSON file
rabbitmqctl import_definitions /path/to/target.file.json

# import JSON from standard input
cat /path/to/definitions.json | rabbitmqctl import_definitions "-"

# import from a compressed Erlang term file
rabbitmqctl import_definitions /path/to/target.file --format=erlang

# learn more
rabbitmqctl help import_definitions

Entities with amq.* prefixes are now skipped during import instead of producing an error.

Bug Fixes

rabbitmqctl await_startup failed with an exception when RabbitMQ application was stopped but the
runtime (Erlang VM) was running.

Management Plugin

Bug Fixes

Definition import via HTTP API could fail in if performed via HTTP API (but not management UI)
and contained operator policies.

Enhancements

Metric aggregation optimizations.

MQTT Plugin

Enhancements

Throughput improvements ranging from 14 to 60 percent depending on workload.

Throughput improvements and reduced CPU usage but slightly higher per connection RAM footprint.

Bug Fixes

Client ID tracker could produce an empty Raft log segment if node is killed at a particular moment in time,
which would prevent the node from successfully recovering the log after restart.

Last Will messages that use QoS 2 will now be downgraded to QoS 1 just like with "regular" published messages.

AMQP 1.0 Plugin

Enhancements

Throughput improvements.

STOMP Plugin

Enhancements

Throughput improvements.

Web STOMP Plugin

Enhancements

Clients now can authenticate using an x.509 (TLS) certificate.

Prometheus Plugin

A small number of queue metrics were not read from the metric store correctly.
2020-02-13 18:31:07 +00:00

109 lines
3.8 KiB
Makefile

# $NetBSD: Makefile,v 1.45 2020/02/13 18:31:07 adam Exp $
DISTNAME= rabbitmq-server-3.8.2
PKGNAME= ${DISTNAME:S/-server//}
CATEGORIES= net
MASTER_SITES= ${MASTER_SITE_GITHUB:=rabbitmq/}
EXTRACT_SUFX= .tar.xz
GITHUB_PROJECT= rabbitmq-server
GITHUB_RELEASE= v${PKGVERSION_NOREV}
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= https://www.rabbitmq.com/
COMMENT= Implementation of AMQP that provides robust messaging for applications
LICENSE= mpl-1.1
USE_TOOLS+= bash:run gmake unzip zip
BUILD_DEPENDS+= elixir-[0-9]*:../../lang/elixir
BUILD_DEPENDS+= libxslt-[0-9]*:../../textproc/libxslt
BUILD_DEPENDS+= ${PYPKGPREFIX}-expat-[0-9]*:../../textproc/py-expat
BUILD_DEPENDS+= rsync-[0-9]*:../../net/rsync
BUILD_DEPENDS+= xmlto-[0-9]*:../../textproc/xmlto
DEPENDS+= ${PYPKGPREFIX}-simplejson>=2:../../converters/py-simplejson
BUILD_DEFS+= VARBASE
# Create a mix tool to avoid nested interpreter issues.
TOOLS_CREATE+= mix
TOOLS_SCRIPT.mix= ${PREFIX}/bin/elixir -r ${PREFIX}/bin/mix -- "$$@"
.include "../../mk/bsd.prefs.mk"
RMQ_USER?= rabbitmq
RMQ_GROUP?= ${RMQ_USER}
RMQ_SHELL?= ${TOOLS_PATH.bash}
RMQ_DIR?= ${VARBASE}/db/rabbitmq
RMQ_LOG?= ${VARBASE}/log/rabbitmq
OWN_DIRS_PERMS+= ${RMQ_DIR} ${RMQ_USER} ${RMQ_GROUP} 0770
OWN_DIRS_PERMS+= ${RMQ_LOG} ${RMQ_USER} ${RMQ_GROUP} 0770
PKG_GROUPS+= ${RMQ_GROUP}
PKG_USERS+= ${RMQ_USER}:${RMQ_GROUP}
PKG_GECOS.${RMQ_USER}= RabbitMQ Server User
PKG_HOME.${RMQ_USER}= ${RMQ_DIR}
PKG_SHELL.${RMQ_USER}= ${RMQ_SHELL}
PKG_SYSCONFSUBDIR= ${PKGBASE}
CONF_FILES+= share/examples/rabbitmq/rabbitmq-env.conf \
${PKG_SYSCONFDIR}/rabbitmq-env.conf
CONF_FILES+= share/examples/rabbitmq/rabbitmq.conf.example \
${PKG_SYSCONFDIR}/rabbitmq.conf
FILES_SUBST+= RMQ_USER=${RMQ_USER}
FILES_SUBST+= RMQ_GROUP=${RMQ_GROUP}
FILES_SUBST+= RMQ_DIR=${RMQ_DIR}
RABBITMQ_HOME= lib/erlang/lib/rabbitmq_server-${PKGVERSION_NOREV}
INSTALLATION_DIRS+= share/examples/rabbitmq
SCRIPTS_DIR= ${WRKSRC}/deps/rabbit/scripts
SUBST_CLASSES+= paths
SUBST_MESSAGE.paths= Setting standard paths
SUBST_STAGE.paths= pre-build
SUBST_FILES.paths= ${SCRIPTS_DIR}/rabbitmq-env
SUBST_FILES.paths+= ${SCRIPTS_DIR}/rabbitmq-server
SUBST_FILES.paths+= ${SCRIPTS_DIR}/rabbitmq-defaults
SUBST_SED.paths= -e 's|/etc/rabbitmq|${PKG_SYSCONFDIR}|g'
SUBST_SED.paths+= -e 's|/var/lib|${VARBASE}/db|g'
SUBST_SED.paths+= -e 's|/var/log|${VARBASE}/log|g'
SUBST_SED.paths+= -e 's|erl|${PREFIX}/bin/erl|g'
SUBST_SED.paths+= -e 's|@RABBITMQ_HOME@|${PREFIX}/${RABBITMQ_HOME}|g'
REPLACE_BASH+= ${SCRIPTS_DIR}/rabbitmqctl
REPLACE_BASH+= ${SCRIPTS_DIR}/rabbitmq-defaults
REPLACE_BASH+= ${SCRIPTS_DIR}/rabbitmq-env
REPLACE_BASH+= ${SCRIPTS_DIR}/rabbitmq-plugins
REPLACE_BASH+= ${SCRIPTS_DIR}/rabbitmq-queues
REPLACE_BASH+= ${SCRIPTS_DIR}/rabbitmq-server
REPLACE_BASH+= ${SCRIPTS_DIR}/rabbitmq-upgrade
# Too much effort to replace the shebang on generated files
CHECK_INTERPRETER_SKIP+= ${RABBITMQ_HOME}/escript/rabbitmq-diagnostics
CHECK_INTERPRETER_SKIP+= ${RABBITMQ_HOME}/escript/rabbitmq-plugins
CHECK_INTERPRETER_SKIP+= ${RABBITMQ_HOME}/escript/rabbitmq-queues
CHECK_INTERPRETER_SKIP+= ${RABBITMQ_HOME}/escript/rabbitmq-upgrade
CHECK_INTERPRETER_SKIP+= ${RABBITMQ_HOME}/escript/rabbitmqctl
CHECK_INTERPRETER_SKIP+= ${RABBITMQ_HOME}/sbin/cuttlefish
MAKE_ENV+= MANDIR="${PREFIX}/${PKGMANDIR}"
MAKE_ENV+= RMQ_BINDIR="${PREFIX}/sbin"
MAKE_ENV+= RMQ_LIBDIR="${PREFIX}/lib/erlang/lib"
MAKE_ENV+= RSYNC="${PREFIX}/bin/rsync"
MAKE_ENV+= VERSION="${PKGVERSION_NOREV}"
INSTALL_TARGET= install-erlapp install-scripts install-bin install-man
TEST_TARGET= check
post-install:
${INSTALL_DATA} ${WRKSRC}/deps/rabbit/docs/rabbitmq.conf.example \
${DESTDIR}${PREFIX}/share/examples/rabbitmq
${INSTALL_DATA} ${FILESDIR}/rabbitmq-env.conf \
${DESTDIR}${PREFIX}/share/examples/rabbitmq
.include "../../lang/erlang/buildlink3.mk"
.include "../../lang/python/application.mk"
.include "../../mk/bsd.pkg.mk"