feat: add jellyfin packages
- building using spec files - add jellyfin-server 10.10.7 - add jellyfin-web 10.10.7 - add jellyfin-ffmpeg 7.1.1
This commit is contained in:
parent
715d859bb5
commit
d95158092e
1
rpms/jellyfin-ffmpeg-bin/7.1.1/release
Normal file
1
rpms/jellyfin-ffmpeg-bin/7.1.1/release
Normal file
@ -0,0 +1 @@
|
||||
3
|
||||
23
rpms/jellyfin-ffmpeg-bin/Dockerfile
Normal file
23
rpms/jellyfin-ffmpeg-bin/Dockerfile
Normal file
@ -0,0 +1,23 @@
|
||||
# Start with the AlmaLinux 8.10 base image
|
||||
FROM git.query.consul/unkin/almalinux8-rpmbuilder:latest
|
||||
|
||||
# Create output directory for RPMs
|
||||
RUN mkdir -p /app/dist
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /app
|
||||
|
||||
ARG PACKAGE_RELEASE
|
||||
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
|
||||
ARG PACKAGE_VERSION
|
||||
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
|
||||
|
||||
# Copy resources from the context into the container
|
||||
COPY resources /app/resources
|
||||
|
||||
# Download the required files
|
||||
RUN mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} && \
|
||||
spectool -g -R /app/resources/jellyfin-ffmpeg-bin_${PACKAGE_VERSION}.spec && \
|
||||
rpmbuild -ba /app/resources/jellyfin-ffmpeg-bin_${PACKAGE_VERSION}.spec && \
|
||||
cp /root/rpmbuild/RPMS/x86_64/jellyfin-ffmpeg-bin-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.*.rpm /app/dist/ && \
|
||||
cp /root/rpmbuild/SRPMS/jellyfin-ffmpeg-bin-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.*.rpm /app/dist
|
||||
@ -0,0 +1,65 @@
|
||||
%global debug_package %{nil}
|
||||
%define _missing_build_ids_terminate_build 0
|
||||
%global jellyfin_release 3
|
||||
|
||||
|
||||
Name: jellyfin-ffmpeg-bin
|
||||
Version: 7.1.1
|
||||
Release: %{jellyfin_release}%{?dist}
|
||||
Summary: FFmpeg for Jellyfin with custom extensions and enhancements
|
||||
|
||||
|
||||
License: GPL-3.0-only
|
||||
URL: https://github.com/jellyfin/jellyfin-ffmpeg
|
||||
Source0: https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v%{version}-%{jellyfin_release}/jellyfin-ffmpeg_%{version}-%{jellyfin_release}_portable_linux64-gpl.tar.xz
|
||||
Source1: https://github.com/jellyfin/jellyfin-ffmpeg/releases/download/v%{version}-%{jellyfin_release}/jellyfin-ffmpeg_%{version}-%{jellyfin_release}_portable_linuxarm64-gpl.tar.xz
|
||||
Source2: https://raw.githubusercontent.com/jellyfin/jellyfin-ffmpeg/v%{version}-%{jellyfin_release}/LICENSE.md
|
||||
Source3: https://raw.githubusercontent.com/jellyfin/jellyfin-ffmpeg/v%{version}-%{jellyfin_release}/README.md
|
||||
|
||||
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
|
||||
Requires: glibc >= 2.23
|
||||
|
||||
|
||||
Recommends: intel-media-driver
|
||||
Recommends: intel-mediasdk
|
||||
Recommends: oneVPL-intel-gpu
|
||||
Recommends: intel-compute-runtime
|
||||
Recommends: libva-intel-driver
|
||||
Recommends: mesa-va-drivers
|
||||
Recommends: rocm-opencl
|
||||
Recommends: mesa-vulkan-drivers
|
||||
|
||||
|
||||
Conflicts: jellyfin-ffmpeg
|
||||
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
|
||||
%prep
|
||||
|
||||
%ifarch x86_64
|
||||
%setup -c -b 0
|
||||
%endif
|
||||
|
||||
%ifarch aarch64
|
||||
%setup -c -b 1
|
||||
%endif
|
||||
|
||||
cp %{SOURCE2} "%{_builddir}/%{name}-%{version}/"
|
||||
cp %{SOURCE3} "%{_builddir}/%{name}-%{version}/"
|
||||
|
||||
|
||||
%install
|
||||
install -D --mode=755 ffmpeg "%{buildroot}%{_exec_prefix}/lib/jellyfin-ffmpeg/ffmpeg"
|
||||
install -D --mode=755 ffprobe "%{buildroot}%{_exec_prefix}/lib/jellyfin-ffmpeg/ffprobe"
|
||||
|
||||
|
||||
%files
|
||||
%license LICENSE.md
|
||||
%doc README.md
|
||||
%{_exec_prefix}/lib/jellyfin-ffmpeg/ffmpeg
|
||||
%{_exec_prefix}/lib/jellyfin-ffmpeg/ffprobe
|
||||
1
rpms/jellyfin-server/10.10.7/release
Normal file
1
rpms/jellyfin-server/10.10.7/release
Normal file
@ -0,0 +1 @@
|
||||
1
|
||||
26
rpms/jellyfin-server/Dockerfile
Normal file
26
rpms/jellyfin-server/Dockerfile
Normal file
@ -0,0 +1,26 @@
|
||||
# Start with the AlmaLinux 8.10 base image
|
||||
FROM git.query.consul/unkin/almalinux8-rpmbuilder:latest
|
||||
|
||||
# Create output directory for RPMs
|
||||
RUN mkdir -p /app/dist
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /app
|
||||
|
||||
ARG PACKAGE_RELEASE
|
||||
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
|
||||
ARG PACKAGE_VERSION
|
||||
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
|
||||
|
||||
# Copy resources from the context into the container
|
||||
COPY resources /app/resources
|
||||
|
||||
# Download the required files
|
||||
RUN mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} && \
|
||||
dnf install dotnet-sdk-8.0 -y && \
|
||||
spectool -g -R /app/resources/jellyfin-server_${PACKAGE_VERSION}.spec && \
|
||||
cp /app/resources/fix-envfile-path.patch /root/rpmbuild/SOURCES/fix-envfile-path.patch && \
|
||||
cp /app/resources/tmpfiles.conf /root/rpmbuild/SOURCES/tmpfiles.conf && \
|
||||
rpmbuild -ba /app/resources/jellyfin-server_${PACKAGE_VERSION}.spec && \
|
||||
cp /root/rpmbuild/RPMS/x86_64/jellyfin-server-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.x86_64.rpm /app/dist/ && \
|
||||
cp /root/rpmbuild/SRPMS/jellyfin-server-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.src.rpm /app/dist/
|
||||
11
rpms/jellyfin-server/resources/fix-envfile-path.patch
Normal file
11
rpms/jellyfin-server/resources/fix-envfile-path.patch
Normal file
@ -0,0 +1,11 @@
|
||||
--- a/debian/conf/jellyfin.service
|
||||
+++ b/debian/conf/jellyfin.service
|
||||
@@ -4,7 +4,7 @@ After = network-online.target
|
||||
|
||||
[Service]
|
||||
Type = simple
|
||||
-EnvironmentFile = /etc/default/jellyfin
|
||||
+EnvironmentFile = /etc/jellyfin/jellyfin.env
|
||||
User = jellyfin
|
||||
Group = jellyfin
|
||||
WorkingDirectory = /var/lib/jellyfin
|
||||
127
rpms/jellyfin-server/resources/jellyfin-server_10.10.7.spec
Normal file
127
rpms/jellyfin-server/resources/jellyfin-server_10.10.7.spec
Normal file
@ -0,0 +1,127 @@
|
||||
%global debug_package %{nil}
|
||||
|
||||
%global jellyfin_version 10.10.7
|
||||
%global jellyfin_packaging_timestamp 202504051515
|
||||
%global jellyfin_packaging_version %{jellyfin_version}-%{jellyfin_packaging_timestamp}
|
||||
|
||||
%global dotnet_runtime %( \
|
||||
if [ "%{_arch}" = "x86_64" ]; then \
|
||||
echo -n "linux-x64"; \
|
||||
elif [ "%{_arch}" = "aarch64" ]; then \
|
||||
echo -n "linux-arm64"; \
|
||||
else \
|
||||
echo "Unsupported architecture: %{_arch}"; \
|
||||
exit 1; \
|
||||
fi \
|
||||
)
|
||||
|
||||
Name: jellyfin-server
|
||||
Version: %{jellyfin_version}
|
||||
Release: 1
|
||||
Summary: The Free Software Media System - Server Backend & API
|
||||
|
||||
|
||||
License: GPL-2.0-or-later
|
||||
URL: https://github.com/jellyfin/jellyfin
|
||||
Source0: https://github.com/jellyfin/jellyfin/archive/refs/tags/v%{version}.tar.gz
|
||||
Source1: https://github.com/jellyfin/jellyfin-packaging/archive/refs/tags/v%{jellyfin_packaging_version}.tar.gz
|
||||
Source2: tmpfiles.conf
|
||||
Patch0: fix-envfile-path.patch
|
||||
|
||||
|
||||
ExclusiveArch: x86_64 aarch64
|
||||
|
||||
|
||||
BuildRequires: dotnet-sdk-8.0
|
||||
BuildRequires: git
|
||||
BuildRequires: systemd-rpm-macros
|
||||
|
||||
|
||||
Requires: aspnetcore-runtime-8.0
|
||||
Requires: bash
|
||||
Requires: fontconfig
|
||||
Requires: jellyfin-ffmpeg-bin
|
||||
Requires: sqlite
|
||||
|
||||
|
||||
Recommends: jellyfin-web
|
||||
Recommends: google-noto-fonts-common
|
||||
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
|
||||
|
||||
%prep
|
||||
tar --extract --file="%{SOURCE1}" --directory="%{_builddir}"
|
||||
pushd %{_builddir}/jellyfin-packaging-%{jellyfin_packaging_version}
|
||||
patch -p1 -i "%{PATCH0}"
|
||||
popd
|
||||
%setup -q -n jellyfin-%{version}
|
||||
|
||||
|
||||
%build
|
||||
DOTNET_CLI_TELEMETRY_OPTOUT=1 \
|
||||
DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \
|
||||
DOTNET_NOLOGO=1 \
|
||||
dotnet \
|
||||
publish \
|
||||
Jellyfin.Server \
|
||||
--configuration Release \
|
||||
--output builddir \
|
||||
--self-contained false \
|
||||
--runtime %{dotnet_runtime} \
|
||||
-p:DebugSymbols=false \
|
||||
-p:DebugType=none
|
||||
|
||||
|
||||
%install
|
||||
install --directory "%{buildroot}%{_libdir}"
|
||||
cp --recursive builddir "%{buildroot}%{_libdir}/jellyfin"
|
||||
|
||||
install --directory "%{buildroot}%{_bindir}"
|
||||
ln --symbolic --force "%{_libdir}/jellyfin/jellyfin" "%{buildroot}%{_bindir}/jellyfin"
|
||||
|
||||
pushd %{_builddir}/jellyfin-packaging-%{jellyfin_packaging_version}/debian/conf
|
||||
install -D --mode=644 jellyfin.service "%{buildroot}%{_unitdir}/jellyfin.service"
|
||||
install -D --mode=640 jellyfin "%{buildroot}%{_sysconfdir}/jellyfin/jellyfin.env"
|
||||
popd
|
||||
|
||||
install -D --mode=0644 "%{SOURCE2}" "%{buildroot}%{_tmpfilesdir}/jellyfin.conf"
|
||||
|
||||
install --directory --mode=750 "%{buildroot}%{_localstatedir}/cache/jellyfin"
|
||||
install --directory --mode=750 "%{buildroot}%{_sharedstatedir}/jellyfin"
|
||||
find %{buildroot}
|
||||
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%{_bindir}/jellyfin
|
||||
%{_libdir}/jellyfin
|
||||
%{_tmpfilesdir}/jellyfin.conf
|
||||
%{_unitdir}/jellyfin.service
|
||||
%defattr(640,jellyfin,jellyfin,750)
|
||||
%dir %{_localstatedir}/cache/jellyfin
|
||||
%dir %{_sharedstatedir}/jellyfin
|
||||
%dir %{_sysconfdir}/jellyfin
|
||||
%config(noreplace) %{_sysconfdir}/jellyfin/jellyfin.env
|
||||
|
||||
|
||||
%pre
|
||||
getent group jellyfin > /dev/null || groupadd --system jellyfin
|
||||
getent passwd jellyfin > /dev/null || \
|
||||
useradd --system --home-dir "%{_sharedstatedir}/jellyfin" --gid jellyfin \
|
||||
-s /sbin/nologin -c "jellyfin daemon" jellyfin
|
||||
exit 0
|
||||
|
||||
|
||||
%post
|
||||
%systemd_post jellyfin.service
|
||||
|
||||
|
||||
%preun
|
||||
%systemd_preun jellyfin.service
|
||||
|
||||
|
||||
%postun
|
||||
%systemd_postun jellyfin.service
|
||||
1
rpms/jellyfin-server/resources/tmpfiles.conf
Normal file
1
rpms/jellyfin-server/resources/tmpfiles.conf
Normal file
@ -0,0 +1 @@
|
||||
d /var/log/jellyfin 0750 jellyfin jellyfin
|
||||
1
rpms/jellyfin-web/10.10.7/release
Normal file
1
rpms/jellyfin-web/10.10.7/release
Normal file
@ -0,0 +1 @@
|
||||
1
|
||||
25
rpms/jellyfin-web/Dockerfile
Normal file
25
rpms/jellyfin-web/Dockerfile
Normal file
@ -0,0 +1,25 @@
|
||||
# Start with the AlmaLinux 8.10 base image
|
||||
FROM git.query.consul/unkin/almalinux8-rpmbuilder:latest
|
||||
|
||||
# Create output directory for RPMs
|
||||
RUN mkdir -p /app/dist
|
||||
|
||||
# Set working directory
|
||||
WORKDIR /app
|
||||
|
||||
ARG PACKAGE_RELEASE
|
||||
ENV PACKAGE_RELEASE=${PACKAGE_RELEASE}
|
||||
ARG PACKAGE_VERSION
|
||||
ENV PACKAGE_VERSION=${PACKAGE_VERSION}
|
||||
|
||||
# Copy resources from the context into the container
|
||||
COPY resources /app/resources
|
||||
|
||||
# Download the required files
|
||||
RUN mkdir -p /root/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} && \
|
||||
dnf module enable nodejs:20 -y && \
|
||||
dnf install nodejs npm -y && \
|
||||
spectool -g -R /app/resources/jellyfin-web_${PACKAGE_VERSION}.spec && \
|
||||
rpmbuild -ba /app/resources/jellyfin-web_${PACKAGE_VERSION}.spec && \
|
||||
cp /root/rpmbuild/RPMS/noarch/jellyfin-web-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.noarch.rpm /app/dist/ && \
|
||||
cp /root/rpmbuild/SRPMS/jellyfin-web-${PACKAGE_VERSION}-${PACKAGE_RELEASE}.src.rpm /app/dist/
|
||||
43
rpms/jellyfin-web/resources/jellyfin-web_10.10.7.spec
Normal file
43
rpms/jellyfin-web/resources/jellyfin-web_10.10.7.spec
Normal file
@ -0,0 +1,43 @@
|
||||
%global jellyfin_version 10.10.7
|
||||
|
||||
|
||||
Name: jellyfin-web
|
||||
Version: %{jellyfin_version}
|
||||
Release: 1
|
||||
Summary: The Free Software Media System - Official Web Client
|
||||
|
||||
|
||||
License: GPL-2.0-or-later
|
||||
URL: https://github.com/jellyfin/jellyfin-web
|
||||
Source0: https://github.com/jellyfin/jellyfin-web/archive/refs/tags/v%{version}.tar.gz
|
||||
|
||||
|
||||
BuildArch: noarch
|
||||
|
||||
|
||||
BuildRequires: git
|
||||
BuildRequires: nodejs
|
||||
BuildRequires: npm
|
||||
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
|
||||
|
||||
%prep
|
||||
%setup -q -n jellyfin-web-%{version}
|
||||
|
||||
|
||||
%build
|
||||
SKIP_PREPARE=1 npm ci --no-audit --no-fund --no-update-notifier
|
||||
npm run build:production
|
||||
|
||||
|
||||
%install
|
||||
install --directory "%{buildroot}%{_datadir}/jellyfin/web"
|
||||
cp --recursive dist/* "%{buildroot}%{_datadir}/jellyfin/web"
|
||||
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%{_datadir}/jellyfin/web
|
||||
Loading…
Reference in New Issue
Block a user