@@ -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,24 @@ 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+ # this package conflicts with gcc on f39, and doesn't work on f42
57+ # BuildRequires: cuda-gcc-c++
58+ BuildRequires: gcc13
59+ BuildRequires: gcc13-c++
60+ %global gcc_version 13
61+ %global cuda_version 12.6.3
62+ %global cuda_build 560.35.05
63+ %elif %{?fedora } >= 42
64+ BuildRequires: gcc14
65+ BuildRequires: gcc14-c++
66+ %global gcc_version 14
67+ %global cuda_version 12.8.1
68+ %global cuda_build 570.124.06
6069%endif
6170
71+ %global cuda_dir %{_builddir }/cuda
72+
6273Requires: libcap >= 2.22
6374Requires: libcurl >= 7.0
6475Requires: libdrm > 2.4.97
@@ -88,20 +99,14 @@ ls -a %{_builddir}/Sunshine
8899%autopatch -p1
89100
90101%build
102+ # exit on error
103+ set -e
104+
91105# Detect the architecture and Fedora version
92106architecture= $(uname -m)
93- fedora_version=%{fedora }
94107
95108cuda_supported_architectures= ("x86_64 " "aarch64 ")
96109
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-
105110# prepare CMAKE args
106111cmake_args= (
107112 "-B= %{_builddir }/Sunshine/build"
@@ -121,27 +126,23 @@ cmake_args=(
121126 "-DSUNSHINE_PUBLISHER_ISSUE_URL= https://app.lizardbyte.dev/support"
122127)
123128
129+ export CC= gcc-%{gcc_version }
130+ export CXX= g++-%{gcc_version }
131+
124132function install_cuda() {
125133 # check if we need to install cuda
126- if [ -f "%{_builddir }/cuda /bin/nvcc" ]; then
134+ if [ -f "%{cuda_dir } /bin/nvcc" ]; then
127135 echo "cuda already installed"
128136 return
129137 fi
130138
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-
138139 local cuda_prefix= "https://developer.download.nvidia.com/compute/cuda/"
139140 local cuda_suffix= ""
140141 if [ "$architecture" == "aarch64 " ]; then
141142 local cuda_suffix= "_sbsa"
142143 fi
143144
144- local url= "${cuda_prefix}$ {cuda_version}/local_installers/cuda_$ {cuda_version}_$ {cuda_build}_linux${cuda_suffix}.run"
145+ local url= "${cuda_prefix}% {cuda_version }/local_installers/cuda_% {cuda_version }_% {cuda_build }_linux${cuda_suffix}.run"
145146 echo "cuda url: ${url}"
146147 wget \
147148 "$url" \
@@ -157,23 +158,38 @@ function install_cuda() {
157158 --override \
158159 --silent \
159160 --toolkit \
160- --toolkitpath= "%{_builddir }/cuda "
161+ --toolkitpath= "%{cuda_dir } "
161162 rm "%{_builddir }/cuda.run"
163+
164+ # we need to patch math_functions.h on fedora 42
165+ # see https://forums.developer.nvidia.com/t/error-exception-specification-is-incompatible-for-cospi-sinpi-cospif-sinpif-with-glibc-2-41/323591/3
166+ if [ "%{?fedora }" -eq 42 ]; then
167+ echo "Original math_functions.h:"
168+ find "%{cuda_dir }" -name math_functions.h -exec cat {} \;
169+
170+ # Apply the patch
171+ patch -p2 \
172+ --backup \
173+ --directory= "%{cuda_dir }" \
174+ --verbose \
175+ < "%{_builddir }/Sunshine/packaging/linux/fedora/patches/f42/${architecture}/01-math_functions.patch"
176+ fi
162177}
163178
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
179+ if [ -n "%{cuda_version }" ] && [[ " ${cuda_supported_architectures[@]} " = ~ " ${architecture} " ]]; then
180+ # we need to clear these flags to avoid linkage errors with cuda-gcc-c++
181+ export CFLAGS= ""
182+ export CXXFLAGS= ""
183+ export FFLAGS= ""
184+ export FCFLAGS= ""
185+ export LDFLAGS= ""
172186
173- if [ -n "$cuda_version" ] && [[ " ${cuda_supported_architectures[@]} " = ~ " ${architecture} " ]]; then
174187 install_cuda
175188 cmake_args+= ("-DSUNSHINE_ENABLE_CUDA= ON")
176- cmake_args+= ("-DCMAKE_CUDA_COMPILER:PATH= %{_builddir }/cuda/bin/nvcc")
189+ cmake_args+= ("-DCMAKE_CUDA_COMPILER:PATH= %{cuda_dir }/bin/nvcc")
190+ cmake_args+= ("-DCMAKE_CUDA_HOST_COMPILER= gcc-%{gcc_version }")
191+ else
192+ cmake_args+= ("-DSUNSHINE_ENABLE_CUDA= OFF")
177193fi
178194
179195# setup the version
0 commit comments