commit: 9b89609eb1e84c5f5077039c7ff1d7865a81f85f Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org> AuthorDate: Mon Jan 15 22:28:24 2024 +0000 Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org> CommitDate: Mon Jan 15 23:00:44 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9b89609e
x11-drivers/nvidia-drivers: fix build with upcoming gcc14 Trivial and proper fix for 5xx branches, NVIDIA seems to be (now) keeping track of implicits and incompatibles beside missing this one hidden behind 2>/dev/null and kernel >=5.18. Can't say the same for the legacy branches (390 and 470), and rather than worry about these going for the lame life support treatment with -Wno-error= there. 470 has hope to be fixed properly by NVIDIA still but this is likely there forever in the not supported + masked 390. No need for revbumps, with gcc13 the test simply functions properly and does what's right, while with 14 it's just a build-time issue (and legacy branches are unchanged). Closes: https://bugs.gentoo.org/921370 Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org> .../files/nvidia-drivers-525.147.05-gcc14.patch | 32 ++++++++++++++++++++++ .../nvidia-drivers/nvidia-drivers-390.157.ebuild | 11 ++++++++ .../nvidia-drivers-470.223.02.ebuild | 13 +++++++++ .../nvidia-drivers-525.147.05.ebuild | 1 + .../nvidia-drivers-535.146.02.ebuild | 1 + .../nvidia-drivers/nvidia-drivers-535.43.22.ebuild | 1 + .../nvidia-drivers-545.29.06-r1.ebuild | 1 + 7 files changed, 60 insertions(+) diff --git a/x11-drivers/nvidia-drivers/files/nvidia-drivers-525.147.05-gcc14.patch b/x11-drivers/nvidia-drivers/files/nvidia-drivers-525.147.05-gcc14.patch new file mode 100644 index 000000000000..799f80b79f7e --- /dev/null +++ b/x11-drivers/nvidia-drivers/files/nvidia-drivers-525.147.05-gcc14.patch @@ -0,0 +1,32 @@ +https://bugs.gentoo.org/921370 +https://forums.developer.nvidia.com/t/279072 +--- a/kernel/conftest.sh ++++ b/kernel/conftest.sh +@@ -4807,6 +4807,11 @@ + CODE=" + #include <drm/drm_gem.h> ++ #if defined(NV_LINUX_IOSYS_MAP_H_PRESENT) ++ typedef struct iosys_map nv_sysio_map_t; ++ #else ++ typedef struct dma_buf_map nv_sysio_map_t; ++ #endif + int conftest_drm_gem_object_vmap_has_map_arg( +- struct drm_gem_object *obj, struct dma_buf_map *map) { ++ struct drm_gem_object *obj, nv_sysio_map_t *map) { + return obj->funcs->vmap(obj, map); + }" +--- a/kernel-module-source/kernel-open/conftest.sh ++++ b/kernel-module-source/kernel-open/conftest.sh +@@ -4807,6 +4807,11 @@ + CODE=" + #include <drm/drm_gem.h> ++ #if defined(NV_LINUX_IOSYS_MAP_H_PRESENT) ++ typedef struct iosys_map nv_sysio_map_t; ++ #else ++ typedef struct dma_buf_map nv_sysio_map_t; ++ #endif + int conftest_drm_gem_object_vmap_has_map_arg( +- struct drm_gem_object *obj, struct dma_buf_map *map) { ++ struct drm_gem_object *obj, nv_sysio_map_t *map) { + return obj->funcs->vmap(obj, map); + }" diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild index e722d7730c3d..364d03fab92d 100644 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-390.157.ebuild @@ -151,6 +151,16 @@ src_compile() { tc-export AR CC CXX LD OBJCOPY OBJDUMP 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=( + -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[@]}")" + NV_ARGS=( PREFIX="${EPREFIX}"/usr HOST_CC="$(tc-getBUILD_CC)" @@ -162,6 +172,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 IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" ) diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-470.223.02.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-470.223.02.ebuild index d9f0ac99c1b1..a81c071f8b6d 100644 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-470.223.02.ebuild +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-470.223.02.ebuild @@ -148,6 +148,18 @@ src_compile() { tc-export AR CC CXX LD OBJCOPY OBJDUMP 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=( + -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[@]}")" + local xnvflags=-fPIC #840389 # lto static libraries tend to cause problems without fat objects is-flagq '-flto@(|=*)' && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" @@ -163,6 +175,7 @@ src_compile() { local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=video:kernel ) local modargs=( + CC="${KERNEL_CC}" # for the above gcc14 workarounds IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" ) diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-525.147.05.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-525.147.05.ebuild index bf6ccdee2c2e..8198376cd815 100644 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-525.147.05.ebuild +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-525.147.05.ebuild @@ -88,6 +88,7 @@ QA_PREBUILT="lib/firmware/* opt/bin/* usr/lib*" PATCHES=( "${FILESDIR}"/nvidia-drivers-525.116.04-clang-unused-option.patch + "${FILESDIR}"/nvidia-drivers-525.147.05-gcc14.patch "${FILESDIR}"/nvidia-kernel-module-source-515.86.01-raw-ldflags.patch "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch "${FILESDIR}"/nvidia-settings-390.144-desktop.patch diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-535.146.02.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-535.146.02.ebuild index 3f1e1c192353..9097157c2346 100644 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-535.146.02.ebuild +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-535.146.02.ebuild @@ -88,6 +88,7 @@ BDEPEND=" QA_PREBUILT="lib/firmware/* opt/bin/* usr/lib*" PATCHES=( + "${FILESDIR}"/nvidia-drivers-525.147.05-gcc14.patch "${FILESDIR}"/nvidia-kernel-module-source-515.86.01-raw-ldflags.patch "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch "${FILESDIR}"/nvidia-settings-390.144-raw-ldflags.patch diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-535.43.22.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-535.43.22.ebuild index 8c94a78cb103..1c4a52826bb9 100644 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-535.43.22.ebuild +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-535.43.22.ebuild @@ -91,6 +91,7 @@ BDEPEND=" QA_PREBUILT="lib/firmware/* opt/bin/* usr/lib*" PATCHES=( + "${FILESDIR}"/nvidia-drivers-525.147.05-gcc14.patch "${FILESDIR}"/nvidia-kernel-module-source-515.86.01-raw-ldflags.patch "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch "${FILESDIR}"/nvidia-settings-390.144-raw-ldflags.patch diff --git a/x11-drivers/nvidia-drivers/nvidia-drivers-545.29.06-r1.ebuild b/x11-drivers/nvidia-drivers/nvidia-drivers-545.29.06-r1.ebuild index 635d62b67243..8150845d19c5 100644 --- a/x11-drivers/nvidia-drivers/nvidia-drivers-545.29.06-r1.ebuild +++ b/x11-drivers/nvidia-drivers/nvidia-drivers-545.29.06-r1.ebuild @@ -87,6 +87,7 @@ BDEPEND=" QA_PREBUILT="lib/firmware/* opt/bin/* usr/lib*" PATCHES=( + "${FILESDIR}"/nvidia-drivers-525.147.05-gcc14.patch "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch )
