Browse Source

Further cleanup of Fedora spec-file

* Replaced shell script used to start JF with a symlink, since it didn't
  do anything else.
* Sorted installs by category/path to make it easier to maintain the
  spec.
* Defined `%defattr` in file section so we don't need to set it on a
  by-file level. This also helps with the messed up default file
  permissions `dotnet publish` produces.
* Removed some duplicate attribute definitions in `%install` and
  `%files` sections. They are now all in the `%install` section because
  of `%defattr` being specified and overriding them otherwise.
Tarulia 3 years ago
parent
commit
5912a49d1d
1 changed files with 41 additions and 25 deletions
  1. 41 25
      fedora/jellyfin.spec

+ 41 - 25
fedora/jellyfin.spec

@@ -62,6 +62,7 @@ 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
@@ -71,47 +72,62 @@ dotnet publish --configuration Release --self-contained --runtime %{dotnet_runti
 
 
 %install
-%{__mkdir} -p %{buildroot}%{_libdir}/%{name} %{buildroot}%{_bindir}
-%{__cp} -r Jellyfin.Server/bin/Release/net6.0/%{dotnet_runtime}/publish/* %{buildroot}%{_libdir}/%{name}
-
-%{__install} -D -m 0644 %{SOURCE15} %{buildroot}%{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf
-%{__install} -D -m 0644 %{SOURCE17} %{buildroot}%{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf
-%{__install} -D -m 0644 Jellyfin.Server/Resources/Configuration/logging.json %{buildroot}%{_sysconfdir}/jellyfin/logging.json
-%{__mkdir} -p %{buildroot}%{_bindir}
-tee %{buildroot}%{_bindir}/jellyfin << EOF
-#!/bin/sh
-exec %{_libdir}/jellyfin/jellyfin \${@}
-EOF
+# Jellyfin files
+%{__mkdir} -p %{buildroot}%{_libdir}/jellyfin %{buildroot}%{_bindir}
+%{__cp} -r Jellyfin.Server/bin/Release/net6.0/%{dotnet_runtime}/publish/* %{buildroot}%{_libdir}/jellyfin
+ln -srf %{_libdir}/jellyfin/jellyfin %{buildroot}%{_bindir}/jellyfin
+%{__install} -D %{SOURCE14} %{buildroot}%{_libexecdir}/jellyfin/restart.sh
+
+# 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 %{SOURCE16} %{buildroot}%{_prefix}/lib/firewalld/services/jellyfin.xml
+%{__install} -D %{SOURCE13} %{buildroot}%{_sysconfdir}/sudoers.d/jellyfin-sudoers
+%{__install} -D %{SOURCE15} %{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}/log/jellyfin
 %{__mkdir} -p %{buildroot}%{_var}/cache/jellyfin
+%{__mkdir} -p %{buildroot}%{_var}/log/jellyfin
+
+# jellyfin-server-lowports subpackage
+%{__install} -D -m 0644 %{SOURCE17} %{buildroot}%{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf
 
-%{__install} -D -m 0644 %{SOURCE11} %{buildroot}%{_unitdir}/jellyfin.service
-%{__install} -D -m 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/sysconfig/jellyfin
-%{__install} -D -m 0600 %{SOURCE13} %{buildroot}%{_sysconfdir}/sudoers.d/jellyfin-sudoers
-%{__install} -D -m 0755 %{SOURCE14} %{buildroot}%{_libexecdir}/jellyfin/restart.sh
-%{__install} -D -m 0644 %{SOURCE16} %{buildroot}%{_prefix}/lib/firewalld/services/jellyfin.xml
 
 %files
 # empty as this is just a meta-package
 
 %files server
-%attr(755,root,root) %{_bindir}/jellyfin
-%{_libdir}/jellyfin/*
+%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
-%{_unitdir}/jellyfin.service
-%{_libexecdir}/jellyfin/restart.sh
-%{_prefix}/lib/firewalld/services/jellyfin.xml
-%attr(755,jellyfin,jellyfin) %dir %{_sysconfdir}/jellyfin
+%{_libdir}/jellyfin/*
+%attr(755,root,root) %{_libexecdir}/jellyfin/restart.sh
+
+# 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) %attr(600,root,root) %{_sysconfdir}/sudoers.d/jellyfin-sudoers
 %config(noreplace) %{_sysconfdir}/systemd/system/jellyfin.service.d/override.conf
-%config(noreplace) %attr(644,jellyfin,jellyfin) %{_sysconfdir}/jellyfin/logging.json
+
+# empty directories
 %attr(750,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin
-%attr(-,jellyfin,jellyfin) %dir %{_var}/log/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