@@ -17,8 +17,6 @@ Source0: tarball.tar.gz
1717
1818# BuildRequires: boost-devel >= 1.86.0
1919BuildRequires: cmake >= 3.25.0
20- BuildRequires: gcc
21- BuildRequires: gcc-c++
2220BuildRequires: libayatana-appindicator3-devel
2321BuildRequires: libcap-devel
2422BuildRequires: libcurl-devel
@@ -54,11 +52,22 @@ BuildRequires: which
5452BuildRequires: xorg-x11-server-Xvfb
5553
5654# Conditional BuildRequires for cuda-gcc based on Fedora version
57- %if 0%{?fedora } >= 40
58- # this package conflicts with gcc on f39
59- BuildRequires: cuda-gcc-c++
55+ %if 0%{?fedora } >= 40 && 0%{?fedora } <= 41
56+ BuildRequires: gcc13
57+ BuildRequires: gcc13-c++
58+ %global gcc_version 13
59+ %global cuda_version 12.6.3
60+ %global cuda_build 560.35.05
61+ %elif %{?fedora } >= 42
62+ BuildRequires: gcc14
63+ BuildRequires: gcc14-c++
64+ %global gcc_version 14
65+ %global cuda_version 12.8.1
66+ %global cuda_build 570.124.06
6067%endif
6168
69+ %global cuda_dir %{_builddir }/cuda
70+
6271Requires: libcap >= 2.22
6372Requires: libcurl >= 7.0
6473Requires: libdrm > 2.4.97
@@ -88,20 +97,14 @@ ls -a %{_builddir}/Sunshine
8897%autopatch -p1
8998
9099%build
100+ # exit on error
101+ set -e
102+
91103# Detect the architecture and Fedora version
92104architecture= $(uname -m)
93- fedora_version=%{fedora }
94105
95106cuda_supported_architectures= ("x86_64 " "aarch64 ")
96107
97- # set cuda_version based on Fedora version
98- case "$fedora_version" in
99- *)
100- cuda_version= "12.6.3"
101- cuda_build= "560.35.05"
102- ;;
103- esac
104-
105108# prepare CMAKE args
106109cmake_args= (
107110 "-B= %{_builddir }/Sunshine/build"
@@ -121,27 +124,23 @@ cmake_args=(
121124 "-DSUNSHINE_PUBLISHER_ISSUE_URL= https://app.lizardbyte.dev/support"
122125)
123126
127+ export CC= gcc-%{gcc_version }
128+ export CXX= g++-%{gcc_version }
129+
124130function install_cuda() {
125131 # check if we need to install cuda
126- if [ -f "%{_builddir }/cuda /bin/nvcc" ]; then
132+ if [ -f "%{cuda_dir } /bin/nvcc" ]; then
127133 echo "cuda already installed"
128134 return
129135 fi
130136
131- if [ "$fedora_version" -ge 40 ]; then
132- # update environment variables for CUDA, necessary when using cuda-gcc-c++
133- export NVCC_PREPEND_FLAGS= '-ccbin /usr/bin/g++-13'
134- export PATH= /usr/bin/cuda:"%{_builddir }/cuda/bin:${PATH}"
135- export LD_LIBRARY_PATH= "%{_builddir }/cuda/lib64:${LD_LIBRARY_PATH}"
136- fi
137-
138137 local cuda_prefix= "https://developer.download.nvidia.com/compute/cuda/"
139138 local cuda_suffix= ""
140139 if [ "$architecture" == "aarch64 " ]; then
141140 local cuda_suffix= "_sbsa"
142141 fi
143142
144- local url= "${cuda_prefix}$ {cuda_version}/local_installers/cuda_$ {cuda_version}_$ {cuda_build}_linux${cuda_suffix}.run"
143+ local url= "${cuda_prefix}% {cuda_version }/local_installers/cuda_% {cuda_version }_% {cuda_build }_linux${cuda_suffix}.run"
145144 echo "cuda url: ${url}"
146145 wget \
147146 "$url" \
@@ -157,23 +156,31 @@ function install_cuda() {
157156 --override \
158157 --silent \
159158 --toolkit \
160- --toolkitpath= "%{_builddir }/cuda "
159+ --toolkitpath= "%{cuda_dir } "
161160 rm "%{_builddir }/cuda.run"
162- }
163161
164- # we need to clear these flags to avoid linkage errors with cuda-gcc-c++
165- export CFLAGS= ""
166- export CXXFLAGS= ""
167- export FFLAGS= ""
168- export FCFLAGS= ""
169- export LDFLAGS= ""
170- export CC= gcc-13
171- export CXX= g++-13
162+ # we need to patch math_functions.h on fedora 42
163+ # see https://forums.developer.nvidia.com/t/error-exception-specification-is-incompatible-for-cospi-sinpi-cospif-sinpif-with-glibc-2-41/323591/3
164+ if [ "%{?fedora }" -eq 42 ]; then
165+ echo "Original math_functions.h:"
166+ find "%{cuda_dir }" -name math_functions.h -exec cat {} \;
167+
168+ # Apply the patch
169+ patch -p2 \
170+ --backup \
171+ --directory= "%{cuda_dir }" \
172+ --verbose \
173+ < "%{_builddir }/Sunshine/packaging/linux/fedora/patches/f42/${architecture}/01-math_functions.patch"
174+ fi
175+ }
172176
173- if [ -n "$ cuda_version" ] && [[ " ${cuda_supported_architectures[@]} " = ~ " ${architecture} " ]]; then
177+ if [ -n "%{ cuda_version } " ] && [[ " ${cuda_supported_architectures[@]} " = ~ " ${architecture} " ]]; then
174178 install_cuda
175179 cmake_args+= ("-DSUNSHINE_ENABLE_CUDA= ON")
176- cmake_args+= ("-DCMAKE_CUDA_COMPILER:PATH= %{_builddir }/cuda/bin/nvcc")
180+ cmake_args+= ("-DCMAKE_CUDA_COMPILER:PATH= %{cuda_dir }/bin/nvcc")
181+ cmake_args+= ("-DCMAKE_CUDA_HOST_COMPILER= gcc-%{gcc_version }")
182+ else
183+ cmake_args+= ("-DSUNSHINE_ENABLE_CUDA= OFF")
177184fi
178185
179186# setup the version
0 commit comments