Simplifies a number of aspects of the RPM build, including moving .copr/Makefile into the "fedora/" folder (and leaving a symlink), removing the jellyfin-web build components, and renaming it jellyfin-server like Debian did.pull/2656/head
parent
eb632e4a0d
commit
6028bc0f79
@ -1,59 +0,0 @@
|
|||||||
VERSION := $(shell sed -ne '/^Version:/s/.* *//p' \
|
|
||||||
deployment/fedora-package-x64/pkg-src/jellyfin.spec)
|
|
||||||
|
|
||||||
deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz:
|
|
||||||
curl -f -L -o deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz \
|
|
||||||
https://github.com/jellyfin/jellyfin-web/archive/v$(VERSION).tar.gz \
|
|
||||||
|| curl -f -L -o deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz \
|
|
||||||
https://github.com/jellyfin/jellyfin-web/archive/master.tar.gz \
|
|
||||||
|
|
||||||
srpm: deployment/fedora-package-x64/pkg-src/jellyfin-web-$(VERSION).tar.gz
|
|
||||||
cd deployment/fedora-package-x64; \
|
|
||||||
SOURCE_DIR=../.. \
|
|
||||||
WORKDIR="$${PWD}"; \
|
|
||||||
package_temporary_dir="$${WORKDIR}/pkg-dist-tmp"; \
|
|
||||||
pkg_src_dir="$${WORKDIR}/pkg-src"; \
|
|
||||||
GNU_TAR=1; \
|
|
||||||
tar \
|
|
||||||
--transform "s,^\.,jellyfin-$(VERSION)," \
|
|
||||||
--exclude='.git*' \
|
|
||||||
--exclude='**/.git' \
|
|
||||||
--exclude='**/.hg' \
|
|
||||||
--exclude='**/.vs' \
|
|
||||||
--exclude='**/.vscode' \
|
|
||||||
--exclude='deployment' \
|
|
||||||
--exclude='**/bin' \
|
|
||||||
--exclude='**/obj' \
|
|
||||||
--exclude='**/.nuget' \
|
|
||||||
--exclude='*.deb' \
|
|
||||||
--exclude='*.rpm' \
|
|
||||||
-czf "pkg-src/jellyfin-$(VERSION).tar.gz" \
|
|
||||||
-C $${SOURCE_DIR} ./ || GNU_TAR=0; \
|
|
||||||
if [ $${GNU_TAR} -eq 0 ]; then \
|
|
||||||
package_temporary_dir="$$(mktemp -d)"; \
|
|
||||||
mkdir -p "$${package_temporary_dir}/jellyfin"; \
|
|
||||||
tar \
|
|
||||||
--exclude='.git*' \
|
|
||||||
--exclude='**/.git' \
|
|
||||||
--exclude='**/.hg' \
|
|
||||||
--exclude='**/.vs' \
|
|
||||||
--exclude='**/.vscode' \
|
|
||||||
--exclude='deployment' \
|
|
||||||
--exclude='**/bin' \
|
|
||||||
--exclude='**/obj' \
|
|
||||||
--exclude='**/.nuget' \
|
|
||||||
--exclude='*.deb' \
|
|
||||||
--exclude='*.rpm' \
|
|
||||||
-czf "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz" \
|
|
||||||
-C $${SOURCE_DIR} ./; \
|
|
||||||
mkdir -p "$${package_temporary_dir}/jellyfin-$(VERSION)"; \
|
|
||||||
tar -xzf "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz" \
|
|
||||||
-C "$${package_temporary_dir}/jellyfin-$(VERSION); \
|
|
||||||
rm -f "$${package_temporary_dir}/jellyfin/jellyfin-$(VERSION).tar.gz"; \
|
|
||||||
tar -czf "$${SOURCE_DIR}/SOURCES/pkg-src/jellyfin-$(VERSION).tar.gz" \
|
|
||||||
-C "$${package_temporary_dir}" "jellyfin-$(VERSION); \
|
|
||||||
rm -rf $${package_temporary_dir}; \
|
|
||||||
fi; \
|
|
||||||
rpmbuild -bs pkg-src/jellyfin.spec \
|
|
||||||
--define "_sourcedir $$PWD/pkg-src/" \
|
|
||||||
--define "_srcrpmdir $(outdir)"
|
|
@ -0,0 +1 @@
|
|||||||
|
../fedora/Makefile
|
@ -0,0 +1,32 @@
|
|||||||
|
FROM centos:7
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV IS_DOCKER=YES
|
||||||
|
|
||||||
|
# Prepare CentOS environment
|
||||||
|
RUN yum update -y \
|
||||||
|
&& yum install -y epel-release \
|
||||||
|
&& yum install -y @buildsys-build rpmdevtools yum-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel git
|
||||||
|
|
||||||
|
# Install DotNET SDK
|
||||||
|
RUN rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm \
|
||||||
|
&& rpmdev-setuptree \
|
||||||
|
&& yum install -y dotnet-sdk-${SDK_VERSION}
|
||||||
|
|
||||||
|
# Create symlinks and directories
|
||||||
|
RUN ln -sf ${SOURCE_DIR}/deployment/build.centos.amd64 /build.sh \
|
||||||
|
&& mkdir -p ${SOURCE_DIR}/SPECS \
|
||||||
|
&& ln -s ${SOURCE_DIR}/fedora/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \
|
||||||
|
&& mkdir -p ${SOURCE_DIR}/SOURCES \
|
||||||
|
&& ln -s ${SOURCE_DIR}/fedora ${SOURCE_DIR}/SOURCES
|
||||||
|
|
||||||
|
VOLUME ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/build.sh"]
|
@ -0,0 +1,33 @@
|
|||||||
|
FROM fedora:31
|
||||||
|
# Docker build arguments
|
||||||
|
ARG SOURCE_DIR=/jellyfin
|
||||||
|
ARG ARTIFACT_DIR=/dist
|
||||||
|
ARG SDK_VERSION=3.1
|
||||||
|
# Docker run environment
|
||||||
|
ENV SOURCE_DIR=/jellyfin
|
||||||
|
ENV ARTIFACT_DIR=/dist
|
||||||
|
ENV IS_DOCKER=YES
|
||||||
|
|
||||||
|
# Prepare Fedora environment
|
||||||
|
RUN dnf update -y
|
||||||
|
|
||||||
|
# Install build dependencies
|
||||||
|
RUN dnf install -y @buildsys-build rpmdevtools git dnf-plugins-core libcurl-devel fontconfig-devel freetype-devel openssl-devel glibc-devel libicu-devel
|
||||||
|
|
||||||
|
# Install DotNET SDK
|
||||||
|
RUN rpm --import https://packages.microsoft.com/keys/microsoft.asc \
|
||||||
|
&& curl -o /etc/yum.repos.d/microsoft-prod.repo https://packages.microsoft.com/config/fedora/$(rpm -E %fedora)/prod.repo \
|
||||||
|
&& dnf install -y dotnet-sdk-${SDK_VERSION} dotnet-runtime-${SDK_VERSION}
|
||||||
|
|
||||||
|
# Create symlinks and directories
|
||||||
|
RUN ln -sf ${SOURCE_DIR}/deployment/build.fedora.amd64 /build.sh \
|
||||||
|
&& mkdir -p ${SOURCE_DIR}/SPECS \
|
||||||
|
&& ln -s ${SOURCE_DIR}/fedora/jellyfin.spec ${SOURCE_DIR}/SPECS/jellyfin.spec \
|
||||||
|
&& mkdir -p ${SOURCE_DIR}/SOURCES \
|
||||||
|
&& ln -s ${SOURCE_DIR}/fedora ${SOURCE_DIR}/SOURCES
|
||||||
|
|
||||||
|
VOLUME ${SOURCE_DIR}/
|
||||||
|
|
||||||
|
VOLUME ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
ENTRYPOINT ["/build.sh"]
|
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#= CentOS/RHEL 7+ amd64 .rpm
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Build RPM
|
||||||
|
make -f fedora/Makefile srpm outdir=/root/rpmbuild/SRPMS
|
||||||
|
rpmbuild --rebuild -bb /root/rpmbuild/SRPMS/jellyfin-*.src.rpm
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
if [[ ${IS_DOCKER} == YES ]]; then
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f fedora/jellyfin*.tar.gz
|
||||||
|
|
||||||
|
popd
|
@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#= Fedora 29+ amd64 .rpm
|
||||||
|
|
||||||
|
set -o errexit
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# Move to source directory
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
|
||||||
|
# Build RPM
|
||||||
|
make -f fedora/Makefile srpm outdir=/root/rpmbuild/SRPMS
|
||||||
|
rpmbuild -rb /root/rpmbuild/SRPMS/jellyfin-*.src.rpm
|
||||||
|
|
||||||
|
# Move the artifacts out
|
||||||
|
mv /root/rpmbuild/RPMS/x86_64/jellyfin-*.rpm /root/rpmbuild/SRPMS/jellyfin-*.src.rpm ${ARTIFACT_DIR}/
|
||||||
|
|
||||||
|
if [[ ${IS_DOCKER} == YES ]]; then
|
||||||
|
chown -Rc $(stat -c %u:%g ${ARTIFACT_DIR}) ${ARTIFACT_DIR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -f fedora/jellyfin*.tar.gz
|
||||||
|
|
||||||
|
popd
|
@ -0,0 +1,3 @@
|
|||||||
|
*.rpm
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
@ -0,0 +1,29 @@
|
|||||||
|
VERSION := $(shell sed -ne '/^Version:/s/.* *//p' fedora/jellyfin.spec)
|
||||||
|
|
||||||
|
srpm:
|
||||||
|
cd fedora/; \
|
||||||
|
SOURCE_DIR=.. \
|
||||||
|
WORKDIR="$${PWD}"; \
|
||||||
|
package_temporary_dir="$${WORKDIR}/pkg-dist-tmp"; \
|
||||||
|
pkg_src_dir="$${WORKDIR}"; \
|
||||||
|
GNU_TAR=1; \
|
||||||
|
tar \
|
||||||
|
--transform "s,^\.,jellyfin-server-$(VERSION)," \
|
||||||
|
--exclude='.git*' \
|
||||||
|
--exclude='**/.git' \
|
||||||
|
--exclude='**/.hg' \
|
||||||
|
--exclude='**/.vs' \
|
||||||
|
--exclude='**/.vscode' \
|
||||||
|
--exclude='deployment' \
|
||||||
|
--exclude='**/bin' \
|
||||||
|
--exclude='**/obj' \
|
||||||
|
--exclude='**/.nuget' \
|
||||||
|
--exclude='*.deb' \
|
||||||
|
--exclude='*.rpm' \
|
||||||
|
--exclude='jellyfin-server-$(VERSION).tar.gz' \
|
||||||
|
-czf "jellyfin-server-$(VERSION).tar.gz" \
|
||||||
|
-C $${SOURCE_DIR} ./
|
||||||
|
cd fedora/; \
|
||||||
|
rpmbuild -bs jellyfin.spec \
|
||||||
|
--define "_sourcedir $$PWD/" \
|
||||||
|
--define "_srcrpmdir $(outdir)"
|
@ -0,0 +1,43 @@
|
|||||||
|
# Jellyfin RPM
|
||||||
|
|
||||||
|
## Build Fedora Package with docker
|
||||||
|
|
||||||
|
Change into this directory `cd rpm-package`
|
||||||
|
Run the build script `./build-fedora-rpm.sh`.
|
||||||
|
Resulting RPM and src.rpm will be in `../../jellyfin-*.rpm`
|
||||||
|
|
||||||
|
## ffmpeg
|
||||||
|
|
||||||
|
The RPM package for Fedora/CentOS requires some additional repositories as ffmpeg is not in the main repositories.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# ffmpeg from RPMfusion free
|
||||||
|
# Fedora
|
||||||
|
$ sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
|
||||||
|
# CentOS 7
|
||||||
|
$ sudo yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
|
||||||
|
```
|
||||||
|
|
||||||
|
## ISO mounting
|
||||||
|
|
||||||
|
To allow Jellyfin to mount/umount ISO files uncomment these two lines in `/etc/sudoers.d/jellyfin-sudoers`
|
||||||
|
```
|
||||||
|
# %jellyfin ALL=(ALL) NOPASSWD: /bin/mount
|
||||||
|
# %jellyfin ALL=(ALL) NOPASSWD: /bin/umount
|
||||||
|
```
|
||||||
|
|
||||||
|
## Building with dotnet
|
||||||
|
|
||||||
|
Jellyfin is build with `--self-contained` so no dotnet required for runtime.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# dotnet required for building the RPM
|
||||||
|
# Fedora
|
||||||
|
$ sudo dnf copr enable @dotnet-sig/dotnet
|
||||||
|
# CentOS
|
||||||
|
$ sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
|
||||||
|
```
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
- [ ] OpenSUSE
|
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<service>
|
||||||
|
<short>Jellyfin</short>
|
||||||
|
<description>The Free Software Media System.</description>
|
||||||
|
<port protocol="tcp" port="8096"/>
|
||||||
|
<port protocol="tcp" port="8920"/>
|
||||||
|
<port protocol="udp" port="1900"/>
|
||||||
|
<port protocol="udp" port="7359"/>
|
||||||
|
</service>
|
@ -0,0 +1,34 @@
|
|||||||
|
# Jellyfin default configuration options
|
||||||
|
|
||||||
|
# Use this file to override the default configurations; add additional
|
||||||
|
# options with JELLYFIN_ADD_OPTS.
|
||||||
|
|
||||||
|
# To override the user or this config file's location, use
|
||||||
|
# /etc/systemd/system/jellyfin.service.d/override.conf
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is a POSIX shell fragment
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# General options
|
||||||
|
#
|
||||||
|
|
||||||
|
# Program directories
|
||||||
|
JELLYFIN_DATA_DIR="/var/lib/jellyfin"
|
||||||
|
JELLYFIN_CONFIG_DIR="/etc/jellyfin"
|
||||||
|
JELLYFIN_LOG_DIR="/var/log/jellyfin"
|
||||||
|
JELLYFIN_CACHE_DIR="/var/cache/jellyfin"
|
||||||
|
|
||||||
|
# In-App service control
|
||||||
|
JELLYFIN_RESTART_OPT="--restartpath=/usr/libexec/jellyfin/restart.sh"
|
||||||
|
|
||||||
|
# [OPTIONAL] ffmpeg binary paths, overriding the UI-configured values
|
||||||
|
#JELLYFIN_FFMPEG_OPT="--ffmpeg=/usr/bin/ffmpeg"
|
||||||
|
|
||||||
|
# [OPTIONAL] run Jellyfin as a headless service
|
||||||
|
#JELLYFIN_SERVICE_OPT="--service"
|
||||||
|
|
||||||
|
# [OPTIONAL] run Jellyfin without the web app
|
||||||
|
#JELLYFIN_NOWEBAPP_OPT="--noautorunwebapp"
|
||||||
|
|
@ -0,0 +1,7 @@
|
|||||||
|
# Jellyfin systemd configuration options
|
||||||
|
|
||||||
|
# Use this file to override the user or environment file location.
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
#User = jellyfin
|
||||||
|
#EnvironmentFile = /etc/sysconfig/jellyfin
|
@ -0,0 +1,15 @@
|
|||||||
|
[Unit]
|
||||||
|
After=network.target
|
||||||
|
Description=Jellyfin is a free software media system that puts you in control of managing and streaming your media.
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
EnvironmentFile=/etc/sysconfig/jellyfin
|
||||||
|
WorkingDirectory=/var/lib/jellyfin
|
||||||
|
ExecStart=/usr/bin/jellyfin ${JELLYFIN_RESTART_OPT} ${JELLYFIN_FFMPEG_OPT} ${JELLYFIN_SERVICE_OPT} ${JELLYFIN_NOWEBAPP_OPT}
|
||||||
|
TimeoutSec=15
|
||||||
|
Restart=on-failure
|
||||||
|
User=jellyfin
|
||||||
|
Group=jellyfin
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
@ -0,0 +1,158 @@
|
|||||||
|
%global debug_package %{nil}
|
||||||
|
# Set the dotnet runtime
|
||||||
|
%if 0%{?fedora}
|
||||||
|
%global dotnet_runtime fedora-x64
|
||||||
|
%else
|
||||||
|
%global dotnet_runtime centos-x64
|
||||||
|
%endif
|
||||||
|
|
||||||
|
Name: jellyfin-server
|
||||||
|
Version: 10.6.0
|
||||||
|
Release: 1%{?dist}
|
||||||
|
Summary: The Free Software Media Browser
|
||||||
|
License: GPLv2
|
||||||
|
URL: https://jellyfin.media
|
||||||
|
# Jellyfin Server tarball created by `make -f .copr/Makefile srpm`, real URL ends with `v%{version}.tar.gz`
|
||||||
|
Source0: jellyfin-server-%{version}.tar.gz
|
||||||
|
Source11: jellyfin.service
|
||||||
|
Source12: jellyfin.env
|
||||||
|
Source13: jellyfin.sudoers
|
||||||
|
Source14: restart.sh
|
||||||
|
Source15: jellyfin.override.conf
|
||||||
|
Source16: jellyfin-firewalld.xml
|
||||||
|
|
||||||
|
%{?systemd_requires}
|
||||||
|
BuildRequires: systemd
|
||||||
|
Requires(pre): shadow-utils
|
||||||
|
BuildRequires: libcurl-devel, fontconfig-devel, freetype-devel, openssl-devel, glibc-devel, libicu-devel
|
||||||
|
Requires: libcurl, fontconfig, freetype, openssl, glibc libicu
|
||||||
|
# Requirements not packaged in main repos
|
||||||
|
# COPR @dotnet-sig/dotnet or
|
||||||
|
# https://packages.microsoft.com/rhel/7/prod/
|
||||||
|
BuildRequires: dotnet-runtime-3.1, dotnet-sdk-3.1
|
||||||
|
# RPMfusion free
|
||||||
|
Requires: ffmpeg
|
||||||
|
|
||||||
|
# Disable Automatic Dependency Processing
|
||||||
|
AutoReqProv: no
|
||||||
|
|
||||||
|
%description
|
||||||
|
Jellyfin is a free software media system that puts you in control of managing and streaming your media.
|
||||||
|
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -n jellyfin-server-%{version} -b 0
|
||||||
|
|
||||||
|
%build
|
||||||
|
|
||||||
|
%install
|
||||||
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||||
|
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
|
||||||
|
dotnet publish --configuration Release --output='%{buildroot}%{_libdir}/jellyfin' --self-contained --runtime %{dotnet_runtime} \
|
||||||
|
"-p:GenerateDocumentationFile=false;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 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
|
||||||
|
%{__mkdir} -p %{buildroot}%{_sharedstatedir}/jellyfin
|
||||||
|
%{__mkdir} -p %{buildroot}%{_sysconfdir}/jellyfin
|
||||||
|
%{__mkdir} -p %{buildroot}%{_var}/log/jellyfin
|
||||||
|
%{__mkdir} -p %{buildroot}%{_var}/cache/jellyfin
|
||||||
|
|
||||||
|
%{__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
|
||||||
|
%attr(755,root,root) %{_bindir}/jellyfin
|
||||||
|
%{_libdir}/jellyfin/*.json
|
||||||
|
%{_libdir}/jellyfin/*.dll
|
||||||
|
%{_libdir}/jellyfin/*.so
|
||||||
|
%{_libdir}/jellyfin/*.a
|
||||||
|
%{_libdir}/jellyfin/createdump
|
||||||
|
# Needs 755 else only root can run it since binary build by dotnet is 722
|
||||||
|
%attr(755,root,root) %{_libdir}/jellyfin/jellyfin
|
||||||
|
%{_libdir}/jellyfin/SOS_README.md
|
||||||
|
%{_unitdir}/jellyfin.service
|
||||||
|
%{_libexecdir}/jellyfin/restart.sh
|
||||||
|
%{_prefix}/lib/firewalld/services/jellyfin.xml
|
||||||
|
%attr(755,jellyfin,jellyfin) %dir %{_sysconfdir}/jellyfin
|
||||||
|
%config %{_sysconfdir}/sysconfig/jellyfin
|
||||||
|
%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
|
||||||
|
%attr(750,jellyfin,jellyfin) %dir %{_sharedstatedir}/jellyfin
|
||||||
|
%attr(-,jellyfin,jellyfin) %dir %{_var}/log/jellyfin
|
||||||
|
%attr(750,jellyfin,jellyfin) %dir %{_var}/cache/jellyfin
|
||||||
|
%{_datadir}/licenses/jellyfin/LICENSE
|
||||||
|
|
||||||
|
%pre
|
||||||
|
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
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
%post
|
||||||
|
# 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
|
||||||
|
%systemd_preun jellyfin.service
|
||||||
|
|
||||||
|
%postun
|
||||||
|
%systemd_postun_with_restart jellyfin.service
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* 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
|
@ -0,0 +1,19 @@
|
|||||||
|
# Allow jellyfin group to start, stop and restart itself
|
||||||
|
Cmnd_Alias RESTARTSERVER_SYSTEMD = /usr/bin/systemctl restart jellyfin, /bin/systemctl restart jellyfin
|
||||||
|
Cmnd_Alias STARTSERVER_SYSTEMD = /usr/bin/systemctl start jellyfin, /bin/systemctl start jellyfin
|
||||||
|
Cmnd_Alias STOPSERVER_SYSTEMD = /usr/bin/systemctl stop jellyfin, /bin/systemctl stop jellyfin
|
||||||
|
|
||||||
|
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: RESTARTSERVER_SYSTEMD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STARTSERVER_SYSTEMD
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: STOPSERVER_SYSTEMD
|
||||||
|
|
||||||
|
Defaults!RESTARTSERVER_SYSTEMD !requiretty
|
||||||
|
Defaults!STARTSERVER_SYSTEMD !requiretty
|
||||||
|
Defaults!STOPSERVER_SYSTEMD !requiretty
|
||||||
|
|
||||||
|
# Allow the server to mount iso images
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: /bin/mount
|
||||||
|
jellyfin ALL=(ALL) NOPASSWD: /bin/umount
|
||||||
|
|
||||||
|
Defaults:jellyfin !requiretty
|
@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# restart.sh - Jellyfin server restart script
|
||||||
|
# Part of the Jellyfin project (https://github.com/jellyfin)
|
||||||
|
#
|
||||||
|
# This script restarts the Jellyfin daemon on Linux when using
|
||||||
|
# the Restart button on the admin dashboard. It supports the
|
||||||
|
# systemctl, service, and traditional /etc/init.d (sysv) restart
|
||||||
|
# methods, chosen automatically by which one is found first (in
|
||||||
|
# that order).
|
||||||
|
#
|
||||||
|
# This script is used by the Debian/Ubuntu/Fedora/CentOS packages.
|
||||||
|
|
||||||
|
get_service_command() {
|
||||||
|
for command in systemctl service; do
|
||||||
|
if which $command &>/dev/null; then
|
||||||
|
echo $command && return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "sysv"
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd="$( get_service_command )"
|
||||||
|
echo "Detected service control platform '$cmd'; using it to restart Jellyfin..."
|
||||||
|
case $cmd in
|
||||||
|
'systemctl')
|
||||||
|
echo "sleep 2; /usr/bin/sudo $( which systemctl ) restart jellyfin" | at now
|
||||||
|
;;
|
||||||
|
'service')
|
||||||
|
echo "sleep 2; /usr/bin/sudo $( which service ) jellyfin restart" | at now
|
||||||
|
;;
|
||||||
|
'sysv')
|
||||||
|
echo "sleep 2; /usr/bin/sudo /etc/init.d/jellyfin restart" | at now
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
Loading…
Reference in new issue