123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- %global debug_package %{nil}
- Name: jellyfin
- Version: 10.9.0
- Release: 1%{?dist}
- Summary: The Free Software Media System
- License: GPLv2
- URL: https://jellyfin.org
- # Jellyfin Server tarball created by `make -f .copr/Makefile srpm`, real URL ends with `v%%{version}.tar.gz`
- Source0: jellyfin-server-%{version}.tar.gz
- Source10: jellyfin-selinux-launcher.sh
- Source11: jellyfin.service
- Source12: jellyfin.env
- Source13: jellyfin.override.conf
- Source14: jellyfin-firewalld.xml
- Source15: jellyfin-server-lowports.conf
- %{?systemd_requires}
- BuildRequires: systemd
- BuildRequires: libcurl-devel, fontconfig-devel, freetype-devel, openssl-devel, glibc-devel, libicu-devel
- # Requirements not packaged in RHEL 7 main repos, added via Makefile
- # https://packages.microsoft.com/rhel/7/prod/
- BuildRequires: dotnet-runtime-8.0, dotnet-sdk-8.0
- Requires: %{name}-server = %{version}-%{release}, %{name}-web = %{version}-%{release}
- %description
- Jellyfin is a free software media system that puts you in control of managing and streaming your media.
- %package server
- # RPMfusion free
- Summary: The Free Software Media System Server backend
- Requires(pre): shadow-utils
- Requires: ffmpeg
- Requires: libcurl, fontconfig, freetype, openssl, glibc, libicu
- %description server
- The Jellyfin media server backend.
- %package server-lowports
- # RPMfusion free
- Summary: The Free Software Media System Server backend. Low-port binding.
- Requires: jellyfin-server
- %description server-lowports
- The Jellyfin media server backend low port binding package. This package
- enables binding to ports < 1024. You would install this if you want
- the Jellyfin server to bind to ports 80 and/or 443 for example.
- %prep
- %autosetup -n jellyfin-server-%{version} -b 0
- %build
- export DOTNET_CLI_TELEMETRY_OPTOUT=1
- export PATH=$PATH:/usr/local/bin
- # cannot use --output due to https://github.com/dotnet/sdk/issues/22220
- dotnet publish --configuration Release --self-contained --runtime linux-x64 \
- -p:DebugSymbols=false -p:DebugType=none Jellyfin.Server
- %install
- # Jellyfin files
- %{__mkdir} -p %{buildroot}%{_libdir}/jellyfin %{buildroot}%{_bindir}
- %{__cp} -r Jellyfin.Server/bin/Release/net8.0/linux-x64/publish/* %{buildroot}%{_libdir}/jellyfin
- %{__install} -D %{SOURCE10} %{buildroot}%{_bindir}/jellyfin
- sed -i -e 's|/usr/lib64|%{_libdir}|g' %{buildroot}%{_bindir}/jellyfin
- # Jellyfin config
- %{__install} -D Jellyfin.Server/Resources/Configuration/logging.json %{buildroot}%{_sysconfdir}/jellyfin/logging.json
- %{__install} -D %{SOURCE12} %{buildroot}%{_sysconfdir}/sysconfig/jellyfin
- # system config
- %{__install} -D %{SOURCE14} %{buildroot}%{_prefix}/lib/firewalld/services/jellyfin.xml
- %{__install} -D %{SOURCE13} %{buildroot}%{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf
- %{__install} -D %{SOURCE11} %{buildroot}%{_unitdir}/jellyfin.service
- # empty directories
- %{__mkdir} -p %{buildroot}%{_sharedstatedir}/jellyfin
- %{__mkdir} -p %{buildroot}%{_sysconfdir}/jellyfin
- %{__mkdir} -p %{buildroot}%{_var}/cache/jellyfin
- %{__mkdir} -p %{buildroot}%{_var}/log/jellyfin
- # jellyfin-server-lowports subpackage
- %{__install} -D -m 0644 %{SOURCE15} %{buildroot}%{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf
- %files
- # empty as this is just a meta-package
- %files server
- %defattr(644,root,root,755)
- # Jellyfin files
- %{_bindir}/jellyfin
- # Needs 755 else only root can run it since binary build by dotnet is 722
- %attr(755,root,root) %{_libdir}/jellyfin/createdump
- %attr(755,root,root) %{_libdir}/jellyfin/jellyfin
- %{_libdir}/jellyfin/*
- %attr(755,root,root) %{_bindir}/jellyfin
- # Jellyfin config
- %config(noreplace) %attr(644,jellyfin,jellyfin) %{_sysconfdir}/jellyfin/logging.json
- %config %{_sysconfdir}/sysconfig/jellyfin
- # system config
- %{_prefix}/lib/firewalld/services/jellyfin.xml
- %{_unitdir}/jellyfin.service
- %config(noreplace) %{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf
- # empty directories
- %attr(750,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin
- %attr(755,jellyfin,jellyfin) %dir %{_sysconfdir}/jellyfin
- %attr(750,jellyfin,jellyfin) %dir %{_var}/cache/jellyfin
- %attr(-, jellyfin,jellyfin) %dir %{_var}/log/jellyfin
- %license LICENSE
- %files server-lowports
- %{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf
- %pre server
- getent group jellyfin >/dev/null || groupadd -r jellyfin
- getent passwd jellyfin >/dev/null || \
- useradd -r -g jellyfin -d %{_sharedstatedir}/jellyfin -s /sbin/nologin \
- -c "Jellyfin default user" jellyfin
- # Add jellyfin to the render and video groups for hwa.
- [ ! -z "$(getent group render)" ] && usermod -aG render jellyfin >/dev/null 2>&1
- [ ! -z "$(getent group video)" ] && usermod -aG video jellyfin >/dev/null 2>&1
- exit 0
- %post server
- # Move existing configuration cache and logs to their new locations and symlink them.
- if [ $1 -gt 1 ] ; then
- service_state=$(systemctl is-active jellyfin.service)
- if [ "${service_state}" = "active" ]; then
- systemctl stop jellyfin.service
- fi
- if [ ! -L %{_sharedstatedir}/jellyfin/config ]; then
- mv %{_sharedstatedir}/jellyfin/config/* %{_sysconfdir}/jellyfin/
- rmdir %{_sharedstatedir}/jellyfin/config
- ln -sf %{_sysconfdir}/jellyfin %{_sharedstatedir}/jellyfin/config
- fi
- if [ ! -L %{_sharedstatedir}/jellyfin/logs ]; then
- mv %{_sharedstatedir}/jellyfin/logs/* %{_var}/log/jellyfin
- rmdir %{_sharedstatedir}/jellyfin/logs
- ln -sf %{_var}/log/jellyfin %{_sharedstatedir}/jellyfin/logs
- fi
- if [ ! -L %{_sharedstatedir}/jellyfin/cache ]; then
- mv %{_sharedstatedir}/jellyfin/cache/* %{_var}/cache/jellyfin
- rmdir %{_sharedstatedir}/jellyfin/cache
- ln -sf %{_var}/cache/jellyfin %{_sharedstatedir}/jellyfin/cache
- fi
- if [ "${service_state}" = "active" ]; then
- systemctl start jellyfin.service
- fi
- fi
- %systemd_post jellyfin.service
- %preun server
- %systemd_preun jellyfin.service
- %postun server
- %systemd_postun_with_restart jellyfin.service
- %changelog
- * Wed Jul 13 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.9.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.9.0
- * Mon Nov 29 2021 Brian J. Murrell <brian@interlinx.bc.ca>
- - Add jellyfin-server-lowports.service drop-in in a server-lowports
- subpackage to allow binding to low ports
- * Fri Dec 04 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
- - Forthcoming stable release
- * Mon Jul 27 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
- - Forthcoming stable release
- * Mon Mar 23 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
- - Forthcoming stable release
- * Fri Oct 11 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.5.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.5.0
- * Sat Aug 31 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.4.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.4.0
- * Wed Jul 24 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.3.7; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.7
- * Sat Jul 06 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.3.6; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.6
- * Sun Jun 09 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.3.5; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.5
- * Thu Jun 06 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.3.4; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.4
- * Fri May 17 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3
- * Tue Apr 30 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
- * Sat Apr 20 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.3.1; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.1
- * Fri Apr 19 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
- - New upstream version 10.3.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.0
|