apkbuilds @ 49e92cf705771c2a47fed50f95b42ab65a49e77a

  1diff --git a/apks/jellyfin-web/APKBUILD b/apks/jellyfin-web/APKBUILD
  2new file mode 100644
  3index 0000000000000000000000000000000000000000..2786c4262630d1c3c9bab909e7c509265f35482c
  4--- /dev/null
  5+++ b/apks/jellyfin-web/APKBUILD
  6@@ -0,0 +1,28 @@
  7+# Maintainer: Simon Zeni <simon@bl4ckb0ne.ca>
  8+pkgname=jellyfin-web
  9+pkgver=10.8.8
 10+pkgrel=0
 11+pkgdesc="Web Client for Jellyfin"
 12+url="https://jellyfin.org/"
 13+# armv7: oom
 14+arch="x86_64 aarch64"
 15+options="!check net" # no tests
 16+license="GPL-2.0-only"
 17+install="$pkgname.post-install"
 18+depends="jellyfin"
 19+makedepends="npm"
 20+source="$pkgname-$pkgver.tar.gz::https://github.com/jellyfin/jellyfin-web/archive/refs/tags/v$pkgver.tar.gz"
 21+
 22+build() {
 23+	npm ci --no-audit
 24+}
 25+
 26+package() {
 27+	mkdir -p "$pkgdir"/usr/lib/jellyfin/jellyfin-web
 28+
 29+	cp -r "$builddir"/dist/* "$pkgdir"/usr/lib/jellyfin/jellyfin-web
 30+}
 31+
 32+sha512sums="
 33+88a829248f1d2506509a3610cc67575899df4fcb371fdd766b4a91f2005f387055ac716047293882cc494e2894f4121049c9525f468a33c99a12ff5d0c87fb19  jellyfin-web-10.8.8.tar.gz
 34+"
 35diff --git a/apks/jellyfin-web/jellyfin-web.post-install b/apks/jellyfin-web/jellyfin-web.post-install
 36new file mode 100644
 37index 0000000000000000000000000000000000000000..a6e69426fe7357daabddec8f662975f83bbecddd
 38--- /dev/null
 39+++ b/apks/jellyfin-web/jellyfin-web.post-install
 40@@ -0,0 +1,6 @@
 41+#!/bin/sh
 42+
 43+printf "  *\n  * The default jellyfin configuration does not enable the web ui.\n"
 44+printf "  * Remove the '--nowebclient' option from /etc/conf.d/jellyfin to enable it.\n  *\n"
 45+
 46+exit 0
 47diff --git a/apks/jellyfin/APKBUILD b/apks/jellyfin/APKBUILD
 48new file mode 100644
 49index 0000000000000000000000000000000000000000..474faf35afdc746b00728f3a3f149d9227c6463f
 50--- /dev/null
 51+++ b/apks/jellyfin/APKBUILD
 52@@ -0,0 +1,63 @@
 53+# Maintainer: Simon Zeni <simon@bl4ckb0ne.ca>
 54+pkgname=jellyfin
 55+pkgver=10.8.8
 56+pkgrel=0
 57+pkgdesc="The Free Software Media System"
 58+pkgusers="$pkgname"
 59+pkggroups="$pkgname"
 60+install="$pkgname.pre-install"
 61+url="https://jellyfin.org/"
 62+arch="x86_64 armv7 aarch64"
 63+license="GPL-2.0-only"
 64+makedepends="dotnet6-sdk"
 65+depends="aspnetcore6-runtime ffmpeg"
 66+subpackages="$pkgname-openrc"
 67+source="$pkgname-$pkgver.tar.gz::https://github.com/jellyfin/jellyfin/archive/refs/tags/v$pkgver.tar.gz
 68+	$pkgname.initd
 69+	$pkgname.confd"
 70+
 71+case $CARCH in
 72+	x86_64) _dotnet_arch=x64;;
 73+	aarch64) _dotnet_arch=arm64;;
 74+	armv7|armhf) _dotnet_arch=arm;;
 75+esac
 76+
 77+# parses RID from /etc/os-release depending on if edge or production release
 78+# to set _runtime_id
 79+# shellcheck disable=SC2034
 80+. /etc/os-release
 81+[ -n "${VERSION_ID//[^_]}" ] && _runtime_id="alpine.${VERSION_ID%_*}-$_dotnet_arch" || _runtime_id="alpine.${VERSION_ID%.*}-$_dotnet_arch"
 82+
 83+build() {
 84+	dotnet build --configuration Release Jellyfin.Server --no-self-contained --runtime $_runtime_id
 85+	dotnet publish --configuration Release Jellyfin.Server --no-self-contained --output publish --runtime $_runtime_id
 86+}
 87+
 88+check() {
 89+	# check on aarch64 is broken for dotnet6-sdk v6.0.1xx due to
 90+	# https://github.com/microsoft/vstest/issues/2566
 91+	if [ "$CARCH" = "aarch64" ]; then
 92+		return
 93+	fi
 94+
 95+	dotnet test --runtime $_runtime_id
 96+}
 97+
 98+package() {
 99+	mkdir -p "$pkgdir"/usr/lib
100+	cp -dr publish "$pkgdir"/usr/lib/jellyfin
101+
102+	mkdir -p "$pkgdir"/usr/bin
103+	ln -s /usr/lib/jellyfin/jellyfin "$pkgdir"/usr/bin/jellyfin
104+
105+	install -Dm755 "$srcdir"/$pkgname.initd \
106+		"$pkgdir"/etc/init.d/$pkgname
107+	install -Dm644 "$srcdir"/$pkgname.confd \
108+		"$pkgdir"/etc/conf.d/$pkgname
109+}
110+
111+sha512sums="
112+1866a8e6a730d2d2211a907aa9087c8bc7069ef53010ba652f1dbbe2c6c638a29259531e31ccf5bee797651999ec0963b2ff3588e791f3b523e43bf4a3556070  jellyfin-10.8.8.tar.gz
113+364a70a953d921048a249fd370642c1782e434c850334cd55e35bbb10d1bb93482d37faa1c11da5d7acba96a084d9832e5db212b65b0fa9907c7d3afe553aaf9  jellyfin.initd
114+d35eb07d11d711b8ad35c7726e151a8096609712fee3bfea00c9adeff8e56660e3cde3d9b0b2dc8a847514af4d2b32340e2b29b77facfab4f8921ba15ba671b0  jellyfin.confd
115+"
116diff --git a/apks/jellyfin/jellyfin.confd b/apks/jellyfin/jellyfin.confd
117new file mode 100644
118index 0000000000000000000000000000000000000000..6cd891ce6d9f1932bbe850fe3e41b6135ac6ad7b
119--- /dev/null
120+++ b/apks/jellyfin/jellyfin.confd
121@@ -0,0 +1,5 @@
122+supervisor=supervise-daemon
123+datadir="/var/lib/jellyfin"
124+cachedir="/var/cache/jellyfin"
125+logdir="/var/log/jellyfin"
126+opts="--nowebclient"
127diff --git a/apks/jellyfin/jellyfin.initd b/apks/jellyfin/jellyfin.initd
128new file mode 100644
129index 0000000000000000000000000000000000000000..278d79dddae9ea4542ce580166a1e6fa3a2d94b7
130--- /dev/null
131+++ b/apks/jellyfin/jellyfin.initd
132@@ -0,0 +1,20 @@
133+#!/sbin/openrc-run
134+
135+name=jellyfin
136+description="The Free Software Media System"
137+
138+command=/usr/bin/jellyfin
139+command_user=jellyfin:jellyfin
140+command_args="--datadir ${datadir} --cachedir ${cachedir} --logdir ${logdir} ${opts}"
141+
142+depend() {
143+	use logger dns
144+	need net
145+	after firewall
146+}
147+
148+start_pre() {
149+	checkpath -d -o $command_user "$datadir"
150+	checkpath -d -o $command_user "$cachedir"
151+	checkpath -d -o $command_user "$logdir"
152+}
153diff --git a/apks/jellyfin/jellyfin.pre-install b/apks/jellyfin/jellyfin.pre-install
154new file mode 100644
155index 0000000000000000000000000000000000000000..6e647160debab510a6a24035d4028b66a6594e71
156--- /dev/null
157+++ b/apks/jellyfin/jellyfin.pre-install
158@@ -0,0 +1,9 @@
159+#!/bin/sh
160+
161+user=jellyfin
162+group=jellyfin
163+
164+addgroup -S $group 2>/dev/null
165+adduser -S -D -h /var/lib/$user -s /sbin/nologin -G $group -g $user $user 2>/dev/null
166+
167+exit 0
168diff --git a/pkgkit b/pkgkit
169index 60d147492c403acde56fb5e4ce01076d239e65b5..4afc8e9b0090daa8072dea76a37bfae44bc759ed 100755
170--- a/pkgkit
171+++ b/pkgkit
172@@ -17,7 +17,7 @@ }
173 
174 get_pkgvar() (
175 	var="$1"
176-set +u
177+	set +u
178 	. APKBUILD
179 	eval 'printf "%s\n" "$'"$var"'"'
180 )
181@@ -93,8 +93,10 @@ 			umask 0007
182 			openssl genrsa -out "$key" 2048
183 		)
184 	fi
185+	pkey="$(basename "$key").pub"
186 	sudo openssl rsa -in $key -pubout \
187-		-out /etc/apk/keys/$(basename "$key").pub
188+		-out /etc/apk/keys/"$pkey"
189+	cp /etc/apk/keys/"$pkey" ~/.abuild/"$pkey"
190 	if [ $set_default -eq 1 ]
191 	then
192 		echo "PACKAGER_PRIVKEY="'"'$key'"' >> \
193@@ -225,7 +227,7 @@ 	arch="$(uname -m)"
194 	aver="$(get_aver)"
195 
196 	set -x
197-	path="$remote_path/$aver/$arch"
198+	path="$remote_path/$aver/$repo/$arch"
199 	ssh "$remote" mkdir -p "$path"
200 
201 	url=$(echo "$remote" | cut -d@ -f2)
202@@ -253,24 +255,20 @@
203 	. /etc/os-release
204 	aver="$(get_aver)"
205 
206-    tmp_repo="/tmp/$aver/"
207-	path="$remote_path/$aver/$arch"
208-
209-    # since my remote server is not alpine I have to download the repo localy
210-	rsync --blocking-io -rP \
211-		"$remote:$path/" \
212-        "$tmp_repo"
213+	path="$remote_path/$aver/$repo/$arch"
214 
215 	set -x
216-    find "$tmp_repo" -type f -name '*.apk' -print0 |
217-    xargs -0 apk index \
218-        --rewrite-arch "$(uname -m)" \
219-        -x "$tmp_repo"/APKINDEX.tar.gz \
220-        -o "$tmp_repo"/APKINDEX.unsigned.tar.gz
221-
222-	abuild-sign "$tmp_repo/APKINDEX.unsigned.tar.gz"
223-	rsync --blocking-io -rP "$tmp_repo/APKINDEX.unsigned.tar.gz" \
224-        "$remote:$path/APKINDEX.tar.gz"
225+	ssh "$remote" \
226+		find "$path" -type f -name '*.apk' -print0 |
227+		ssh "$remote" xargs -0 apk index \
228+			--rewrite-arch "$(uname -m)" \
229+			-x "$path"/APKINDEX.tar.gz \
230+			-o "$path"/APKINDEX.unsigned.tar.gz
231+	rsync --blocking-io -rP \
232+		"$remote:$path/APKINDEX.unsigned.tar.gz" \
233+		/tmp/APKINDEX.tar.gz
234+	abuild-sign /tmp/APKINDEX.tar.gz
235+	rsync --blocking-io -rP /tmp/APKINDEX.tar.gz "$remote:$path/"
236 	set +x
237 )
238