Add LavinMQ Alpine package
Build Alpine Packages / build-and-publish (v3.24, 3.24) (pull_request) Successful in 29m11s
Build Alpine Packages / build-and-publish (v3.24, 3.24) (pull_request) Successful in 29m11s
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# Maintainer: Joachim Schlöffel <me@joachim-schloeffel.com>
|
||||
pkgname=lavinmq
|
||||
pkgver=2.9.1
|
||||
pkgrel=0
|
||||
pkgdesc="High-performance AMQP and MQTT message queue server"
|
||||
url="https://github.com/cloudamqp/lavinmq"
|
||||
arch="x86_64"
|
||||
license="Apache-2.0"
|
||||
depends="ca-certificates /bin/sh"
|
||||
makedepends="
|
||||
crystal>=1.20.1
|
||||
curl
|
||||
gc-dev
|
||||
help2man
|
||||
libevent-dev
|
||||
lz4-dev
|
||||
make
|
||||
openssl
|
||||
openssl-dev
|
||||
pcre2-dev
|
||||
shards
|
||||
tar
|
||||
yaml-dev
|
||||
"
|
||||
install="$pkgname.pre-install"
|
||||
subpackages="
|
||||
$pkgname-doc
|
||||
$pkgname-openrc:_openrc:noarch
|
||||
"
|
||||
options="net"
|
||||
source="
|
||||
$pkgname-$pkgver.tar.gz::https://github.com/cloudamqp/lavinmq/archive/refs/tags/v$pkgver.tar.gz
|
||||
lavinmq.confd
|
||||
lavinmq.initd
|
||||
"
|
||||
|
||||
export CRYSTAL_CACHE_DIR="${CRYSTAL_CACHE_DIR:-$srcdir/crystal-cache}"
|
||||
export SHARDS_CACHE_PATH="${SHARDS_CACHE_PATH:-$srcdir/shards-cache}"
|
||||
|
||||
build() {
|
||||
make
|
||||
make man
|
||||
}
|
||||
|
||||
check() {
|
||||
bin/lavinmq -v
|
||||
bin/lavinmqctl --version
|
||||
bin/lavinmqperf --version
|
||||
}
|
||||
|
||||
package() {
|
||||
make DESTDIR="$pkgdir" install
|
||||
rm -r "$pkgdir"/lib/systemd "$pkgdir"/usr/lib/sysusers.d
|
||||
rmdir "$pkgdir"/lib "$pkgdir"/usr/lib
|
||||
}
|
||||
|
||||
_openrc() {
|
||||
pkgdesc="$pkgdesc (OpenRC service)"
|
||||
depends="$pkgname=$pkgver-r$pkgrel openrc"
|
||||
|
||||
install -Dm755 "$srcdir"/lavinmq.initd \
|
||||
"$subpkgdir"/etc/init.d/lavinmq
|
||||
install -Dm644 "$srcdir"/lavinmq.confd \
|
||||
"$subpkgdir"/etc/conf.d/lavinmq
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
5f88de7a1e093b1f6e2ead5c340140bd489a99ca8adfa9f40052148490d0bdf8ff1e2dad67727e9799ad1f942755df01525e63d24b0901684a743f43c42110b9 lavinmq-2.9.1.tar.gz
|
||||
62a609d50f28db960098c4c84ce4f1dad78413366a9a9aca18fe321114d687be3bf7b71924d4ace69bd74383c5ac40d2ee09ae0eef9c1bfe653b97448e42e110 lavinmq.confd
|
||||
76fbfa1b14c58631e92f817e689584239eb644e68460c091decdcabe7661aeb210f9128545262add2fb07eeee155c8734f1e612fc59ebb897d3c67e95a56350f lavinmq.initd
|
||||
"
|
||||
@@ -0,0 +1,72 @@
|
||||
# LavinMQ Alpine Package
|
||||
|
||||
Builds LavinMQ from the upstream source release for `x86_64` and packages the
|
||||
OpenRC service plus `/etc/lavinmq` defaults.
|
||||
|
||||
Build command:
|
||||
|
||||
```sh
|
||||
make
|
||||
```
|
||||
|
||||
LavinMQ 2.9.1 requires Crystal 1.20.1 or newer, so build with Alpine 3.24 or
|
||||
newer.
|
||||
|
||||
## Runtime Layout
|
||||
|
||||
Installs:
|
||||
|
||||
- `lavinmq`
|
||||
- `lavinmqctl`
|
||||
- `lavinmqperf`
|
||||
- `/etc/lavinmq/lavinmq.ini`
|
||||
- `/var/lib/lavinmq`
|
||||
|
||||
Default ports:
|
||||
|
||||
- `5672`: AMQP
|
||||
- `15672`: management UI
|
||||
|
||||
## OpenRC Usage
|
||||
|
||||
```sh
|
||||
apk add lavinmq lavinmq-doc lavinmq-openrc
|
||||
rc-update add lavinmq default
|
||||
rc-service lavinmq start
|
||||
```
|
||||
|
||||
Wrapper settings in `/etc/conf.d/lavinmq`:
|
||||
|
||||
- `LAVINMQ_CONFIG`: config file path passed with `--config`
|
||||
- `LAVINMQ_DATA_DIR`: data directory passed with `-D`
|
||||
- `LAVINMQ_OPTS`: extra LavinMQ arguments appended after package defaults
|
||||
|
||||
## Package Commands
|
||||
|
||||
Refresh checksums:
|
||||
|
||||
```sh
|
||||
ALPINE_PACKAGE=lavinmq mise run apk:checksum
|
||||
```
|
||||
|
||||
Build:
|
||||
|
||||
```sh
|
||||
ALPINE_PACKAGE=lavinmq mise run apk:build
|
||||
```
|
||||
|
||||
Install-test local build:
|
||||
|
||||
```sh
|
||||
ALPINE_PACKAGE=lavinmq SKIP_BUILD=1 mise run apk:test-install
|
||||
```
|
||||
|
||||
Install-test published repository:
|
||||
|
||||
```sh
|
||||
ALPINE_PACKAGE=lavinmq \
|
||||
SKIP_BUILD=1 \
|
||||
ALPINE_REPOSITORY_URL=https://code.factoring.digital/api/packages/public/alpine/v3.24/alpine-packages \
|
||||
ALPINE_REPOSITORY_KEY_URL=https://code.factoring.digital/api/packages/public/alpine/key \
|
||||
mise run apk:test-install
|
||||
```
|
||||
@@ -0,0 +1,4 @@
|
||||
# Defaults for LavinMQ.
|
||||
LAVINMQ_CONFIG="/etc/lavinmq/lavinmq.ini"
|
||||
LAVINMQ_DATA_DIR="/var/lib/lavinmq"
|
||||
LAVINMQ_OPTS=""
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
#!/sbin/openrc-run
|
||||
|
||||
description="LavinMQ message queue service"
|
||||
|
||||
command="/usr/bin/lavinmq"
|
||||
command_user="${LAVINMQ_USER:-lavinmq}:${LAVINMQ_GROUP:-lavinmq}"
|
||||
command_background="yes"
|
||||
pidfile="/run/lavinmq/lavinmq.pid"
|
||||
output_log="${LAVINMQ_LOG:-/var/log/lavinmq/lavinmq.log}"
|
||||
error_log="${LAVINMQ_ERRLOG:-/var/log/lavinmq/lavinmq.log}"
|
||||
|
||||
config_file="${LAVINMQ_CONFIG:-/etc/lavinmq/lavinmq.ini}"
|
||||
data_dir="${LAVINMQ_DATA_DIR:-/var/lib/lavinmq}"
|
||||
command_args="-D ${data_dir} --config ${config_file} ${LAVINMQ_OPTS:-}"
|
||||
|
||||
depend() {
|
||||
need net
|
||||
}
|
||||
|
||||
start_pre() {
|
||||
checkpath -d -m 0755 -o "${LAVINMQ_USER:-lavinmq}:${LAVINMQ_GROUP:-lavinmq}" \
|
||||
/run/lavinmq \
|
||||
/var/log/lavinmq
|
||||
checkpath -d -m 0750 -o "${LAVINMQ_USER:-lavinmq}:${LAVINMQ_GROUP:-lavinmq}" \
|
||||
"$data_dir"
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
addgroup -S lavinmq 2>/dev/null
|
||||
adduser -S -D -H -h /var/lib/lavinmq -s /sbin/nologin \
|
||||
-G lavinmq -g lavinmq lavinmq 2>/dev/null
|
||||
|
||||
exit 0
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
apk add lavinmq lavinmq-doc lavinmq-openrc
|
||||
|
||||
test -x /usr/bin/lavinmq
|
||||
test -x /usr/bin/lavinmqctl
|
||||
test -x /usr/bin/lavinmqperf
|
||||
test -f /etc/lavinmq/lavinmq.ini
|
||||
test -d /var/lib/lavinmq
|
||||
test -f /etc/conf.d/lavinmq
|
||||
test -f /etc/init.d/lavinmq
|
||||
test -f /usr/share/doc/lavinmq/README.md
|
||||
|
||||
lavinmq -v
|
||||
lavinmqctl --version
|
||||
lavinmqperf --version
|
||||
|
||||
rc-update add lavinmq default || true
|
||||
test -L /etc/runlevels/default/lavinmq
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
repo_root="${REPO_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../../../../.." && pwd)}"
|
||||
package_name="${PACKAGE_NAME:-lavinmq}"
|
||||
alpine_version="${ALPINE_VERSION:-3.24}"
|
||||
arch="${ALPINE_ARCH:-x86_64}"
|
||||
repository_url="${ALPINE_REPOSITORY_URL:-}"
|
||||
repository_key_url="${ALPINE_REPOSITORY_KEY_URL:-}"
|
||||
|
||||
case "${arch}" in
|
||||
x86_64)
|
||||
platform="${ALPINE_TEST_PLATFORM:-linux/amd64}"
|
||||
;;
|
||||
aarch64)
|
||||
platform="${ALPINE_TEST_PLATFORM:-linux/arm64}"
|
||||
;;
|
||||
*)
|
||||
printf 'unsupported Alpine architecture: %s\n' "${arch}" >&2
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
|
||||
if [[ -z "${repository_url}" && "${SKIP_BUILD:-0}" != "1" ]]; then
|
||||
ALPINE_PACKAGE="${package_name}" "${repo_root}/scripts/apk/build.sh" build "${arch}"
|
||||
fi
|
||||
|
||||
if [[ -z "${repository_url}" && ! -d "${repo_root}/packages/local/${arch}" ]]; then
|
||||
printf 'missing local repository: packages/local/%s\n' "${arch}" >&2
|
||||
printf 'run: ALPINE_PACKAGE=%s mise run apk:build\n' "${package_name}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
docker run --rm --platform "${platform}" \
|
||||
-e "ALPINE_ARCH=${arch}" \
|
||||
-e "PACKAGE_NAME=${package_name}" \
|
||||
-e "ALPINE_REPOSITORY_URL=${repository_url}" \
|
||||
-e "ALPINE_REPOSITORY_KEY_URL=${repository_key_url}" \
|
||||
-v "${repo_root}/packages/local:/repo:ro" \
|
||||
"alpine:${alpine_version}" \
|
||||
sh -lc '
|
||||
set -e
|
||||
|
||||
if [ -n "${ALPINE_REPOSITORY_URL}" ]; then
|
||||
if [ -n "${ALPINE_REPOSITORY_KEY_URL}" ]; then
|
||||
apk add --no-cache curl >/dev/null
|
||||
cd /etc/apk/keys
|
||||
curl -fsSLOJ "${ALPINE_REPOSITORY_KEY_URL}"
|
||||
fi
|
||||
printf "%s\n" "${ALPINE_REPOSITORY_URL}" >> /etc/apk/repositories
|
||||
else
|
||||
cp "/repo/${ALPINE_ARCH}"/*.rsa.pub /etc/apk/keys/
|
||||
printf "%s\n" /repo >> /etc/apk/repositories
|
||||
fi
|
||||
apk update
|
||||
apk add "${PACKAGE_NAME}" "${PACKAGE_NAME}-doc" "${PACKAGE_NAME}-openrc"
|
||||
|
||||
test -x /usr/bin/lavinmq
|
||||
test -x /usr/bin/lavinmqctl
|
||||
test -x /usr/bin/lavinmqperf
|
||||
test -f /etc/lavinmq/lavinmq.ini
|
||||
test -d /var/lib/lavinmq
|
||||
test -f /etc/conf.d/lavinmq
|
||||
test -f /etc/init.d/lavinmq
|
||||
test -f /usr/share/doc/lavinmq/README.md
|
||||
test -f /usr/share/doc/lavinmq/changelog
|
||||
|
||||
lavinmq -v
|
||||
lavinmqctl --version
|
||||
lavinmqperf --version
|
||||
|
||||
rc-update add lavinmq default
|
||||
test -L /etc/runlevels/default/lavinmq
|
||||
'
|
||||
Reference in New Issue
Block a user