jellyfin.spec 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. %global debug_package %{nil}
  2. # Set the dotnet runtime
  3. %if 0%{?fedora}
  4. %global dotnet_runtime fedora.%{fedora}-x64
  5. %else
  6. %global dotnet_runtime centos-x64
  7. %endif
  8. Name: jellyfin
  9. Version: 10.8.12
  10. Release: 1%{?dist}
  11. Summary: The Free Software Media System
  12. License: GPLv2
  13. URL: https://jellyfin.org
  14. # Jellyfin Server tarball created by `make -f .copr/Makefile srpm`, real URL ends with `v%%{version}.tar.gz`
  15. Source0: jellyfin-server-%{version}.tar.gz
  16. Source11: jellyfin.service
  17. Source12: jellyfin.env
  18. Source13: jellyfin.sudoers
  19. Source14: restart.sh
  20. Source15: jellyfin.override.conf
  21. Source16: jellyfin-firewalld.xml
  22. Source17: jellyfin-server-lowports.conf
  23. %{?systemd_requires}
  24. BuildRequires: systemd
  25. BuildRequires: libcurl-devel, fontconfig-devel, freetype-devel, openssl-devel, glibc-devel, libicu-devel
  26. # Requirements not packaged in RHEL 7 main repos, added via Makefile
  27. # https://packages.microsoft.com/rhel/7/prod/
  28. BuildRequires: dotnet-runtime-6.0, dotnet-sdk-6.0
  29. Requires: %{name}-server = %{version}-%{release}, %{name}-web = %{version}-%{release}
  30. # Temporary (hopefully?) fix for https://github.com/jellyfin/jellyfin/issues/7471
  31. %if 0%{?fedora} >= 36
  32. %global __requires_exclude ^liblttng-ust\\.so\\.0.*$
  33. %endif
  34. %description
  35. Jellyfin is a free software media system that puts you in control of managing and streaming your media.
  36. %package server
  37. # RPMfusion free
  38. Summary: The Free Software Media System Server backend
  39. Requires(pre): shadow-utils
  40. Requires: ffmpeg
  41. Requires: libcurl, fontconfig, freetype, openssl, glibc, libicu, at, sudo
  42. %description server
  43. The Jellyfin media server backend.
  44. %package server-lowports
  45. # RPMfusion free
  46. Summary: The Free Software Media System Server backend. Low-port binding.
  47. Requires: jellyfin-server
  48. %description server-lowports
  49. The Jellyfin media server backend low port binding package. This package
  50. enables binding to ports < 1024. You would install this if you want
  51. the Jellyfin server to bind to ports 80 and/or 443 for example.
  52. %prep
  53. %autosetup -n jellyfin-server-%{version} -b 0
  54. %build
  55. export DOTNET_CLI_TELEMETRY_OPTOUT=1
  56. export PATH=$PATH:/usr/local/bin
  57. # cannot use --output due to https://github.com/dotnet/sdk/issues/22220
  58. dotnet publish --configuration Release --self-contained --runtime %{dotnet_runtime} \
  59. -p:DebugSymbols=false -p:DebugType=none Jellyfin.Server
  60. %install
  61. # Jellyfin files
  62. %{__mkdir} -p %{buildroot}%{_libdir}/jellyfin %{buildroot}%{_bindir}
  63. %{__cp} -r Jellyfin.Server/bin/Release/net6.0/%{dotnet_runtime}/publish/* %{buildroot}%{_libdir}/jellyfin
  64. ln -srf %{_libdir}/jellyfin/jellyfin %{buildroot}%{_bindir}/jellyfin
  65. %{__install} -D %{SOURCE14} %{buildroot}%{_libexecdir}/jellyfin/restart.sh
  66. # Jellyfin config
  67. %{__install} -D Jellyfin.Server/Resources/Configuration/logging.json %{buildroot}%{_sysconfdir}/jellyfin/logging.json
  68. %{__install} -D %{SOURCE12} %{buildroot}%{_sysconfdir}/sysconfig/jellyfin
  69. # system config
  70. %{__install} -D %{SOURCE16} %{buildroot}%{_prefix}/lib/firewalld/services/jellyfin.xml
  71. %{__install} -D %{SOURCE13} %{buildroot}%{_sysconfdir}/sudoers.d/jellyfin-sudoers
  72. %{__install} -D %{SOURCE15} %{buildroot}%{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf
  73. %{__install} -D %{SOURCE11} %{buildroot}%{_unitdir}/jellyfin.service
  74. # empty directories
  75. %{__mkdir} -p %{buildroot}%{_sharedstatedir}/jellyfin
  76. %{__mkdir} -p %{buildroot}%{_sysconfdir}/jellyfin
  77. %{__mkdir} -p %{buildroot}%{_var}/cache/jellyfin
  78. %{__mkdir} -p %{buildroot}%{_var}/log/jellyfin
  79. # jellyfin-server-lowports subpackage
  80. %{__install} -D -m 0644 %{SOURCE17} %{buildroot}%{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf
  81. %files
  82. # empty as this is just a meta-package
  83. %files server
  84. %defattr(644,root,root,755)
  85. # Jellyfin files
  86. %{_bindir}/jellyfin
  87. # Needs 755 else only root can run it since binary build by dotnet is 722
  88. %attr(755,root,root) %{_libdir}/jellyfin/createdump
  89. %attr(755,root,root) %{_libdir}/jellyfin/jellyfin
  90. %{_libdir}/jellyfin/*
  91. %attr(755,root,root) %{_libexecdir}/jellyfin/restart.sh
  92. # Jellyfin config
  93. %config(noreplace) %attr(644,jellyfin,jellyfin) %{_sysconfdir}/jellyfin/logging.json
  94. %config %{_sysconfdir}/sysconfig/jellyfin
  95. # system config
  96. %{_prefix}/lib/firewalld/services/jellyfin.xml
  97. %{_unitdir}/jellyfin.service
  98. %config(noreplace) %attr(600,root,root) %{_sysconfdir}/sudoers.d/jellyfin-sudoers
  99. %config(noreplace) %{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf
  100. # empty directories
  101. %attr(750,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin
  102. %attr(755,jellyfin,jellyfin) %dir %{_sysconfdir}/jellyfin
  103. %attr(750,jellyfin,jellyfin) %dir %{_var}/cache/jellyfin
  104. %attr(-, jellyfin,jellyfin) %dir %{_var}/log/jellyfin
  105. %license LICENSE
  106. %files server-lowports
  107. %{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf
  108. %pre server
  109. getent group jellyfin >/dev/null || groupadd -r jellyfin
  110. getent passwd jellyfin >/dev/null || \
  111. useradd -r -g jellyfin -d %{_sharedstatedir}/jellyfin -s /sbin/nologin \
  112. -c "Jellyfin default user" jellyfin
  113. # Add jellyfin to the render and video groups for hwa.
  114. [ ! -z "$(getent group render)" ] && usermod -aG render jellyfin >/dev/null 2>&1
  115. [ ! -z "$(getent group video)" ] && usermod -aG video jellyfin >/dev/null 2>&1
  116. exit 0
  117. %post server
  118. # Move existing configuration cache and logs to their new locations and symlink them.
  119. if [ $1 -gt 1 ] ; then
  120. service_state=$(systemctl is-active jellyfin.service)
  121. if [ "${service_state}" = "active" ]; then
  122. systemctl stop jellyfin.service
  123. fi
  124. if [ ! -L %{_sharedstatedir}/jellyfin/config ]; then
  125. mv %{_sharedstatedir}/jellyfin/config/* %{_sysconfdir}/jellyfin/
  126. rmdir %{_sharedstatedir}/jellyfin/config
  127. ln -sf %{_sysconfdir}/jellyfin %{_sharedstatedir}/jellyfin/config
  128. fi
  129. if [ ! -L %{_sharedstatedir}/jellyfin/logs ]; then
  130. mv %{_sharedstatedir}/jellyfin/logs/* %{_var}/log/jellyfin
  131. rmdir %{_sharedstatedir}/jellyfin/logs
  132. ln -sf %{_var}/log/jellyfin %{_sharedstatedir}/jellyfin/logs
  133. fi
  134. if [ ! -L %{_sharedstatedir}/jellyfin/cache ]; then
  135. mv %{_sharedstatedir}/jellyfin/cache/* %{_var}/cache/jellyfin
  136. rmdir %{_sharedstatedir}/jellyfin/cache
  137. ln -sf %{_var}/cache/jellyfin %{_sharedstatedir}/jellyfin/cache
  138. fi
  139. if [ "${service_state}" = "active" ]; then
  140. systemctl start jellyfin.service
  141. fi
  142. fi
  143. %systemd_post jellyfin.service
  144. %preun server
  145. %systemd_preun jellyfin.service
  146. %postun server
  147. %systemd_postun_with_restart jellyfin.service
  148. %changelog
  149. * Sat Nov 04 2023 Jellyfin Packaging Team <packaging@jellyfin.org>
  150. - New upstream version 10.8.12; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.12
  151. * Sat Sep 23 2023 Jellyfin Packaging Team <packaging@jellyfin.org>
  152. - New upstream version 10.8.11; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.11
  153. * Sun Apr 23 2023 Jellyfin Packaging Team <packaging@jellyfin.org>
  154. - New upstream version 10.8.10; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.10
  155. * Sun Jan 22 2023 Jellyfin Packaging Team <packaging@jellyfin.org>
  156. - New upstream version 10.8.9; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.9
  157. * Tue Nov 29 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  158. - New upstream version 10.8.8; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.8
  159. * Mon Oct 31 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  160. - New upstream version 10.8.7; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.7
  161. * Fri Oct 28 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  162. - New upstream version 10.8.6; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.6
  163. * Sat Sep 24 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  164. - New upstream version 10.8.5; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.5
  165. * Sat Aug 13 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  166. - New upstream version 10.8.4; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.4
  167. * Mon Aug 01 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  168. - New upstream version 10.8.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.3
  169. * Mon Aug 01 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  170. - New upstream version 10.8.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.2
  171. * Sun Jun 26 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  172. - New upstream version 10.8.1; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.1
  173. * Fri Jun 10 2022 Jellyfin Packaging Team <packaging@jellyfin.org>
  174. - New upstream version 10.8.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.8.0
  175. * Mon Nov 29 2021 Brian J. Murrell <brian@interlinx.bc.ca>
  176. - Add jellyfin-server-lowports.service drop-in in a server-lowports
  177. subpackage to allow binding to low ports
  178. * Fri Dec 04 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
  179. - Forthcoming stable release
  180. * Mon Jul 27 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
  181. - Forthcoming stable release
  182. * Mon Mar 23 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
  183. - Forthcoming stable release
  184. * Fri Oct 11 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  185. - New upstream version 10.5.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.5.0
  186. * Sat Aug 31 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  187. - New upstream version 10.4.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.4.0
  188. * Wed Jul 24 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  189. - New upstream version 10.3.7; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.7
  190. * Sat Jul 06 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  191. - New upstream version 10.3.6; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.6
  192. * Sun Jun 09 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  193. - New upstream version 10.3.5; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.5
  194. * Thu Jun 06 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  195. - New upstream version 10.3.4; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.4
  196. * Fri May 17 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  197. - New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3
  198. * Tue Apr 30 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  199. - New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
  200. * Sat Apr 20 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  201. - New upstream version 10.3.1; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.1
  202. * Fri Apr 19 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  203. - New upstream version 10.3.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.0