From 0b3978eb274408b3905643893788cff59ab8c6f3 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Sat, 25 Oct 2025 18:58:32 -0400 Subject: [PATCH] build(rpm): add OpenSUSE support (#4359) --- docs/getting_started.md | 27 ++++- .../linux/{fedora => copr}/Sunshine.spec | 103 +++++++++++++++--- 2 files changed, 109 insertions(+), 21 deletions(-) rename packaging/linux/{fedora => copr}/Sunshine.spec (82%) diff --git a/docs/getting_started.md b/docs/getting_started.md index 1aba10b0..0ffc38ae 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -65,10 +65,10 @@ CUDA is used for NVFBC capture. sunshine_{arch}.flatpak - Sunshine (copr - Fedora 41) + Sunshine (copr - Fedora) - Sunshine (copr - Fedora 42) + Sunshine (copr - OpenSUSE) sunshine.pkg.tar.zst @@ -150,6 +150,7 @@ pacman -R sunshine ``` #### Debian/Ubuntu + ##### Install Download `sunshine-{distro}-{distro-version}-{arch}.deb` and run the following command. ```bash @@ -168,12 +169,30 @@ sudo dpkg -i ./sunshine-{distro}-{distro-version}-{arch}.deb sudo apt remove sunshine ``` -#### Fedora +#### Fedora/OpenSUSE > [!TIP] > The package name is case-sensitive. -##### Install +##### Install (GitHub releases) +Download `Sunshine-{version}.{distro+version}.{arch}.rpm` and run the following command. +```bash +sudo dnf install ./Sunshine-{version}.{distro}.{arch}.rpm +``` + +> [!NOTE] +> The `{distro+version}` is the distro and distro version of the distro we built the package on. The `{arch}` is the +> architecture of your operating system. + +> [!TIP] +> You can double-click the rpm file to see details about the package and begin installation. + +##### Uninstall +```bash +sudo dnf remove sunshine +``` + +##### Install (Copr) 1. Enable copr repository. ```bash sudo dnf copr enable lizardbyte/stable diff --git a/packaging/linux/fedora/Sunshine.spec b/packaging/linux/copr/Sunshine.spec similarity index 82% rename from packaging/linux/fedora/Sunshine.spec rename to packaging/linux/copr/Sunshine.spec index 9d60dd58..3d515fec 100644 --- a/packaging/linux/fedora/Sunshine.spec +++ b/packaging/linux/copr/Sunshine.spec @@ -7,6 +7,13 @@ %undefine _hardened_build +# Define _metainfodir for OpenSUSE if not already defined +%if 0%{?suse_version} +%if !0%{?_metainfodir:1} +%global _metainfodir %{_datadir}/metainfo +%endif +%endif + Name: Sunshine Version: %{build_version} Release: 1%{?dist} @@ -15,17 +22,14 @@ License: GPLv3-only URL: https://github.com/LizardByte/Sunshine Source0: tarball.tar.gz -BuildRequires: appstream -# BuildRequires: boost-devel >= 1.86.0 +# Common BuildRequires BuildRequires: cmake >= 3.25.0 BuildRequires: desktop-file-utils -BuildRequires: libappstream-glib -BuildRequires: libayatana-appindicator3-devel +BuildRequires: git BuildRequires: libcap-devel BuildRequires: libcurl-devel BuildRequires: libdrm-devel BuildRequires: libevdev-devel -BuildRequires: libgudev BuildRequires: libnotify-devel BuildRequires: libva-devel BuildRequires: libX11-devel @@ -36,26 +40,51 @@ BuildRequires: libXi-devel BuildRequires: libXinerama-devel BuildRequires: libXrandr-devel BuildRequires: libXtst-devel -BuildRequires: git -BuildRequires: mesa-libGL-devel -BuildRequires: mesa-libgbm-devel -BuildRequires: miniupnpc-devel BuildRequires: npm -BuildRequires: numactl-devel BuildRequires: openssl-devel -BuildRequires: opus-devel -BuildRequires: pulseaudio-libs-devel BuildRequires: rpm-build -BuildRequires: systemd-udev BuildRequires: systemd-rpm-macros -%{?sysusers_requires_compat} BuildRequires: wget BuildRequires: which +%if 0%{?fedora} +# Fedora-specific BuildRequires +BuildRequires: appstream +# BuildRequires: boost-devel >= 1.86.0 +BuildRequires: libappstream-glib +BuildRequires: libayatana-appindicator3-devel +BuildRequires: libgudev +BuildRequires: mesa-libGL-devel +BuildRequires: mesa-libgbm-devel +BuildRequires: miniupnpc-devel +BuildRequires: numactl-devel +BuildRequires: opus-devel +BuildRequires: pulseaudio-libs-devel +BuildRequires: systemd-udev +%{?sysusers_requires_compat} # for unit tests BuildRequires: xorg-x11-server-Xvfb +%endif -# Conditional BuildRequires for cuda-gcc based on Fedora version +%if 0%{?suse_version} +# OpenSUSE-specific BuildRequires +BuildRequires: AppStream +BuildRequires: appstream-glib +BuildRequires: libappindicator3-devel +BuildRequires: libgudev-1_0-devel +BuildRequires: Mesa-libGL-devel +BuildRequires: libgbm-devel +BuildRequires: libminiupnpc-devel +BuildRequires: libnuma-devel +BuildRequires: libopus-devel +BuildRequires: libpulse-devel +BuildRequires: udev +# for unit tests +BuildRequires: xvfb-run +%endif + +# Conditional BuildRequires for cuda-gcc based on distribution version +%if 0%{?fedora} %if 0%{?fedora} <= 41 BuildRequires: gcc13 BuildRequires: gcc13-c++ @@ -69,9 +98,34 @@ BuildRequires: gcc14-c++ %global cuda_version 12.9.1 %global cuda_build 575.57.08 %endif +%endif + +%if 0%{?suse_version} +%if 0%{?suse_version} <= 1699 +# OpenSUSE Leap 15.x +BuildRequires: gcc13 +BuildRequires: gcc13-c++ +%global gcc_version 13 +%global cuda_version 12.9.1 +%global cuda_build 575.57.08 +%else +# OpenSUSE Tumbleweed +BuildRequires: gcc14 +BuildRequires: gcc14-c++ +%global gcc_version 14 +%global cuda_version 12.9.1 +%global cuda_build 575.57.08 +%endif +%endif %global cuda_dir %{_builddir}/cuda +# Common runtime requirements +Requires: miniupnpc >= 2.2.4 +Requires: which >= 2.21 + +%if 0%{?fedora} +# Fedora runtime requirements Requires: libayatana-appindicator3 >= 0.5.3 Requires: libcap >= 2.22 Requires: libcurl >= 7.0 @@ -81,11 +135,26 @@ Requires: libopusenc >= 0.2.1 Requires: libva >= 2.14.0 Requires: libwayland-client >= 1.20.0 Requires: libX11 >= 1.7.3.1 -Requires: miniupnpc >= 2.2.4 Requires: numactl-libs >= 2.0.14 Requires: openssl >= 3.0.2 Requires: pulseaudio-libs >= 10.0 -Requires: which >= 2.21 +%endif + +%if 0%{?suse_version} +# OpenSUSE runtime requirements +Requires: libappindicator3-1 +Requires: libcap2 +Requires: libcurl4 +Requires: libdrm2 +Requires: libevdev2 +Requires: libopusenc0 +Requires: libva2 +Requires: libwayland-client0 +Requires: libX11-6 +Requires: libnuma1 +Requires: libopenssl3 +Requires: libpulse0 +%endif %description Self-hosted game stream host for Moonlight.