- building using spec files - add jellyfin-server 10.10.7 - add jellyfin-web 10.10.7 - add jellyfin-ffmpeg 7.1.1
128 lines
3.2 KiB
RPMSpec
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
|