File radarr.spec of Package radarr
%ifarch aarch64
%define output_arch arm64
%else
%define output_arch x64
%endif
%define dotnet_runtime net6.0
%define artifacts_folder _output
Name: Radarr
Version: 5.26.2.10099
Release: 0%{?dist}
Summary: Movie organizer/manager for usenet and torrent users.
License: GPL-3.0
URL: https://radarr.video
Source0: https://github.com/Radarr/Radarr/archive/v%{version}/%{name}-%{version}.tar.gz
Source1: %{name}.service
Source2: %{name}-firewalld.xml
Source3: %{name}-nupkgs.tar.zst
Source4: %{name}-nupkgs2.tar.zst
Source5: %{name}-yarn.tar.zst
Source6: %{name}-yarn.lock
Source7: %{name}-packages.lock.json
%{?systemd_requires}
BuildRequires: dotnet-sdk-6.0
%if 0%{?suse_version}
BuildRequires: yarn
BuildRequires: nodejs18
BuildRequires: firewall-macros
BuildRequires: firewalld
%else
BuildRequires: nodejs
BuildRequires: yarnpkg
BuildRequires: firewalld-filesystem
%endif
BuildRequires: systemd-rpm-macros
Requires: servarr-user
Requires: dotnet-runtime-6.0
Requires: aspnetcore-runtime-6.0
Requires: %{name}-firewalld
%global __requires_exclude ^liblttng-ust.so.0
%global _build_id_links none
%description
Radarr is a movie collection manager for Usenet and BitTorrent users.
It can monitor multiple RSS feeds for new movies and will interface with
clients and indexers to grab, sort, and rename them.
It can also be configured to automatically upgrade the quality of existing
files in the library when a better quality format becomes available.
Smart PVR for newsgroup and bittorrent users.
%package firewalld
Summary: firewalld configuration for Radarr
%description firewalld
firewalld configuration for Radarr
%global debug_package %{nil}
%prep
%setup -q
tar xf %{SOURCE3}
tar xf %{SOURCE4}
tar xf %{SOURCE5}
cp %{SOURCE6} yarn.lock
cp %{SOURCE7} packages.lock.json
export DOTNET_VERSION=$(dotnet --list-sdks | grep 6.0 | awk '{print $1}' | tail -1)
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
%build
# Backend
dotnet msbuild -restore src/%{name}.sln -p:RestorePackagesWithLockFile=true -p:RestoreLockedMode=true -p:RestoreSources="$(pwd)/%{name}-nupkgs;$(pwd)/%{name}-nupkgs2" -p:Configuration=Release -p:Platform=Posix -p:RuntimeIdentifiers=linux-%{output_arch} -t:PublishAllRids
# Backend "packaging"
%define target_dir %{artifacts_folder}/%{dotnet_runtime}/linux-%{output_arch}
%define update_target_dir %{artifacts_folder}/Radarr.Update/%{dotnet_runtime}/linux-%{output_arch}
rm -f %{target_dir}/ServiceUninstall.*
rm -f %{target_dir}/ServiceInstall.*
rm %{target_dir}/%{name}.Windows.*
cp %{target_dir}/%{name}.Mono.* %{update_target_dir}
cp %{target_dir}/Mono.Posix.NETStandard.* %{update_target_dir}/%{name}.Update
cp %{target_dir}/libMonoPosixHelper.* %{update_target_dir}/%{name}.Update
# Frontend
#yarn config set yarn-offline-mirror "$(pwd)/%{name}-yarn"
yarn install --offline --cache-folder "$(pwd)/%{name}-yarn" --frozen-lockfile --network-timeout 120000
yarn run build --env production
%install
mkdir -p %{buildroot}%{_libdir}/%{name}
cp -ar _output/%{dotnet_runtime}/linux-%{output_arch}/* %{buildroot}%{_libdir}/%{name}
mkdir -p %{buildroot}%{_libdir}/%{name}/%{name}.Update
cp -ar _output/%{name}.Update/%{dotnet_runtime}/linux-%{output_arch}/* %{buildroot}%{_libdir}/%{name}/%{name}.Update
mkdir -p %{buildroot}%{_libdir}/%{name}/UI
cp -ar _output/UI/* %{buildroot}%{_libdir}/%{name}/UI
mkdir -p %{buildroot}%{_unitdir}
cp %{SOURCE1} %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_sharedstatedir}/%{name}
mkdir -p %{buildroot}%{_bindir}
tee %{buildroot}%{_bindir}/%{name} << EOF
#!/bin/sh
exec %{_libdir}/%{name}/%{name} \${@}
EOF
chmod +x %{buildroot}%{_bindir}/%{name}
# firewalld
install -p -m 644 -D %{SOURCE2} %{buildroot}%{_prefix}/lib/firewalld/services/%{name}.xml
%post
%systemd_post %{name}.service
%preun
%systemd_preun %{name}.service
%postun
%systemd_postun %{name}.service
%files
%{_bindir}/%{name}
%attr(755,servarr,servarr) %{_libdir}/%{name}
%{_unitdir}/%{name}.service
%attr(750,servarr,servarr) %dir %{_sharedstatedir}/%{name}
%files firewalld
%{_prefix}/lib/firewalld/services/%{name}.xml
%post firewalld
%firewalld_reload
%changelog