diff --git a/distro-packages/Arch-Linux/skald-git/PKGBUILD b/distro-packages/Arch-Linux/skald-git/PKGBUILD new file mode 100644 index 0000000..3dcd624 --- /dev/null +++ b/distro-packages/Arch-Linux/skald-git/PKGBUILD @@ -0,0 +1,70 @@ +# Maintainer: Stormux +# shellcheck shell=bash disable=SC2034,SC2154 + +pkgname=skald-git +pkgver=0.0.0.r0.g0000000 +pkgrel=1 +pkgdesc='Audio-only hall-based conferencing server' +arch=('x86_64' 'aarch64') +url='https://git.stormux.org/storm/skald' +license=('MIT') +depends=('ffmpeg') +makedepends=('git' 'go') +provides=('skald') +conflicts=('skald') +source=( + 'git+https://git.stormux.org/storm/skald.git' + 'skald.service' + 'skald.sysusers' + 'skald.tmpfiles' +) +sha256sums=( + 'SKIP' + '7048408e888e08c6f0751979848b85c0c5a0f0e7828b8bcf5594f7ceaf883f90' + 'd17bb4bfb320416da6e6ed43e9df8b8088f149b60808924d2dc0ac0b8e9b9a32' + 'ba8bb0933715c7eb19cdaf8d6dea4e33ff65ad676f1484f9b6a33930ec455f6e' +) + +pkgver() { + cd skald || return + git describe --long --tags 2>/dev/null | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g' || + printf '0.0.0.r%s.g%s' "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)" +} + +build() { + cd skald || return + export CGO_ENABLED=0 + export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw" + go build -ldflags='-s -w' -o skald . + go build -ldflags='-s -w' -o skaldctl ./skaldctl +} + +check() { + cd skald || return + go test ./... +} + +package() { + cd skald || return + + install -Dm755 skald "$pkgdir/usr/bin/skald" + install -Dm755 skaldctl "$pkgdir/usr/bin/skaldctl" + + install -d "$pkgdir/usr/share/skald/static" + cp -a static/. "$pkgdir/usr/share/skald/static/" + + install -Dm644 README.md "$pkgdir/usr/share/doc/skald/README.md" + install -Dm644 skald.md "$pkgdir/usr/share/doc/skald/skald.md" + install -Dm644 skald-api.md "$pkgdir/usr/share/doc/skald/skald-api.md" + install -Dm644 skald-client.md "$pkgdir/usr/share/doc/skald/skald-client.md" + install -Dm644 skald-install.md "$pkgdir/usr/share/doc/skald/skald-install.md" + install -Dm644 skald-protocol.md "$pkgdir/usr/share/doc/skald/skald-protocol.md" + + install -d "$pkgdir/var/lib/skald/data" + install -d "$pkgdir/var/lib/skald/halls" + install -d "$pkgdir/var/lib/skald/recordings" + + install -Dm644 "$srcdir/skald.service" "$pkgdir/usr/lib/systemd/system/skald.service" + install -Dm644 "$srcdir/skald.sysusers" "$pkgdir/usr/lib/sysusers.d/skald.conf" + install -Dm644 "$srcdir/skald.tmpfiles" "$pkgdir/usr/lib/tmpfiles.d/skald.conf" +} diff --git a/distro-packages/Arch-Linux/skald-git/skald.service b/distro-packages/Arch-Linux/skald-git/skald.service new file mode 100644 index 0000000..13ce465 --- /dev/null +++ b/distro-packages/Arch-Linux/skald-git/skald.service @@ -0,0 +1,15 @@ +[Unit] +Description=Skald audio conferencing server +After=network.target + +[Service] +Type=simple +User=skald +Group=skald +WorkingDirectory=/var/lib/skald +ExecStart=/usr/bin/skald -static /usr/share/skald/static -data /var/lib/skald/data -halls /var/lib/skald/halls -recordings /var/lib/skald/recordings +LimitNOFILE=65536 +Restart=on-failure + +[Install] +WantedBy=multi-user.target diff --git a/distro-packages/Arch-Linux/skald-git/skald.sysusers b/distro-packages/Arch-Linux/skald-git/skald.sysusers new file mode 100644 index 0000000..e9a442f --- /dev/null +++ b/distro-packages/Arch-Linux/skald-git/skald.sysusers @@ -0,0 +1 @@ +u skald - "Skald server" /var/lib/skald diff --git a/distro-packages/Arch-Linux/skald-git/skald.tmpfiles b/distro-packages/Arch-Linux/skald-git/skald.tmpfiles new file mode 100644 index 0000000..298ec9a --- /dev/null +++ b/distro-packages/Arch-Linux/skald-git/skald.tmpfiles @@ -0,0 +1,4 @@ +d /var/lib/skald 0750 skald skald - +d /var/lib/skald/data 0750 skald skald - +d /var/lib/skald/halls 0750 skald skald - +d /var/lib/skald/recordings 0750 skald skald - diff --git a/distro-packages/Void-Linux/.gitkeep b/distro-packages/Void-Linux/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/distro-packages/Void-Linux/.gitkeep @@ -0,0 +1 @@ + diff --git a/distro-packages/Void-Linux/skald-git/README.md b/distro-packages/Void-Linux/skald-git/README.md new file mode 100644 index 0000000..92974d9 --- /dev/null +++ b/distro-packages/Void-Linux/skald-git/README.md @@ -0,0 +1,24 @@ +# Void Linux packaging + +This directory contains a local `xbps-src` template for Skald. + +Copy `skald-git/` into `srcpkgs/skald-git/` in a Void packages checkout, +then build it with: + +```sh +./xbps-src pkg skald-git +``` + +The package installs both `skald` and `skaldctl`, creates a `skald` system +account, creates `/var/lib/skald/{data,halls,recordings}`, and provides a +runit service named `skald`. + +To use a private repository, prefer SSH authentication by changing +`repository` in the template, for example: + +```sh +repository="ssh://git@git.stormux.org/storm/skald.git" +``` + +Make sure the build environment has access to the needed SSH key or Git +credential helper. Do not put passwords in the template. diff --git a/distro-packages/Void-Linux/skald-git/files/skald/run b/distro-packages/Void-Linux/skald-git/files/skald/run new file mode 100755 index 0000000..b2a1ffb --- /dev/null +++ b/distro-packages/Void-Linux/skald-git/files/skald/run @@ -0,0 +1,10 @@ +#!/bin/sh +# shellcheck disable=SC3045 +exec 2>&1 +cd /var/lib/skald || exit 1 +ulimit -n 65536 +exec chpst -u skald:skald /usr/bin/skald \ + -static /usr/share/skald/static \ + -data /var/lib/skald/data \ + -halls /var/lib/skald/halls \ + -recordings /var/lib/skald/recordings diff --git a/distro-packages/Void-Linux/skald-git/template b/distro-packages/Void-Linux/skald-git/template new file mode 100644 index 0000000..cc523b4 --- /dev/null +++ b/distro-packages/Void-Linux/skald-git/template @@ -0,0 +1,59 @@ +# Template file for 'skald-git' +# shellcheck shell=bash disable=SC2034,SC2154 +pkgname=skald-git +version=0.0.0 +revision=1 +hostmakedepends="git go" +depends="ffmpeg" +short_desc="Audio-only hall-based conferencing server" +maintainer="Stormux " +license="MIT" +homepage="https://git.stormux.org/storm/skald" +repository="https://git.stormux.org/storm/skald.git" +provides="skald-${version}_${revision}" +conflicts="skald>=0" +wrksrc="skald" +system_accounts="skald" +skald_homedir="/var/lib/skald" +make_dirs=" + /var/lib/skald 0750 skald skald + /var/lib/skald/data 0750 skald skald + /var/lib/skald/halls 0750 skald skald + /var/lib/skald/recordings 0750 skald skald" + +do_fetch() { + if [ -d "${XBPS_BUILDDIR}/${wrksrc}/.git" ]; then + git -C "${XBPS_BUILDDIR}/${wrksrc}" fetch --depth=1 origin "${SKALD_GIT_BRANCH:-master}" + git -C "${XBPS_BUILDDIR}/${wrksrc}" checkout FETCH_HEAD + else + git clone --depth=1 --branch "${SKALD_GIT_BRANCH:-master}" "$repository" "${XBPS_BUILDDIR}/${wrksrc}" + fi +} + +do_build() { + export CGO_ENABLED=0 + export GOFLAGS="-buildmode=pie -trimpath -mod=readonly -modcacherw" + go build -ldflags='-s -w' -o skald . + go build -ldflags='-s -w' -o skaldctl ./skaldctl +} + +do_check() { + go test ./... +} + +do_install() { + vbin skald + vbin skaldctl + + vmkdir usr/share/skald/static + vcopy "static/*" usr/share/skald/static + + vdoc README.md + vdoc skald.md + vdoc skald-api.md + vdoc skald-client.md + vdoc skald-install.md + vdoc skald-protocol.md + + vsv skald +}