commit:     03c678f5daebb8c8004135334d18dc677a661a7b
Author:     Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com>
AuthorDate: Sun Aug 10 18:48:00 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Aug 10 20:46:13 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=03c678f5

dev-util/nvidia-cuda-toolkit: fix build with glibc-2.42

Signed-off-by: Paul Zander <negril.nx+gentoo <AT> gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/43405
Closes: https://github.com/gentoo/gentoo/pull/43405
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../files/nvidia-cuda-toolkit-glibc-2.42.patch     | 49 ++++++++++++++++++++++
 .../nvidia-cuda-toolkit-12.9.1.ebuild              |  3 ++
 2 files changed, 52 insertions(+)

diff --git 
a/dev-util/nvidia-cuda-toolkit/files/nvidia-cuda-toolkit-glibc-2.42.patch 
b/dev-util/nvidia-cuda-toolkit/files/nvidia-cuda-toolkit-glibc-2.42.patch
new file mode 100644
index 000000000000..d292b425f07d
--- /dev/null
+++ b/dev-util/nvidia-cuda-toolkit/files/nvidia-cuda-toolkit-glibc-2.42.patch
@@ -0,0 +1,49 @@
+From 00713637a617aea1813ba7f09f0ba7de414415b9 Mon Sep 17 00:00:00 2001
+From: Paul Zander <[email protected]>
+Date: Sun, 10 Aug 2025 12:31:03 +0200
+Subject: [PATCH] Updates headers for glibc-2.42
+
+Match the extern definitions in cuda-crt headers with the changes in 
glibc-2.42.
+
+/usr/include/bits/mathcalls.h(206): error: exception specification is
+incompatible with that of previous function "rsqrtf" (declared at line 657 of
+/opt/cuda/bin/../targets/x86_64-linux/include/crt/math_functions.h)
+
+extern float rsqrtf (float __x) noexcept (true); extern float __rsqrtf (float
+__x) noexcept (true);
+
+See-Also:
+https://sourceware.org/git/?p=glibc.git;a=commit;h=77261698b4e938020a1b2032709a54d942ba330f
+Signed-off-by: Paul Zander <[email protected]>
+
+diff --git a/builds/cuda_crt/targets/x86_64-linux/include/crt/math_functions.h 
b/builds/cuda_crt/targets/x86_64-linux/include/crt/math_functions.h
+index 50a6646..d525a86 100644
+--- a/builds/cuda_crt/targets/x86_64-linux/include/crt/math_functions.h
++++ b/builds/cuda_crt/targets/x86_64-linux/include/crt/math_functions.h
+@@ -626,7 +626,11 @@ extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ 
double         __cdecl sqrt(
+  *
+  * \note_accuracy_double
+  */
++#if defined(__GLIBC__) && (__GLIBC__ > 2) || (__GLIBC__ == 2 && 
__GLIBC_MINOR__ >= 42)
++extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double                 
rsqrt(double x) noexcept (true);
++#else
+ extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ double                 
rsqrt(double x);
++#endif
+ 
+ /**
+  * \ingroup CUDA_MATH_SINGLE
+@@ -650,7 +654,11 @@ extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ 
double                 rsqrt
+  *
+  * \note_accuracy_single
+  */
++#if defined(__GLIBC__) && (__GLIBC__ > 2) || (__GLIBC__ == 2 && 
__GLIBC_MINOR__ >= 42)
++extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float                  
rsqrtf(float x) noexcept (true);
++#else
+ extern __DEVICE_FUNCTIONS_DECL__ __device_builtin__ float                  
rsqrtf(float x);
++#endif
+ 
+ #if defined(__QNX__) && !defined(_LIBCPP_VERSION)
+ namespace std {
+-- 
+2.50.1
+

diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1.ebuild 
b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1.ebuild
index 547f74329f31..16ec46487188 100644
--- a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1.ebuild
+++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-12.9.1.ebuild
@@ -155,6 +155,9 @@ src_prepare() {
        pushd "builds/cuda_nvcc/targets/${narch}-linux" >/dev/null || die
        eapply -p5 "${FILESDIR}/nvidia-cuda-toolkit-glibc-2.41-r1.patch"
        popd >/dev/null || die
+       pushd "builds/cuda_crt/targets/${narch}-linux" >/dev/null || die
+       eapply -p5 "${FILESDIR}/nvidia-cuda-toolkit-glibc-2.42.patch"
+       popd >/dev/null || die
 
        default
 }

Reply via email to