rpmbuilder/rpms/jellyfin-server/resources/jellyfin-server_10.10.7.spec
Ben Vincent d95158092e
Some checks failed
Build / build-9 (pull_request) Failing after 3m20s
Build / build-8 (pull_request) Failing after 3m45s
feat: add jellyfin packages
- building using spec files
- add jellyfin-server 10.10.7
- add jellyfin-web 10.10.7
- add jellyfin-ffmpeg 7.1.1
2025-05-25 17:59:20 +10:00

128 lines
3.2 KiB
RPMSpec

%global debug_package %{nil}
%global jellyfin_version 10.10.7
%global jellyfin_packaging_timestamp 202504051515
%global jellyfin_packaging_version %{jellyfin_version}-%{jellyfin_packaging_timestamp}
%global dotnet_runtime %( \
if [ "%{_arch}" = "x86_64" ]; then \
echo -n "linux-x64"; \
elif [ "%{_arch}" = "aarch64" ]; then \
echo -n "linux-arm64"; \
else \
echo "Unsupported architecture: %{_arch}"; \
exit 1; \
fi \
)
Name: jellyfin-server
Version: %{jellyfin_version}
Release: 1
Summary: The Free Software Media System - Server Backend & API
License: GPL-2.0-or-later
URL: https://github.com/jellyfin/jellyfin
Source0: https://github.com/jellyfin/jellyfin/archive/refs/tags/v%{version}.tar.gz
Source1: https://github.com/jellyfin/jellyfin-packaging/archive/refs/tags/v%{jellyfin_packaging_version}.tar.gz
Source2: tmpfiles.conf
Patch0: fix-envfile-path.patch
ExclusiveArch: x86_64 aarch64
BuildRequires: dotnet-sdk-8.0
BuildRequires: git
BuildRequires: systemd-rpm-macros
Requires: aspnetcore-runtime-8.0
Requires: bash
Requires: fontconfig
Requires: jellyfin-ffmpeg-bin
Requires: sqlite
Recommends: jellyfin-web
Recommends: google-noto-fonts-common
%description
%{summary}.
%prep
tar --extract --file="%{SOURCE1}" --directory="%{_builddir}"
pushd %{_builddir}/jellyfin-packaging-%{jellyfin_packaging_version}
patch -p1 -i "%{PATCH0}"
popd
%setup -q -n jellyfin-%{version}
%build
DOTNET_CLI_TELEMETRY_OPTOUT=1 \
DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \
DOTNET_NOLOGO=1 \
dotnet \
publish \
Jellyfin.Server \
--configuration Release \
--output builddir \
--self-contained false \
--runtime %{dotnet_runtime} \
-p:DebugSymbols=false \
-p:DebugType=none
%install
install --directory "%{buildroot}%{_libdir}"
cp --recursive builddir "%{buildroot}%{_libdir}/jellyfin"
install --directory "%{buildroot}%{_bindir}"
ln --symbolic --force "%{_libdir}/jellyfin/jellyfin" "%{buildroot}%{_bindir}/jellyfin"
pushd %{_builddir}/jellyfin-packaging-%{jellyfin_packaging_version}/debian/conf
install -D --mode=644 jellyfin.service "%{buildroot}%{_unitdir}/jellyfin.service"
install -D --mode=640 jellyfin "%{buildroot}%{_sysconfdir}/jellyfin/jellyfin.env"
popd
install -D --mode=0644 "%{SOURCE2}" "%{buildroot}%{_tmpfilesdir}/jellyfin.conf"
install --directory --mode=750 "%{buildroot}%{_localstatedir}/cache/jellyfin"
install --directory --mode=750 "%{buildroot}%{_sharedstatedir}/jellyfin"
find %{buildroot}
%files
%license LICENSE
%{_bindir}/jellyfin
%{_libdir}/jellyfin
%{_tmpfilesdir}/jellyfin.conf
%{_unitdir}/jellyfin.service
%defattr(640,jellyfin,jellyfin,750)
%dir %{_localstatedir}/cache/jellyfin
%dir %{_sharedstatedir}/jellyfin
%dir %{_sysconfdir}/jellyfin
%config(noreplace) %{_sysconfdir}/jellyfin/jellyfin.env
%pre
getent group jellyfin > /dev/null || groupadd --system jellyfin
getent passwd jellyfin > /dev/null || \
useradd --system --home-dir "%{_sharedstatedir}/jellyfin" --gid jellyfin \
-s /sbin/nologin -c "jellyfin daemon" jellyfin
exit 0
%post
%systemd_post jellyfin.service
%preun
%systemd_preun jellyfin.service
%postun
%systemd_postun jellyfin.service