diff --git a/packaging/alpine/local/lavinmq/APKBUILD b/packaging/alpine/local/lavinmq/APKBUILD index 5b25c60..5722354 100644 --- a/packaging/alpine/local/lavinmq/APKBUILD +++ b/packaging/alpine/local/lavinmq/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Joachim Schlöffel pkgname=lavinmq pkgver=2.10.0 -pkgrel=0 +pkgrel=1 pkgdesc="High-performance AMQP and MQTT message queue server" url="https://github.com/cloudamqp/lavinmq" arch="x86_64" @@ -9,7 +9,6 @@ license="Apache-2.0" depends="ca-certificates /bin/sh" makedepends=" crystal=1.21.0-r0 - curl gc-dev help2man libevent-dev @@ -29,15 +28,21 @@ 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 + $pkgname-$pkgver-shards.tar.gz + $pkgname-$pkgver-assets.tar.gz lavinmq.confd lavinmq.initd + use-vendored-build-inputs.patch " -export CRYSTAL_CACHE_DIR="${CRYSTAL_CACHE_DIR:-$srcdir/crystal-cache}" -export SHARDS_CACHE_PATH="${SHARDS_CACHE_PATH:-$srcdir/shards-cache}" +prepare() { + default_prepare + tar -xzf "$srcdir/$pkgname-$pkgver-shards.tar.gz" -C "$builddir" + mkdir -p "$builddir/.alpine-assets" + tar -xzf "$srcdir/$pkgname-$pkgver-assets.tar.gz" -C "$builddir/.alpine-assets" +} build() { crystal --version @@ -46,9 +51,7 @@ build() { } check() { - bin/lavinmq -v - bin/lavinmqctl --version - bin/lavinmqperf --version + crystal spec spec/config_spec.cr } package() { @@ -70,6 +73,9 @@ _openrc() { sha512sums=" b494892dada6eb713025bc3245e16035a63265805d77c537b4530226195f00dacab1fb14de5bf4c999165faa6bf2f7ef7c6b8ffb4c6f4a921977f1c13a4f1545 lavinmq-2.10.0.tar.gz +d0dfdd5c0e474024f57deb9e31c76e3f176e798c8d21dea53d3aea1b05436bd03fa34e69ccddf322bc89adedce5f379df5a316cddbbdfe12520e5bf672ad8228 lavinmq-2.10.0-shards.tar.gz +ae3cea2534b211abbcbd1e4fcb6da73dfaf383a19aef1c45f367cba77492cc20a7ce8283fc42f26c0a023149114c369bed307fb8cde0b8f27fba61165092e986 lavinmq-2.10.0-assets.tar.gz 62a609d50f28db960098c4c84ce4f1dad78413366a9a9aca18fe321114d687be3bf7b71924d4ace69bd74383c5ac40d2ee09ae0eef9c1bfe653b97448e42e110 lavinmq.confd 1853196e70297b5c4a2207fde50df735620cf6d99c4994644fd676bffaf863d67300ad7ae771c4bbb86fce1a0485c2a7968cf912c5f5bb878e08b15e5a28ba1b lavinmq.initd +e7617099f745ecbf2f0686830d0a1b28044741ebd543798505b5b3c08f1be96b6cc478eb18f6785af49b100c2f49d837775f0721ac27519ddf3f081e681c581c use-vendored-build-inputs.patch " diff --git a/packaging/alpine/local/lavinmq/README.md b/packaging/alpine/local/lavinmq/README.md index baa8eb9..96a0914 100644 --- a/packaging/alpine/local/lavinmq/README.md +++ b/packaging/alpine/local/lavinmq/README.md @@ -1,7 +1,9 @@ # LavinMQ Alpine Package Builds LavinMQ from the upstream source release for `x86_64` and packages the -OpenRC service plus `/etc/lavinmq` defaults. +OpenRC service plus `/etc/lavinmq` defaults. The locked Shards dependencies and +frontend assets are versioned, checksummed source inputs, so the build does not +need network access. Build command: @@ -9,7 +11,9 @@ Build command: make ``` -LavinMQ 2.9.2 requires Crystal 1.21.0. The package pins Alpine edge's native +Crystal package, avoiding a glibc toolchain in the Alpine musl build. +LavinMQ 2.10.0 requires Crystal 1.21.0. The package pins Alpine edge's native +Crystal package, avoiding a glibc toolchain in the Alpine musl build. Crystal package, avoiding a glibc toolchain in the Alpine musl build. ## Runtime Layout diff --git a/packaging/alpine/local/lavinmq/lavinmq-2.10.0-assets.tar.gz b/packaging/alpine/local/lavinmq/lavinmq-2.10.0-assets.tar.gz new file mode 100644 index 0000000..6c501e4 Binary files /dev/null and b/packaging/alpine/local/lavinmq/lavinmq-2.10.0-assets.tar.gz differ diff --git a/packaging/alpine/local/lavinmq/lavinmq-2.10.0-shards.tar.gz b/packaging/alpine/local/lavinmq/lavinmq-2.10.0-shards.tar.gz new file mode 100644 index 0000000..cc9c905 Binary files /dev/null and b/packaging/alpine/local/lavinmq/lavinmq-2.10.0-shards.tar.gz differ diff --git a/packaging/alpine/local/lavinmq/use-vendored-build-inputs.patch b/packaging/alpine/local/lavinmq/use-vendored-build-inputs.patch new file mode 100644 index 0000000..d72c392 --- /dev/null +++ b/packaging/alpine/local/lavinmq/use-vendored-build-inputs.patch @@ -0,0 +1,36 @@ +--- a/Makefile ++++ b/Makefile +@@ -8,0 +9 @@ ++LAVINMQ_ASSET_DIR ?= .alpine-assets +@@ -55,2 +56,2 @@ +-lib: shard.yml shard.lock +- shards install --production ++lib: ++ test -d lib +@@ -62,3 +63 @@ +- curl --fail --retry 5 -sL https://github.com/chartjs/Chart.js/releases/download/v4.0.1/chart.js-4.0.1.tgz | \ +- tar -zxOf- package/dist/chart.js > $@ +- [ "038d0a4f9c61f0b35ff70f883e7591403a349542625a4caaf48caa141adedfd5 *$@" = "$$(openssl dgst -sha256 -r $@)" ] ++ install -Dm644 "$(LAVINMQ_ASSET_DIR)/chart.js" "$@" +@@ -67,3 +66 @@ +- curl --fail --retry 5 -sL https://github.com/chartjs/Chart.js/releases/download/v4.0.1/chart.js-4.0.1.tgz | \ +- tar -zxOf- package/dist/chunks/helpers.segment.js > $@ +- [ "b4746b748fe583a18ef921e341b8b65166c2ebd0b737fde6527b254baaeb1aa1 *$@" = "$$(openssl dgst -sha256 -r $@)" ] ++ install -Dm644 "$(LAVINMQ_ASSET_DIR)/helpers.segment.js" "$@" +@@ -72,2 +69 @@ +- curl --fail --retry 5 -sLo $@ https://moment.github.io/luxon/es6/luxon.mjs +- [ "b495ad5cabea3439d04387e6622f2c3fa81d319424d9d76d9e7f874ac5a0807a *$@" = "$$(openssl dgst -sha256 -r $@)" ] ++ install -Dm644 "$(LAVINMQ_ASSET_DIR)/luxon.js" "$@" +@@ -76,3 +72 @@ +- curl --fail --retry 5 -sLo $@ https://cdn.jsdelivr.net/npm/chartjs-adapter-luxon@1.3.1/dist/chartjs-adapter-luxon.esm.js +- sed -i'' -e "s|\(import { _adapters } from\).*|\1 './chart.js'|; s|\(import { DateTime } from\).*|\1 './luxon.js'|" $@ +- [ "17d7b6567d656a004f86b6b5cbdbe64cb308e9a2ebfa7675caa79ba0bc72ef91 *$@" = "$$(openssl dgst -sha256 -r $@)" ] ++ install -Dm644 "$(LAVINMQ_ASSET_DIR)/chartjs-adapter-luxon.esm.js" "$@" +@@ -81,2 +75 @@ +- curl --fail --retry 5 -sLo $@ https://unpkg.com/@stoplight/elements@8.2.0/web-components.min.js +- [ "598862da6d551769ebad9d61d4e3037535de573a13d3e0bd1ded4c5fc65c5885 *$@" = "$$(openssl dgst -sha256 -r $@)" ] ++ install -Dm644 "$(LAVINMQ_ASSET_DIR)/elements-8.2.0.js" "$@" +@@ -85,2 +78 @@ +- curl --fail --retry 5 -sLo $@ https://unpkg.com/@stoplight/elements@8.2.0/styles.min.css +- [ "119784e23ffc39b6fa3fdb3df93f391f8250e8af141b78dfc3b6bed86079f93b *$@" = "$$(openssl dgst -sha256 -r $@)" ] ++ install -Dm644 "$(LAVINMQ_ASSET_DIR)/elements-8.2.0.css" "$@"