diff --git a/jellyfin/PKGBUILD b/jellyfin/PKGBUILD new file mode 100644 index 0000000..bdb5529 --- /dev/null +++ b/jellyfin/PKGBUILD @@ -0,0 +1,77 @@ +# Maintainer: Luca Weiss +# Contributor: Maxime Gauduin +# Contributor: Daniel Seymour + +pkgbase=jellyfin +pkgname=(jellyfin jellyfin-web jellyfin-server) +pkgver=10.8.0alpha5 +pkgrel=1 +pkgdesc='The Free Software Media System' +arch=('i686' 'x86_64' 'armv6h') +url='https://github.com/jellyfin/jellyfin' +license=('GPL2') +makedepends=('dotnet-sdk>=5' 'npm' 'git') +source=("jellyfin-$pkgver.tar.gz::https://github.com/jellyfin/jellyfin/archive/v10.8.0-alpha5.tar.gz" + "jellyfin-web-$pkgver.tar.gz::https://github.com/jellyfin/jellyfin-web/archive/v10.8.0-alpha5.tar.gz" + 'jellyfin.conf' + 'jellyfin.service' + 'jellyfin.sysusers' + 'jellyfin.tmpfiles') +b2sums=('6ac9536f3bf0d316061625cc9cb229885ad6ccd457a38ebd51a4f17d641a7aa551bf2273b29654a5a3a15ee7f971d3df12a15c8ef8856c819ba36a3b958d5108' + 'd06e3a721611bbe0c55be8f9da9b58950663ffa5e728605b97fd1518f69892f1fa91ae4947c8ac17c0629264dc814d315cfb0dc8ce7f63b273d6f27782201d85' + '687d46dc6ba548d536dfe0efe5d265c56d6e681ff0c5d6e211c46a5383d6e350dcdbb943d17a30395e468e56deedc741c126c78206c3577564eb0df1c3351929' + 'cbfe2e55eb32a70fcf7f875ff5314aaf2c58650ba60e4aa241cb348cbbb8108592905cf209cd9ebe8790dfc5d755347e5226ef58ee64c82f296ec90b580e7c10' + '0abe73da344e379a9c19efe4e656144a8d4056fccafba0f94f8c79154eeeb488127936c8c7f1cde011bbb53b757aea1f3d2f8d5cdb17293e8b8a1a9fb8b04f90' + '5756d26274c359ea48a5841e0a96319c6f5359fd4f81ed2f1f97dcf8e93f5afbefd2be4ca1bed70569a78149e9b292d07bf7971401ae3fbea1354568c7583ad8') + +build(){ + # Build jellyfin-web + cd jellyfin-web-10.8.0-alpha5 + + #yarn install --cache-folder "$srcdir"/yarn-cache + npm install --cache "${srcdir}/npm-cache" + + # Build jellyfin-server + cd ../jellyfin-10.8.0-alpha5 + + # Disable dotnet telemetry + export DOTNET_CLI_TELEMETRY_OPTOUT=1 + + dotnet build --configuration Release Jellyfin.Server + # Ideally, this would be run in package() with the --output variable pointing + # to "$pkgdir"/usr/lib/jellyfin, but this step fails in fakeroot. + # The makepkg output looks like + # Restore completed in 56.84 ms for /aur/jellyfin-git/src/jellyfin/Jellyfin.Server/Jellyfin.Server.csproj. + # ==> ERROR: A failure occurred in package(). + # without indicating any sort of failure. + dotnet publish --configuration Release Jellyfin.Server --output "$PWD"/publish + # Clean up the runtimes folder (keep linux-*) + rm -rfv publish/runtimes/{alpine-*,osx*,tizen-*,win*} +} + +package_jellyfin() { + depends=("jellyfin-web=$pkgver" "jellyfin-server=$pkgver") +} + +package_jellyfin-server() { + pkgdesc="Jellyfin server component" + depends=('dotnet-runtime>=5' 'aspnet-runtime>=5' 'ffmpeg' 'sqlite') + backup=('etc/conf.d/jellyfin') + + mkdir -p "$pkgdir"/usr/lib + cp -dr --no-preserve='ownership' jellyfin-10.8.0-alpha5/publish "$pkgdir"/usr/lib/jellyfin + + install -Dm 644 jellyfin.service -t "$pkgdir"/usr/lib/systemd/system/ + install -Dm 644 jellyfin.sysusers "$pkgdir"/usr/lib/sysusers.d/jellyfin.conf + install -Dm 644 jellyfin.tmpfiles "$pkgdir"/usr/lib/tmpfiles.d/jellyfin.conf + install -Dm 644 jellyfin.conf "$pkgdir"/etc/conf.d/jellyfin +} + +package_jellyfin-web() { + pkgdesc="Jellyfin web client" + + mkdir -p "$pkgdir"/usr/lib/jellyfin + cp -r jellyfin-web-10.8.0-alpha5/dist "$pkgdir"/usr/lib/jellyfin/jellyfin-web +} + +# vim: ts=2 sw=2 et: diff --git a/jellyfin/jellyfin.conf b/jellyfin/jellyfin.conf new file mode 100644 index 0000000..c659bac --- /dev/null +++ b/jellyfin/jellyfin.conf @@ -0,0 +1,6 @@ +# Data directory +JELLYFIN_DATA_DIRECTORY="/var/lib/jellyfin" +# Cache directory +JELLYFIN_CACHE_DIRECTORY="/var/cache/jellyfin" +# Additional options for the binary +JELLYFIN_ADD_OPTS="" diff --git a/jellyfin/jellyfin.service b/jellyfin/jellyfin.service new file mode 100644 index 0000000..cd1626b --- /dev/null +++ b/jellyfin/jellyfin.service @@ -0,0 +1,13 @@ +[Unit] +Description=Jellyfin Media Server +After=network.target + +[Service] +User=jellyfin +EnvironmentFile=/etc/conf.d/jellyfin +ExecStart=/usr/bin/dotnet /usr/lib/jellyfin/jellyfin.dll --datadir ${JELLYFIN_DATA_DIRECTORY} --cachedir ${JELLYFIN_CACHE_DIRECTORY} ${JELLYFIN_ADD_OPTS} +Restart=on-abort +TimeoutSec=20 + +[Install] +WantedBy=multi-user.target diff --git a/jellyfin/jellyfin.sysusers b/jellyfin/jellyfin.sysusers new file mode 100644 index 0000000..41c3491 --- /dev/null +++ b/jellyfin/jellyfin.sysusers @@ -0,0 +1 @@ +u jellyfin - "Jellyfin Media Server" /var/lib/jellyfin diff --git a/jellyfin/jellyfin.tmpfiles b/jellyfin/jellyfin.tmpfiles new file mode 100644 index 0000000..fd1efe2 --- /dev/null +++ b/jellyfin/jellyfin.tmpfiles @@ -0,0 +1,2 @@ +d /var/cache/jellyfin 0755 jellyfin jellyfin - +d /var/lib/jellyfin 0755 jellyfin jellyfin -