commit:     ffde87904058de783332dbb129ec94578ca399d2
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 24 08:17:39 2024 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Sun Nov 24 10:53:26 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ffde8790

x11-drivers/nvidia-drivers: pass -std=gnu17 for gcc15 for now

Seems to be quite a few issues and may not be trivial to fix, upstream
already has some sanity checks to pickup that conftests failed and it
should be fixed properly in time.

Using KERNEL_CC to ensure it's used everywhere for modules, esp.
conftest.sh. Non-modules parts seems fine with c23.

For 390/470, just add it to the list of other permanent (ugly)
workarounds and update's 470 comment given it's no longer supported.
Due for removal from the tree in roughly 2 years or less and so just
need to hold on until then.

Closes: https://bugs.gentoo.org/944092
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild  | 13 +++++++------
 .../nvidia-drivers/nvidia-drivers-470.256.02-r2.ebuild    | 15 +++++++--------
 .../nvidia-drivers/nvidia-drivers-535.216.01-r1.ebuild    |  6 ++++++
 .../nvidia-drivers/nvidia-drivers-550.127.05-r1.ebuild    |  6 ++++++
 x11-drivers/nvidia-drivers/nvidia-drivers-550.135.ebuild  |  6 ++++++
 .../nvidia-drivers/nvidia-drivers-550.40.80.ebuild        |  6 ++++++
 .../nvidia-drivers/nvidia-drivers-565.57.01-r3.ebuild     |  6 ++++++
 7 files changed, 44 insertions(+), 14 deletions(-)

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild
index 2c3ff9a01c0d..ef1d957c063a 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild
@@ -151,15 +151,16 @@ src_compile() {
        tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG
        local -x RAW_LDFLAGS="$(get_abi_LDFLAGS) $(raw-ldflags)" # 
raw-ldflags.patch
 
-       # latest branches has proper fixes, but legacy have more issues and are
-       # not worth the trouble, so doing the lame "fix" for gcc14 (bug #921370)
-       local noerr=(
+       # dead branch that will never be fixed and due for eventual removal,
+       # so keeping lazy "fixes" (bug #921370)
+       local kcflags=(
+               -std=gnu17
                -Wno-error=implicit-function-declaration
                -Wno-error=incompatible-pointer-types
        )
        # not *FLAGS to ensure it's used everywhere including conftest.sh
-       CC+=" $(test-flags-CC "${noerr[@]}")"
-       use modules && KERNEL_CC+=" $(CC=${KERNEL_CC} test-flags-CC 
"${noerr[@]}")"
+       CC+=" $(test-flags-CC "${kcflags[@]}")"
+       use modules && KERNEL_CC+=" $(CC=${KERNEL_CC} test-flags-CC 
"${kcflags[@]}")"
 
        NV_ARGS=(
                PREFIX="${EPREFIX}"/usr
@@ -172,7 +173,7 @@ src_compile() {
        local modlist=( nvidia{,-drm,-modeset}=video:kernel )
        use x86 || modlist+=( nvidia-uvm=video:kernel )
        local modargs=(
-               CC="${KERNEL_CC}" # for the above gcc14 workarounds
+               CC="${KERNEL_CC}" # for the above kcflags workarounds
                IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
                SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
        )

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-470.256.02-r2.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-470.256.02-r2.ebuild
index 72ca42915a62..54648a15bfe3 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-470.256.02-r2.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-470.256.02-r2.ebuild
@@ -137,17 +137,16 @@ src_compile() {
        tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG
        local -x RAW_LDFLAGS="$(get_abi_LDFLAGS) $(raw-ldflags)" # 
raw-ldflags.patch
 
-       # latest branches has proper fixes, but legacy have more issues and are
-       # not worth the trouble, so doing the lame "fix" for gcc14 (bug #921370)
-       # TODO: check if still needed on bumps given this branch is supported,
-       # and reminder to cleanup the CC="${KERNEL_CC}" in modargs if removing
-       local noerr=(
+       # dead branch that will never be fixed and due for eventual removal,
+       # so keeping lazy "fixes" (bug #921370)
+       local kcflags=(
+               -std=gnu17
                -Wno-error=implicit-function-declaration
                -Wno-error=incompatible-pointer-types
        )
        # not *FLAGS to ensure it's used everywhere including conftest.sh
-       CC+=" $(test-flags-CC "${noerr[@]}")"
-       use modules && KERNEL_CC+=" $(CC=${KERNEL_CC} test-flags-CC 
"${noerr[@]}")"
+       CC+=" $(test-flags-CC "${kcflags[@]}")"
+       use modules && KERNEL_CC+=" $(CC=${KERNEL_CC} test-flags-CC 
"${kcflags[@]}")"
 
        local xnvflags=-fPIC #840389
        # lto static libraries tend to cause problems without fat objects
@@ -164,7 +163,7 @@ src_compile() {
 
        local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=video:kernel )
        local modargs=(
-               CC="${KERNEL_CC}" # for the above gcc14 workarounds
+               CC="${KERNEL_CC}" # for the above kcflags workarounds
                IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
                SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
        )

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-535.216.01-r1.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-535.216.01-r1.ebuild
index 6d4b7816cd0b..d8723f5691d5 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-535.216.01-r1.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-535.216.01-r1.ebuild
@@ -199,6 +199,11 @@ src_compile() {
        if use modules; then
                local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} 
o_ldflags=${LDFLAGS}
 
+               # conftest.sh is broken with c23 due to func() changing meaning,
+               # and then fails later due to ealier misdetections
+               # TODO: try without now and then + drop modargs' CC= (bug 
#944092)
+               KERNEL_CC+=" -std=gnu17"
+
                local modlistargs=video:kernel
                if use kernel-open; then
                        
modlistargs+=-module-source:kernel-module-source/kernel-open
@@ -212,6 +217,7 @@ src_compile() {
 
                local modlist=( 
nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
                local modargs=(
+                       CC="${KERNEL_CC}" # needed for above gnu17 workaround
                        IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
                        SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
                )

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-550.127.05-r1.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-550.127.05-r1.ebuild
index 16b0f7c9bd86..a64a855cd597 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-550.127.05-r1.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-550.127.05-r1.ebuild
@@ -192,6 +192,11 @@ src_compile() {
        if use modules; then
                local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} 
o_ldflags=${LDFLAGS}
 
+               # conftest.sh is broken with c23 due to func() changing meaning,
+               # and then fails later due to ealier misdetections
+               # TODO: try without now and then + drop modargs' CC= (bug 
#944092)
+               KERNEL_CC+=" -std=gnu17"
+
                local modlistargs=video:kernel
                if use kernel-open; then
                        
modlistargs+=-module-source:kernel-module-source/kernel-open
@@ -205,6 +210,7 @@ src_compile() {
 
                local modlist=( 
nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
                local modargs=(
+                       CC="${KERNEL_CC}" # needed for above gnu17 workaround
                        IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
                        SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
                )

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-550.135.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-550.135.ebuild
index e0b2132a4374..89209125741d 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-550.135.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-550.135.ebuild
@@ -191,6 +191,11 @@ src_compile() {
        if use modules; then
                local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} 
o_ldflags=${LDFLAGS}
 
+               # conftest.sh is broken with c23 due to func() changing meaning,
+               # and then fails later due to ealier misdetections
+               # TODO: try without now and then + drop modargs' CC= (bug 
#944092)
+               KERNEL_CC+=" -std=gnu17"
+
                local modlistargs=video:kernel
                if use kernel-open; then
                        
modlistargs+=-module-source:kernel-module-source/kernel-open
@@ -204,6 +209,7 @@ src_compile() {
 
                local modlist=( 
nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
                local modargs=(
+                       CC="${KERNEL_CC}" # needed for above gnu17 workaround
                        IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
                        SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
 

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-550.40.80.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-550.40.80.ebuild
index 754f67dcfc07..ce5908bef544 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-550.40.80.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-550.40.80.ebuild
@@ -193,6 +193,11 @@ src_compile() {
        if use modules; then
                local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} 
o_ldflags=${LDFLAGS}
 
+               # conftest.sh is broken with c23 due to func() changing meaning,
+               # and then fails later due to ealier misdetections
+               # TODO: try without now and then + drop modargs' CC= (bug 
#944092)
+               KERNEL_CC+=" -std=gnu17"
+
                local modlistargs=video:kernel
                if use kernel-open; then
                        
modlistargs+=-module-source:kernel-module-source/kernel-open
@@ -206,6 +211,7 @@ src_compile() {
 
                local modlist=( 
nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
                local modargs=(
+                       CC="${KERNEL_CC}" # needed for above gnu17 workaround
                        IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
                        SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
                )

diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-565.57.01-r3.ebuild 
b/x11-drivers/nvidia-drivers/nvidia-drivers-565.57.01-r3.ebuild
index 14c7ce103198..5d4c42112da0 100644
--- a/x11-drivers/nvidia-drivers/nvidia-drivers-565.57.01-r3.ebuild
+++ b/x11-drivers/nvidia-drivers/nvidia-drivers-565.57.01-r3.ebuild
@@ -196,6 +196,11 @@ src_compile() {
        if use modules; then
                local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} 
o_ldflags=${LDFLAGS}
 
+               # conftest.sh is broken with c23 due to func() changing meaning,
+               # and then fails later due to ealier misdetections
+               # TODO: try without now and then + drop modargs' CC= (bug 
#944092)
+               KERNEL_CC+=" -std=gnu17"
+
                local modlistargs=video:kernel
                if use kernel-open; then
                        
modlistargs+=-module-source:kernel-module-source/kernel-open
@@ -211,6 +216,7 @@ src_compile() {
 
                local modlist=( 
nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} )
                local modargs=(
+                       CC="${KERNEL_CC}" # needed for above gnu17 workaround
                        IGNORE_CC_MISMATCH=yes NV_VERBOSE=1
                        SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}"
                )

Reply via email to