Merge pull request #7614 from mihawk90/fedora-spec-rework
(cherry picked from commit cb6e6879e27d7fadc788295f0524d69b3a42c02c) Signed-off-by: Joshua Boniface <joshua@boniface.me>
This commit is contained in:
parent
f13cd26d67
commit
1ee1a05fc7
|
@ -1,4 +1,4 @@
|
|||
FROM fedora:33
|
||||
FROM fedora:36
|
||||
# Docker build arguments
|
||||
ARG SOURCE_DIR=/jellyfin
|
||||
ARG ARTIFACT_DIR=/dist
|
||||
|
@ -9,7 +9,7 @@ ENV IS_DOCKER=YES
|
|||
|
||||
# Prepare Fedora environment
|
||||
RUN dnf update -yq \
|
||||
&& dnf install -yq @buildsys-build rpmdevtools git dnf-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel systemd wget
|
||||
&& dnf install -yq @buildsys-build rpmdevtools git dnf-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel systemd wget make
|
||||
|
||||
# Install DotNET SDK
|
||||
RUN wget -q https://download.visualstudio.microsoft.com/download/pr/dc930bff-ef3d-4f6f-8799-6eb60390f5b4/1efee2a8ea0180c94aff8f15eb3af981/dotnet-sdk-6.0.300-linux-x64.tar.gz -O dotnet-sdk.tar.gz \
|
||||
|
|
|
@ -7,14 +7,13 @@ SRPM := jellyfin-$(subst -,~,$(VERSION))-$(RELEASE)$(shell rpm --eval %dist).
|
|||
TARBALL :=$(NAME)-$(subst -,~,$(VERSION)).tar.gz
|
||||
|
||||
epel-7-x86_64_repos := https://packages.microsoft.com/rhel/7/prod/
|
||||
epel-8-x86_64_repos := https://download.copr.fedorainfracloud.org/results/@dotnet-sig/dotnet-preview/$(TARGET)/
|
||||
fedora_repos := https://download.copr.fedorainfracloud.org/results/@dotnet-sig/dotnet-preview/$(TARGET)/
|
||||
fedora-34-x86_64_repos := $(fedora_repos)
|
||||
fedora-35-x86_64_repos := $(fedora_repos)
|
||||
fedora-34-x86_64_repos := $(fedora_repos)
|
||||
|
||||
fed_ver := $(shell rpm -E %fedora)
|
||||
# fallback when not running on Fedora
|
||||
fed_ver ?= 36
|
||||
TARGET ?= fedora-$(fed_ver)-x86_64
|
||||
|
||||
outdir ?= $(PWD)/$(DIR)/
|
||||
TARGET ?= fedora-35-x86_64
|
||||
|
||||
srpm: $(DIR)/$(SRPM)
|
||||
tarball: $(DIR)/$(TARBALL)
|
||||
|
|
|
@ -21,7 +21,7 @@ JELLYFIN_LOG_DIR="/var/log/jellyfin"
|
|||
JELLYFIN_CACHE_DIR="/var/cache/jellyfin"
|
||||
|
||||
# web client path, installed by the jellyfin-web package
|
||||
JELLYFIN_WEB_OPT="--webdir=/usr/share/jellyfin-web"
|
||||
# JELLYFIN_WEB_OPT="--webdir=/usr/share/jellyfin-web"
|
||||
|
||||
# In-App service control
|
||||
JELLYFIN_RESTART_OPT="--restartpath=/usr/libexec/jellyfin/restart.sh"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
%global debug_package %{nil}
|
||||
# Set the dotnet runtime
|
||||
%if 0%{?fedora}
|
||||
%global dotnet_runtime fedora-x64
|
||||
%global dotnet_runtime fedora.%{fedora}-x64
|
||||
%else
|
||||
%global dotnet_runtime centos-x64
|
||||
%endif
|
||||
|
@ -10,7 +10,7 @@ Name: jellyfin
|
|||
Version: 10.8.0
|
||||
Release: 1%{?dist}
|
||||
Summary: The Free Software Media System
|
||||
License: GPLv3
|
||||
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
|
||||
|
@ -25,13 +25,16 @@ Source17: 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 main repos
|
||||
# COPR @dotnet-sig/dotnet or
|
||||
# Requirements not packaged in RHEL 7 main repos, added via Makefile
|
||||
# https://packages.microsoft.com/rhel/7/prod/
|
||||
BuildRequires: dotnet-runtime-6.0, dotnet-sdk-6.0
|
||||
Requires: %{name}-server = %{version}-%{release}, %{name}-web = %{version}-%{release}
|
||||
# Disable Automatic Dependency Processing
|
||||
AutoReqProv: no
|
||||
|
||||
# Temporary (hopefully?) fix for https://github.com/jellyfin/jellyfin/issues/7471
|
||||
%if 0%{?fedora} >= 36
|
||||
%global __requires_exclude ^liblttng-ust\\.so\\.0.*$
|
||||
%endif
|
||||
|
||||
|
||||
%description
|
||||
Jellyfin is a free software media system that puts you in control of managing and streaming your media.
|
||||
|
@ -59,54 +62,74 @@ 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 %{dotnet_runtime} \
|
||||
"-p:DebugSymbols=false;DebugType=none" Jellyfin.Server
|
||||
|
||||
|
||||
%install
|
||||
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
dotnet publish --configuration Release --output='%{buildroot}%{_libdir}/jellyfin' --self-contained --runtime %{dotnet_runtime} \
|
||||
"-p:DebugSymbols=false;DebugType=none" Jellyfin.Server
|
||||
%{__install} -D -m 0644 LICENSE %{buildroot}%{_datadir}/licenses/jellyfin/LICENSE
|
||||
%{__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
|
||||
%{_datadir}/licenses/jellyfin/LICENSE
|
||||
%attr(-, jellyfin,jellyfin) %dir %{_var}/log/jellyfin
|
||||
|
||||
%license LICENSE
|
||||
|
||||
|
||||
%files server-lowports
|
||||
%{_unitdir}/jellyfin.service.d/jellyfin-server-lowports.conf
|
||||
|
|
Loading…
Reference in New Issue
Block a user