jellyfin.spec 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. %global debug_package %{nil}
  2. # Set the dotnet runtime
  3. %if 0%{?fedora}
  4. %global dotnet_runtime fedora-x64
  5. %else
  6. %global dotnet_runtime centos-x64
  7. %endif
  8. Name: jellyfin
  9. Version: 10.7.0
  10. Release: 1%{?dist}
  11. Summary: The Free Software Media System
  12. License: GPLv3
  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. %{?systemd_requires}
  23. BuildRequires: systemd
  24. BuildRequires: libcurl-devel, fontconfig-devel, freetype-devel, openssl-devel, glibc-devel, libicu-devel
  25. # Requirements not packaged in main repos
  26. # COPR @dotnet-sig/dotnet or
  27. # https://packages.microsoft.com/rhel/7/prod/
  28. BuildRequires: dotnet-runtime-3.1, dotnet-sdk-3.1
  29. Requires: %{name}-server = %{version}-%{release}, %{name}-web >= 10.6, %{name}-web < 10.7
  30. # Disable Automatic Dependency Processing
  31. AutoReqProv: no
  32. %description
  33. Jellyfin is a free software media system that puts you in control of managing and streaming your media.
  34. %package server
  35. # RPMfusion free
  36. Summary: The Free Software Media System Server backend
  37. Requires(pre): shadow-utils
  38. Requires: ffmpeg
  39. Requires: libcurl, fontconfig, freetype, openssl, glibc libicu
  40. %description server
  41. The Jellyfin media server backend.
  42. %prep
  43. %autosetup -n jellyfin-server-%{version} -b 0
  44. %build
  45. %install
  46. export DOTNET_CLI_TELEMETRY_OPTOUT=1
  47. export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
  48. dotnet publish --configuration Release --output='%{buildroot}%{_libdir}/jellyfin' --self-contained --runtime %{dotnet_runtime} \
  49. "-p:DebugSymbols=false;DebugType=none" Jellyfin.Server
  50. %{__install} -D -m 0644 LICENSE %{buildroot}%{_datadir}/licenses/jellyfin/LICENSE
  51. %{__install} -D -m 0644 %{SOURCE15} %{buildroot}%{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf
  52. %{__install} -D -m 0644 Jellyfin.Server/Resources/Configuration/logging.json %{buildroot}%{_sysconfdir}/jellyfin/logging.json
  53. %{__mkdir} -p %{buildroot}%{_bindir}
  54. tee %{buildroot}%{_bindir}/jellyfin << EOF
  55. #!/bin/sh
  56. exec %{_libdir}/jellyfin/jellyfin \${@}
  57. EOF
  58. %{__mkdir} -p %{buildroot}%{_sharedstatedir}/jellyfin
  59. %{__mkdir} -p %{buildroot}%{_sysconfdir}/jellyfin
  60. %{__mkdir} -p %{buildroot}%{_var}/log/jellyfin
  61. %{__mkdir} -p %{buildroot}%{_var}/cache/jellyfin
  62. %{__install} -D -m 0644 %{SOURCE11} %{buildroot}%{_unitdir}/jellyfin.service
  63. %{__install} -D -m 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/sysconfig/jellyfin
  64. %{__install} -D -m 0600 %{SOURCE13} %{buildroot}%{_sysconfdir}/sudoers.d/jellyfin-sudoers
  65. %{__install} -D -m 0755 %{SOURCE14} %{buildroot}%{_libexecdir}/jellyfin/restart.sh
  66. %{__install} -D -m 0644 %{SOURCE16} %{buildroot}%{_prefix}/lib/firewalld/services/jellyfin.xml
  67. %files
  68. # empty as this is just a meta-package
  69. %files server
  70. %attr(755,root,root) %{_bindir}/jellyfin
  71. %{_libdir}/jellyfin/*.json
  72. %{_libdir}/jellyfin/*.dll
  73. %{_libdir}/jellyfin/*.so
  74. %{_libdir}/jellyfin/*.a
  75. %{_libdir}/jellyfin/createdump
  76. %{_libdir}/jellyfin/*.xml
  77. %{_libdir}/jellyfin/wwwroot/api-docs/*
  78. %{_libdir}/jellyfin/wwwroot/api-docs/redoc/*
  79. %{_libdir}/jellyfin/wwwroot/api-docs/swagger/*
  80. # Needs 755 else only root can run it since binary build by dotnet is 722
  81. %attr(755,root,root) %{_libdir}/jellyfin/jellyfin
  82. %{_libdir}/jellyfin/SOS_README.md
  83. %{_unitdir}/jellyfin.service
  84. %{_libexecdir}/jellyfin/restart.sh
  85. %{_prefix}/lib/firewalld/services/jellyfin.xml
  86. %attr(755,jellyfin,jellyfin) %dir %{_sysconfdir}/jellyfin
  87. %config %{_sysconfdir}/sysconfig/jellyfin
  88. %config(noreplace) %attr(600,root,root) %{_sysconfdir}/sudoers.d/jellyfin-sudoers
  89. %config(noreplace) %{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf
  90. %config(noreplace) %attr(644,jellyfin,jellyfin) %{_sysconfdir}/jellyfin/logging.json
  91. %attr(750,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin
  92. %attr(-,jellyfin,jellyfin) %dir %{_var}/log/jellyfin
  93. %attr(750,jellyfin,jellyfin) %dir %{_var}/cache/jellyfin
  94. %{_datadir}/licenses/jellyfin/LICENSE
  95. %pre server
  96. getent group jellyfin >/dev/null || groupadd -r jellyfin
  97. getent passwd jellyfin >/dev/null || \
  98. useradd -r -g jellyfin -d %{_sharedstatedir}/jellyfin -s /sbin/nologin \
  99. -c "Jellyfin default user" jellyfin
  100. exit 0
  101. %post server
  102. # Move existing configuration cache and logs to their new locations and symlink them.
  103. if [ $1 -gt 1 ] ; then
  104. service_state=$(systemctl is-active jellyfin.service)
  105. if [ "${service_state}" = "active" ]; then
  106. systemctl stop jellyfin.service
  107. fi
  108. if [ ! -L %{_sharedstatedir}/jellyfin/config ]; then
  109. mv %{_sharedstatedir}/jellyfin/config/* %{_sysconfdir}/jellyfin/
  110. rmdir %{_sharedstatedir}/jellyfin/config
  111. ln -sf %{_sysconfdir}/jellyfin %{_sharedstatedir}/jellyfin/config
  112. fi
  113. if [ ! -L %{_sharedstatedir}/jellyfin/logs ]; then
  114. mv %{_sharedstatedir}/jellyfin/logs/* %{_var}/log/jellyfin
  115. rmdir %{_sharedstatedir}/jellyfin/logs
  116. ln -sf %{_var}/log/jellyfin %{_sharedstatedir}/jellyfin/logs
  117. fi
  118. if [ ! -L %{_sharedstatedir}/jellyfin/cache ]; then
  119. mv %{_sharedstatedir}/jellyfin/cache/* %{_var}/cache/jellyfin
  120. rmdir %{_sharedstatedir}/jellyfin/cache
  121. ln -sf %{_var}/cache/jellyfin %{_sharedstatedir}/jellyfin/cache
  122. fi
  123. if [ "${service_state}" = "active" ]; then
  124. systemctl start jellyfin.service
  125. fi
  126. fi
  127. %systemd_post jellyfin.service
  128. %preun server
  129. %systemd_preun jellyfin.service
  130. %postun server
  131. %systemd_postun_with_restart jellyfin.service
  132. %changelog
  133. * Mon Jul 27 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
  134. - Forthcoming stable release
  135. * Mon Mar 23 2020 Jellyfin Packaging Team <packaging@jellyfin.org>
  136. - Forthcoming stable release
  137. * Fri Oct 11 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  138. - New upstream version 10.5.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.5.0
  139. * Sat Aug 31 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  140. - New upstream version 10.4.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.4.0
  141. * Wed Jul 24 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  142. - New upstream version 10.3.7; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.7
  143. * Sat Jul 06 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  144. - New upstream version 10.3.6; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.6
  145. * Sun Jun 09 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  146. - New upstream version 10.3.5; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.5
  147. * Thu Jun 06 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  148. - New upstream version 10.3.4; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.4
  149. * Fri May 17 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  150. - New upstream version 10.3.3; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.3
  151. * Tue Apr 30 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  152. - New upstream version 10.3.2; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.2
  153. * Sat Apr 20 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  154. - New upstream version 10.3.1; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.1
  155. * Fri Apr 19 2019 Jellyfin Packaging Team <packaging@jellyfin.org>
  156. - New upstream version 10.3.0; release changelog at https://github.com/jellyfin/jellyfin/releases/tag/v10.3.0