diff options
-rw-r--r-- | apks/jellyfin-web/APKBUILD | 28 | ||||
-rw-r--r-- | apks/jellyfin-web/jellyfin-web.post-install | 6 | ||||
-rw-r--r-- | apks/jellyfin/APKBUILD | 63 | ||||
-rw-r--r-- | apks/jellyfin/jellyfin.confd | 5 | ||||
-rw-r--r-- | apks/jellyfin/jellyfin.initd | 20 | ||||
-rw-r--r-- | apks/jellyfin/jellyfin.pre-install | 9 | ||||
-rwxr-xr-x | pkgkit | 36 |
7 files changed, 148 insertions, 19 deletions
diff --git a/apks/jellyfin-web/APKBUILD b/apks/jellyfin-web/APKBUILD new file mode 100644 index 0000000..2786c42 --- /dev/null +++ b/apks/jellyfin-web/APKBUILD @@ -0,0 +1,28 @@ +# Maintainer: Simon Zeni <simon@bl4ckb0ne.ca> +pkgname=jellyfin-web +pkgver=10.8.8 +pkgrel=0 +pkgdesc="Web Client for Jellyfin" +url="https://jellyfin.org/" +# armv7: oom +arch="x86_64 aarch64" +options="!check net" # no tests +license="GPL-2.0-only" +install="$pkgname.post-install" +depends="jellyfin" +makedepends="npm" +source="$pkgname-$pkgver.tar.gz::https://github.com/jellyfin/jellyfin-web/archive/refs/tags/v$pkgver.tar.gz" + +build() { + npm ci --no-audit +} + +package() { + mkdir -p "$pkgdir"/usr/lib/jellyfin/jellyfin-web + + cp -r "$builddir"/dist/* "$pkgdir"/usr/lib/jellyfin/jellyfin-web +} + +sha512sums=" +88a829248f1d2506509a3610cc67575899df4fcb371fdd766b4a91f2005f387055ac716047293882cc494e2894f4121049c9525f468a33c99a12ff5d0c87fb19 jellyfin-web-10.8.8.tar.gz +" diff --git a/apks/jellyfin-web/jellyfin-web.post-install b/apks/jellyfin-web/jellyfin-web.post-install new file mode 100644 index 0000000..a6e6942 --- /dev/null +++ b/apks/jellyfin-web/jellyfin-web.post-install @@ -0,0 +1,6 @@ +#!/bin/sh + +printf " *\n * The default jellyfin configuration does not enable the web ui.\n" +printf " * Remove the '--nowebclient' option from /etc/conf.d/jellyfin to enable it.\n *\n" + +exit 0 diff --git a/apks/jellyfin/APKBUILD b/apks/jellyfin/APKBUILD new file mode 100644 index 0000000..474faf3 --- /dev/null +++ b/apks/jellyfin/APKBUILD @@ -0,0 +1,63 @@ +# Maintainer: Simon Zeni <simon@bl4ckb0ne.ca> +pkgname=jellyfin +pkgver=10.8.8 +pkgrel=0 +pkgdesc="The Free Software Media System" +pkgusers="$pkgname" +pkggroups="$pkgname" +install="$pkgname.pre-install" +url="https://jellyfin.org/" +arch="x86_64 armv7 aarch64" +license="GPL-2.0-only" +makedepends="dotnet6-sdk" +depends="aspnetcore6-runtime ffmpeg" +subpackages="$pkgname-openrc" +source="$pkgname-$pkgver.tar.gz::https://github.com/jellyfin/jellyfin/archive/refs/tags/v$pkgver.tar.gz + $pkgname.initd + $pkgname.confd" + +case $CARCH in + x86_64) _dotnet_arch=x64;; + aarch64) _dotnet_arch=arm64;; + armv7|armhf) _dotnet_arch=arm;; +esac + +# parses RID from /etc/os-release depending on if edge or production release +# to set _runtime_id +# shellcheck disable=SC2034 +. /etc/os-release +[ -n "${VERSION_ID//[^_]}" ] && _runtime_id="alpine.${VERSION_ID%_*}-$_dotnet_arch" || _runtime_id="alpine.${VERSION_ID%.*}-$_dotnet_arch" + +build() { + dotnet build --configuration Release Jellyfin.Server --no-self-contained --runtime $_runtime_id + dotnet publish --configuration Release Jellyfin.Server --no-self-contained --output publish --runtime $_runtime_id +} + +check() { + # check on aarch64 is broken for dotnet6-sdk v6.0.1xx due to + # https://github.com/microsoft/vstest/issues/2566 + if [ "$CARCH" = "aarch64" ]; then + return + fi + + dotnet test --runtime $_runtime_id +} + +package() { + mkdir -p "$pkgdir"/usr/lib + cp -dr publish "$pkgdir"/usr/lib/jellyfin + + mkdir -p "$pkgdir"/usr/bin + ln -s /usr/lib/jellyfin/jellyfin "$pkgdir"/usr/bin/jellyfin + + install -Dm755 "$srcdir"/$pkgname.initd \ + "$pkgdir"/etc/init.d/$pkgname + install -Dm644 "$srcdir"/$pkgname.confd \ + "$pkgdir"/etc/conf.d/$pkgname +} + +sha512sums=" +1866a8e6a730d2d2211a907aa9087c8bc7069ef53010ba652f1dbbe2c6c638a29259531e31ccf5bee797651999ec0963b2ff3588e791f3b523e43bf4a3556070 jellyfin-10.8.8.tar.gz +364a70a953d921048a249fd370642c1782e434c850334cd55e35bbb10d1bb93482d37faa1c11da5d7acba96a084d9832e5db212b65b0fa9907c7d3afe553aaf9 jellyfin.initd +d35eb07d11d711b8ad35c7726e151a8096609712fee3bfea00c9adeff8e56660e3cde3d9b0b2dc8a847514af4d2b32340e2b29b77facfab4f8921ba15ba671b0 jellyfin.confd +" diff --git a/apks/jellyfin/jellyfin.confd b/apks/jellyfin/jellyfin.confd new file mode 100644 index 0000000..6cd891c --- /dev/null +++ b/apks/jellyfin/jellyfin.confd @@ -0,0 +1,5 @@ +supervisor=supervise-daemon +datadir="/var/lib/jellyfin" +cachedir="/var/cache/jellyfin" +logdir="/var/log/jellyfin" +opts="--nowebclient" diff --git a/apks/jellyfin/jellyfin.initd b/apks/jellyfin/jellyfin.initd new file mode 100644 index 0000000..278d79d --- /dev/null +++ b/apks/jellyfin/jellyfin.initd @@ -0,0 +1,20 @@ +#!/sbin/openrc-run + +name=jellyfin +description="The Free Software Media System" + +command=/usr/bin/jellyfin +command_user=jellyfin:jellyfin +command_args="--datadir ${datadir} --cachedir ${cachedir} --logdir ${logdir} ${opts}" + +depend() { + use logger dns + need net + after firewall +} + +start_pre() { + checkpath -d -o $command_user "$datadir" + checkpath -d -o $command_user "$cachedir" + checkpath -d -o $command_user "$logdir" +} diff --git a/apks/jellyfin/jellyfin.pre-install b/apks/jellyfin/jellyfin.pre-install new file mode 100644 index 0000000..6e64716 --- /dev/null +++ b/apks/jellyfin/jellyfin.pre-install @@ -0,0 +1,9 @@ +#!/bin/sh + +user=jellyfin +group=jellyfin + +addgroup -S $group 2>/dev/null +adduser -S -D -h /var/lib/$user -s /sbin/nologin -G $group -g $user $user 2>/dev/null + +exit 0 @@ -17,7 +17,7 @@ usage() { get_pkgvar() ( var="$1" -set +u + set +u . APKBUILD eval 'printf "%s\n" "$'"$var"'"' ) @@ -93,8 +93,10 @@ add_repo() { openssl genrsa -out "$key" 2048 ) fi + pkey="$(basename "$key").pub" sudo openssl rsa -in $key -pubout \ - -out /etc/apk/keys/$(basename "$key").pub + -out /etc/apk/keys/"$pkey" + cp /etc/apk/keys/"$pkey" ~/.abuild/"$pkey" if [ $set_default -eq 1 ] then echo "PACKAGER_PRIVKEY="'"'$key'"' >> \ @@ -225,7 +227,7 @@ upload_pkg() ( aver="$(get_aver)" set -x - path="$remote_path/$aver/$arch" + path="$remote_path/$aver/$repo/$arch" ssh "$remote" mkdir -p "$path" url=$(echo "$remote" | cut -d@ -f2) @@ -253,24 +255,20 @@ update_index() ( . /etc/os-release aver="$(get_aver)" - tmp_repo="/tmp/$aver/" - path="$remote_path/$aver/$arch" - - # since my remote server is not alpine I have to download the repo localy - rsync --blocking-io -rP \ - "$remote:$path/" \ - "$tmp_repo" + path="$remote_path/$aver/$repo/$arch" set -x - find "$tmp_repo" -type f -name '*.apk' -print0 | - xargs -0 apk index \ - --rewrite-arch "$(uname -m)" \ - -x "$tmp_repo"/APKINDEX.tar.gz \ - -o "$tmp_repo"/APKINDEX.unsigned.tar.gz - - abuild-sign "$tmp_repo/APKINDEX.unsigned.tar.gz" - rsync --blocking-io -rP "$tmp_repo/APKINDEX.unsigned.tar.gz" \ - "$remote:$path/APKINDEX.tar.gz" + ssh "$remote" \ + find "$path" -type f -name '*.apk' -print0 | + ssh "$remote" xargs -0 apk index \ + --rewrite-arch "$(uname -m)" \ + -x "$path"/APKINDEX.tar.gz \ + -o "$path"/APKINDEX.unsigned.tar.gz + rsync --blocking-io -rP \ + "$remote:$path/APKINDEX.unsigned.tar.gz" \ + /tmp/APKINDEX.tar.gz + abuild-sign /tmp/APKINDEX.tar.gz + rsync --blocking-io -rP /tmp/APKINDEX.tar.gz "$remote:$path/" set +x ) |