From 396cda77a27e05b2a59c88c93cca878e29c9ebb8 Mon Sep 17 00:00:00 2001 From: Flatcar Buildbot Date: Mon, 23 Feb 2026 07:31:00 +0000 Subject: [PATCH 1/8] eclass/sysroot: Sync with Gentoo It's from Gentoo commit bde3d41e27af56e0ce096c04108b4843507ae2a6. Signed-off-by: Flatcar Buildbot --- .../portage-stable/eclass/sysroot.eclass | 110 ++++++++++++++++-- 1 file changed, 100 insertions(+), 10 deletions(-) diff --git a/sdk_container/src/third_party/portage-stable/eclass/sysroot.eclass b/sdk_container/src/third_party/portage-stable/eclass/sysroot.eclass index f17d6bcec2b..3427c421bf2 100644 --- a/sdk_container/src/third_party/portage-stable/eclass/sysroot.eclass +++ b/sdk_container/src/third_party/portage-stable/eclass/sysroot.eclass @@ -1,4 +1,4 @@ -# Copyright 2025 Gentoo Authors +# Copyright 2025-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: sysroot.eclass @@ -41,18 +41,55 @@ qemu_arch() { esac } +# @FUNCTION: qemu_arch_if_needed +# @DESCRIPTION: +# If QEMU is needed to run binaries for the given target or CHOST on the build +# system, return the QEMU architecture, otherwise return status code 1. +qemu_arch_if_needed() { + local target=${1:-${CHOST}} + local qemu_arch=$(qemu_arch "${target}") + + # We ideally compare CHOST against CBUILD, but binary packages cache the + # CBUILD value from the system that originally built them. + if [[ ${MERGE_TYPE} != binary ]]; then + if [[ ${qemu_arch} == $(qemu_arch "${CBUILD}") ]]; then + return 1 + else + echo "${qemu_arch}" + return 0 + fi + fi + + # So for binary packages, compare against the machine hardware name instead. + # Don't use uname because that may lie. /proc knows the real value. + case "${qemu_arch}/$(< /proc/sys/kernel/arch)" in + "${qemu_arch}/${qemu_arch}") return 1 ;; + arm/armv*) return 1 ;; + hppa/parisc*) return 1 ;; + i386/i?86) return 1 ;; + mips64*/mips64) return 1 ;; + mipsn32*/mips64) return 1 ;; + mips*/mips) return 1 ;; + esac + + echo "${qemu_arch}" + return 0 +} + # @FUNCTION: sysroot_make_run_prefixed # @DESCRIPTION: # Create a wrapper script for directly running executables within a (sys)root # without changing the root directory. The path to that script is returned. If -# no sysroot has been set, then this function returns unsuccessfully. +# no (sys)root has been set, then return status code 1. If the wrapper cannot be +# created for a permissible reason like QEMU being missing or broken, then +# return status code 2. # # The script explicitly uses QEMU if this is necessary and it is available in # this environment. It may otherwise implicitly use a QEMU outside this # environment if binfmt_misc has been used with the F flag. It is not feasible # to add a conditional dependency on QEMU. sysroot_make_run_prefixed() { - local QEMU_ARCH=$(qemu_arch) SCRIPT MYROOT MYEROOT LIBGCC + local QEMU_ARCH SCRIPT MYROOT MYEROOT LIBGCC if [[ ${EBUILD_PHASE_FUNC} == src_* ]]; then [[ -z ${SYSROOT} ]] && return 1 @@ -80,10 +117,31 @@ sysroot_make_run_prefixed() { fi fi - if [[ ${QEMU_ARCH} == $(qemu_arch "${CBUILD}") ]]; then + if [[ ${CHOST} = *-mingw32 ]]; then + if ! type -P wine >/dev/null; then + einfo "Wine not found. Continuing without ${SCRIPT##*/} wrapper." + return 2 + fi + + # UNIX paths can work, but programs will not expect this in %PATH%. + local winepath="Z:${LIBGCC};Z:${MYEROOT}/bin;Z:${MYEROOT}/usr/bin;Z:${MYEROOT}/$(get_libdir);Z:${MYEROOT}/usr/$(get_libdir)" + + # Assume that Wine can do its own CPU emulation. + install -m0755 /dev/stdin "${SCRIPT}" <<-EOF || die + #!/bin/sh + SANDBOX_ON=0 LD_PRELOAD= WINEPATH="\${WINEPATH}\${WINEPATH+;};${winepath//\//\\}" exec wine "\${@}" + EOF + elif ! QEMU_ARCH=$(qemu_arch_if_needed); then # glibc: ld.so is a symlink, ldd is a binary. # musl: ld.so doesn't exist, ldd is a symlink. - local DLINKER=$(find "${MYEROOT}"/usr/bin/{ld.so,ldd} -type l -print -quit 2>/dev/null || die "failed to find dynamic linker") + local DLINKER candidate + for candidate in "${MYEROOT}"/usr/bin/{ld.so,ldd}; do + if [[ -L ${candidate} ]]; then + DLINKER=${candidate} + break + fi + done + [[ -n ${DLINKER} ]] || die "failed to find dynamic linker" # musl symlinks ldd to ld-musl.so to libc.so. We want the ld-musl.so # path, not the libc.so path, so don't resolve the symlinks entirely. @@ -102,6 +160,19 @@ sysroot_make_run_prefixed() { #!/bin/sh QEMU_SET_ENV="\${QEMU_SET_ENV}\${QEMU_SET_ENV+,}LD_LIBRARY_PATH=\${LD_LIBRARY_PATH}\${LD_LIBRARY_PATH+:}${LIBGCC}" QEMU_LD_PREFIX="${MYROOT}" exec $(type -P "qemu-${QEMU_ARCH}") "\${@}" EOF + + # Meson will fail if the given exe_wrapper does not work, regardless of + # whether one is actually needed. This is bad if QEMU is not installed + # and worse if QEMU does not support the architecture. We therefore need + # to perform our own test up front. + local test="${SCRIPT}-test" + echo 'int main(void) { return 0; }' > "${test}.c" || die "failed to write ${test##*/}" + $(tc-getCC) ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} "${test}.c" -o "${test}" || die "failed to build ${test##*/}" + + if ! "${SCRIPT}" "${test}" &>/dev/null; then + einfo "Failed to run ${test##*/}. Continuing without ${SCRIPT##*/} wrapper." + return 2 + fi fi echo "${SCRIPT}" @@ -111,11 +182,30 @@ sysroot_make_run_prefixed() { # @DESCRIPTION: # Create a wrapper script with sysroot_make_run_prefixed if necessary, and use # it to execute the given command, otherwise just execute the command directly. +# Return unsuccessfully if the wrapper cannot be created. sysroot_run_prefixed() { local script - if script=$(sysroot_make_run_prefixed); then - "${script}" "${@}" - else - "${@}" - fi + script=$(sysroot_make_run_prefixed) + + case $? in + 0) "${script}" "${@}" ;; + 1) "${@}" ;; + *) return $? ;; + esac +} + +# @FUNCTION: sysroot_try_run_prefixed +# @DESCRIPTION: +# Create a wrapper script with sysroot_make_run_prefixed if necessary, and use +# it to execute the given command, otherwise just execute the command directly. +# Print a warning and return successfully if the wrapper cannot be created. +sysroot_try_run_prefixed() { + local script + script=$(sysroot_make_run_prefixed) + + case $? in + 0) "${script}" "${@}" ;; + 1) "${@}" ;; + *) ewarn "Unable to run command under prefix: $*" ;; + esac } From 3755f002e2e73eff5d0ab9ec4b5177a335813daa Mon Sep 17 00:00:00 2001 From: Flatcar Buildbot Date: Mon, 23 Feb 2026 07:32:25 +0000 Subject: [PATCH 2/8] sys-apps/iucode_tool: Sync with Gentoo It's from Gentoo commit 77bcc45dc4b55e9d1a54d0944f6524943ebabfa3. Signed-off-by: Flatcar Buildbot --- .../files/iucode_tool-2.3.1-non-x86.patch | 47 +++++++++++++++++++ .../iucode_tool/iucode_tool-2.3.1-r2.ebuild | 21 +++++++++ 2 files changed, 68 insertions(+) create mode 100644 sdk_container/src/third_party/portage-stable/sys-apps/iucode_tool/files/iucode_tool-2.3.1-non-x86.patch create mode 100644 sdk_container/src/third_party/portage-stable/sys-apps/iucode_tool/iucode_tool-2.3.1-r2.ebuild diff --git a/sdk_container/src/third_party/portage-stable/sys-apps/iucode_tool/files/iucode_tool-2.3.1-non-x86.patch b/sdk_container/src/third_party/portage-stable/sys-apps/iucode_tool/files/iucode_tool-2.3.1-non-x86.patch new file mode 100644 index 00000000000..772f05d33ce --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/sys-apps/iucode_tool/files/iucode_tool-2.3.1-non-x86.patch @@ -0,0 +1,47 @@ +https://gitlab.com/iucode-tool/iucode-tool/-/merge_requests/5 + +From dd2511c343b4eb62a28edf330dfc9e2c2e750a88 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot +Date: Mon, 2 Feb 2026 11:16:13 +0000 +Subject: [PATCH] iucode_tool: Allow building on non-x86 little endian + architectures + +This is obviously an Intel x86-specific tool, but that doesn't mean it +cannot be used elsewhere to prepare x86 images. The code is still +endian-sensitive though, so the configure check to disallow big endian +remains. + +Signed-off-by: James Le Cuirot +--- a/iucode_tool.c ++++ b/iucode_tool.c +@@ -30,7 +30,10 @@ + #include + #include + #include ++ ++#if defined(__x86_64__) || defined(__i386__) + #include ++#endif + + #include "intel_microcode.h" + +@@ -2933,11 +2936,16 @@ static int scan_system_processors(unsigned int strategy, + assert(filter_list); + + print_msg(3, "trying to get CPUID information directly"); ++#if defined(__x86_64__) || defined(__i386__) + if (!(__get_cpuid(0, &id0, &id1, &id2, &id3) && + __get_cpuid(1, &sig, &idx, &idx, &idx))) { + print_msg(1, "microcode signature unavailable"); + return 0; + } ++#else ++ print_msg(1, "CPUID instruction not available on this architecture"); ++ return 0; ++#endif + + /* + * fail-safe: only change filter_list_allow (switch away from "select +-- +2.51.2 + diff --git a/sdk_container/src/third_party/portage-stable/sys-apps/iucode_tool/iucode_tool-2.3.1-r2.ebuild b/sdk_container/src/third_party/portage-stable/sys-apps/iucode_tool/iucode_tool-2.3.1-r2.ebuild new file mode 100644 index 00000000000..75c903aa169 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/sys-apps/iucode_tool/iucode_tool-2.3.1-r2.ebuild @@ -0,0 +1,21 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Tool to manipulate Intel X86 and X86-64 processor microcode update collections" +HOMEPAGE="https://gitlab.com/iucode-tool/" +SRC_URI="https://gitlab.com/iucode-tool/releases/raw/master/${PN/_/-}_${PV}.tar.xz" +S="${WORKDIR}/${PN/_/-}-${PV}" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" + +RDEPEND="elibc_musl? ( sys-libs/argp-standalone )" +DEPEND="${RDEPEND}" + +PATCHES=( + "${FILESDIR}"/${PN}-2.3.1-limits-include.patch + "${FILESDIR}"/${PN}-2.3.1-non-x86.patch +) From 4ebd88c6fa7523d365e126c3e9b6fccddc1e5808 Mon Sep 17 00:00:00 2001 From: Flatcar Buildbot Date: Mon, 23 Feb 2026 07:33:47 +0000 Subject: [PATCH 3/8] x11-drivers/nvidia-drivers: Sync with Gentoo It's from Gentoo commit 9122e7b1437497f53d68d897ae6a0c3410a784a9. Signed-off-by: Flatcar Buildbot --- .../x11-drivers/nvidia-drivers/Manifest | 76 +-- .../{nvidia-590.conf => nvidia-580.conf} | 6 + ...-module-source-580.126.09-kernel6.19.patch | 18 + ...l-module-source-590.48.01-kernel6.19.patch | 99 +++ .../x11-drivers/nvidia-drivers/metadata.xml | 6 +- ...build => nvidia-drivers-535.288.01.ebuild} | 15 +- ...build => nvidia-drivers-570.211.01.ebuild} | 20 +- .../nvidia-drivers-580.126.09-r1.ebuild | 605 ++++++++++++++++++ ...build => nvidia-drivers-580.126.09.ebuild} | 33 +- ...build => nvidia-drivers-580.126.18.ebuild} | 70 +- ...ebuild => nvidia-drivers-580.94.18.ebuild} | 56 +- .../nvidia-drivers-590.44.01.ebuild | 567 ---------------- ...ild => nvidia-drivers-590.48.01-r1.ebuild} | 63 +- 13 files changed, 932 insertions(+), 702 deletions(-) rename sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/{nvidia-590.conf => nvidia-580.conf} (83%) create mode 100644 sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.126.09-kernel6.19.patch create mode 100644 sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-590.48.01-kernel6.19.patch rename sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/{nvidia-drivers-535.274.02.ebuild => nvidia-drivers-535.288.01.ebuild} (98%) rename sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/{nvidia-drivers-570.207.ebuild => nvidia-drivers-570.211.01.ebuild} (98%) create mode 100644 sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09-r1.ebuild rename sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/{nvidia-drivers-580.95.05.ebuild => nvidia-drivers-580.126.09.ebuild} (95%) rename sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/{nvidia-drivers-580.119.02.ebuild => nvidia-drivers-580.126.18.ebuild} (91%) rename sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/{nvidia-drivers-580.94.13.ebuild => nvidia-drivers-580.94.18.ebuild} (93%) delete mode 100644 sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.44.01.ebuild rename sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/{nvidia-drivers-590.48.01.ebuild => nvidia-drivers-590.48.01-r1.ebuild} (91%) diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/Manifest b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/Manifest index 584e5452236..43cd6221fa7 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/Manifest +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/Manifest @@ -1,63 +1,55 @@ -DIST NVIDIA-Linux-aarch64-535.274.02.run 269962412 BLAKE2B e4026c6ebf72ce7220a4dca688a349b27bdea518dd5eaeb3ecf153a246a8155775668cf3b2593b02abde747299cbae438e45af5c73c19627a93b6528051128e6 SHA512 a5d6187844c43bc56878d20b147ba36663db2c3b5f6ea31c2e84c364b88cac115417e1f2e073c9bf03ec698880921b6f98c1129b952d3156cf88c89156bdb046 -DIST NVIDIA-Linux-aarch64-570.207.run 290858757 BLAKE2B d04bfc5457ba3e2cf7e6bebf333c9085c83f1e437880d3a34ffa53e3ae094119875738893b4cccdb83d7699373c83d7d71182815a77ddd2834db9990eda28864 SHA512 90aac68738872349ead074e158193d847256b0a2f4d850e16a03aa165041aeb5d86413a6e3879253c90e4d96b3d624b839924a6f4f666e18903621154bdab305 -DIST NVIDIA-Linux-aarch64-580.119.02.run 313944261 BLAKE2B 18cf6bcfdb42597973e162d28ea45c45bdacfab0042789a8cc0572ff5896ffedbf63053d119c535e1c8fdaa43476068823bc684d5742b7f69d9965d518058df4 SHA512 d4926bada63b7a8e8bf430a45e4d98fda7b0a6b5f0f981258cf66752c64f022a3484e719257958779bd0e7371116bc8ae09f5724f53956c8299c3ec986d2b205 -DIST NVIDIA-Linux-aarch64-580.95.05.run 313379170 BLAKE2B 70431f394ce9d112afcf0742539289e399286ecefbdd86ad71c750acee21c3b965b435d77d54b290866a6c60c7601da5c8bbc2d6edce0b8e4dcd43d21ee2ec35 SHA512 e07b31824f7e6dd485df5c73e3a58f85962239ea20a92f18d82b9c55564d69309fe5bb279f39ed8ef152ccdbffc6d0fdf7bccfa3c794e4ecd9fac83bcfbb91a9 -DIST NVIDIA-Linux-aarch64-590.44.01.run 319562942 BLAKE2B 08547c7e4b746ab72f04b2b9f9fdeaade5057deb46d12c9a914e3e6c131a3b13a74a7713dfd6177e5a648f87f00935349f92814c101004bea3090602813a391b SHA512 95849eaba6761ba5e7435d8cb4d9f72b55e6b9e8d90b90be517f64b5d0fc329cffd80489b558c224370b869a11be13eb96ebb481a113b64b8bb24c48348f0657 +DIST NVIDIA-Linux-aarch64-535.288.01.run 269886661 BLAKE2B 9f9e994fcefd81e75db9a9c280668ad55423085e34eb9083043bad3f1317379ba14ffc9442fe94ee26b600f1ecf2e19f83708dae1c599b6a9df69d94ac3e116f SHA512 e8df9e97500a87d68e8c8d1f9601a8b37f2dd93773928a96b605a515d37e9382782cbdc0900cd6151923ae385045c644af3e37cc006771830ac0b0a532afb09c +DIST NVIDIA-Linux-aarch64-570.211.01.run 290912556 BLAKE2B 4335d6a6b7a55bc7d2717071c6be968b63c90932592534be8eff28290a8bf98614b37bb52b4ee0f9563a6f0fdacf6b0e8a04b8eedbe8081587962f3599209a88 SHA512 22816d8f798d6ce141ff2ce750b5df1ca4fef9b1ba79762157fd7f93c1ea905c74f421dc6ac2b7bf5b383192d2baa735d7a7d240523be815defb68be54c4a6be +DIST NVIDIA-Linux-aarch64-580.126.09.run 313588580 BLAKE2B bb98dc322fb0bb21a11aaebd2101528efc651ed833870326fbc4570f54264a4b536e8669351153817b47dcb81b9aeac88b7d664cf6971e5182b9d4203c453a29 SHA512 7ec0fd917bade1eb14b135bab2ade17a5116546190c3011379be7105404485016e26a5fb1ece5a4800eea39ac10c1abea19cc40be6f8f31188b3eeb78344a6c7 +DIST NVIDIA-Linux-aarch64-580.126.18.run 313585073 BLAKE2B 9cf8680392434126ae60cc4260f6a3ee44a74c8a5c5623e9990feb6b73cd4fc4661c2111214b192957ccc0c0e2623c3649685e739bc7440e36cbcbf4949bfc3f SHA512 b453b8aa9fa4fdaa1ce532f69a52317606d41728958a49f05e9725c093ebe8e90c65b5e5ad095ebcf5febdcd2d712bf0246ce06746078d8333c75bb7559b4245 DIST NVIDIA-Linux-aarch64-590.48.01.run 319634379 BLAKE2B ff1b0641f8d4dfc834d9627fa934c5491bddcb9e6f5396a07d6d7831c15e2ab396614ff1ab6b5af4a69b42b8c6a022215cc1e3531eca7ca177c9d940f52281ea SHA512 ec81da1a11dd9609427e40434cba69d7c0426e4d60cb5c078c66ec992b6dd44483df2c9dfe02deb4db3a815a4c801b3c42f6ac2b08f0506327f1cdfe5446211d DIST NVIDIA-Linux-x86-390.157.run 49417041 BLAKE2B 435b5e0e60468cc74b41cc5d9b5bb0105d29c11a2d408457835212a96519c9334ecf19278b36749d3ff7f498f5b0ae45a2efae2d428703dac21245c62f1efebe SHA512 dae9ac2c12f9ad90f7441e00e01a984147c577892421911d7f67f6a31e616ac1cb7d434bc9c7f58fbd9b8ae909521b5bece607a63c79588c0bb9d99c6bad5fb0 DIST NVIDIA-Linux-x86_64-390.157.run 85835541 BLAKE2B 44b855cd11f3b2f231f9fb90492ae2e67a67ea3ea83c413e7c90956d38c9730a8bd0321281ae03c6afce633d102f5b499aed25622b9bfd31bdd2c98f0717e95b SHA512 4780503a4cff0180b1b1f37d20a6ba3438dd78b51fa7f69b98d35521835e5d61099129746929d51d63afa2d47b672b3e145e1e1897584dc3799e7f822c5b3a0a DIST NVIDIA-Linux-x86_64-470.256.02.run 272850014 BLAKE2B 0fdc867f92b82b2a60810c3b43751cad7ac2c39928c92c6c343c0c6044f4d7d923d93b8599db3f7c999c0ee7d16940e65d991a61cbb30e1d9e49c5639ac6bdc8 SHA512 a837946dd24d7945c1962a695f1f31965f3ceb6927f52cd08fd51b8db138b7a888bbeab69243f5c8468a7bd7ccd47f5dbdb48a1ca81264866c1ebb7d88628f88 -DIST NVIDIA-Linux-x86_64-535.274.02.run 341804470 BLAKE2B 0d848295d8f0f8fe3b4ab6c0204bfc3ac26f75df253b6595137e99177e4ccd490e0c8d4330f6789137d906fdec317033e59b5f22213a38ef3c9daae2968f71b8 SHA512 cc89f84c4f8d76d8d1532e67630426b3988e778bc7474059231971333cd81d6a552d8f5ca329f9e3c540229bbc247b665d2276298e3c302975ab0f0562ddaafb -DIST NVIDIA-Linux-x86_64-570.207.run 376235013 BLAKE2B 76d2092705673d743f2e64136d2073de2004ea71b3fdde7dd0ae1e11fd5f1e0dd5174324589f2386dadb85c2d2992b62229575b0cf33b20137aab16d51b0c566 SHA512 587ed8a274af0a9a3f029951a1a86a16e1ab367c07e8eb928d17e0d4ad79f13700a9aef0b3a42bae9d14a832141e9b02b117636b12788b58364430335bff9167 -DIST NVIDIA-Linux-x86_64-580.119.02.run 397786077 BLAKE2B 2a57a0c53deaa1d31c3bb1ca53f05ab017cccdbdd95a99748997d2988359c9ff4f2cb824304b75e4288801f0882deeaef9712785b4e1c659282c25d610be089a SHA512 b773deaa58823d3907488527507df6831959c1b8215ad34e1fdf7025d318d9ca7610d0b103252252c4e4097ec97d4224f99a3e9701327dc15eadc66e906af250 -DIST NVIDIA-Linux-x86_64-580.94.13.run 398047606 BLAKE2B 9261ecf5c4586a22656219a1cc4e56966f0eb431c21b5238a0f6bab0a9691781cc5b879708d9e0afaf726db9e70f63c62948298c3fc7161a7f9e9f5a9d4cce46 SHA512 b64176d9729e8b237c9e982e07e12fde4dad8f4b3ee1cf73447eedb0566a4beb6417ac5a5f97744ba6b32f48c8d5d22b1076de0375bdcb0f53c4c6724aea494a -DIST NVIDIA-Linux-x86_64-580.95.05.run 396658958 BLAKE2B 7e23e5243023de357329f8f57b65a386306fd898a78c68b01d67a9572ac0d64b2d87c0cf3265c23fc4c13192d92060196ee173c34cb485a693035478cb3fc82e SHA512 21e8076f593ce255c8e96dd456524f700e76b230130659ed73a279432dd9f2aa60735411c6fc906e9f60882e905cc1c5b91aaf80d5d5e64d317b1dd27f6e4c13 -DIST NVIDIA-Linux-x86_64-590.44.01.run 416205886 BLAKE2B b8a4f02ce1b3697f45d5932606a8d9816e8dd38e4957b0d069f9759cacffb42fb741084009c012017e92a785fe9ff3810d7fd420f832873a2c890c7e29d5acd5 SHA512 8fb0cd0b09b3b997029e97314fb8b4f63a5b567c17d99b63321e72b3e002c5e912694c5049babae80e7eafdbcc966d46e50bb942ddefe3e9da28623b5b119005 +DIST NVIDIA-Linux-x86_64-535.288.01.run 341968325 BLAKE2B e37428855b41c295e5c6df66a029f4a1f6916af932a159587002c6b20b58c8280faee1a4fd6edf4791439df4da6bd21d18b3c9bdf300b3923f5dd30666f44d90 SHA512 8ccd90cc37cef6591412c9c0d3a48af9fe08bf5d715a2e8a9c0adab1fb8e72b716ec75c8b81bc0ac9d09d6f82fa8e01af144bfba5d58cfe7a524c47aa97ae6e1 +DIST NVIDIA-Linux-x86_64-570.211.01.run 376192072 BLAKE2B 56a135681eba576377106b5ee4bad4e0ec7e41e512db8e32297fbafe03455ee4e9e0dafe782588dd3832fde74ecfd9ee5858ec662f3dc2ef3f1e1dab7a9c909d SHA512 3e751d90a8f126e369c5167e2d5ba8b218dd306ccf00907290ae70fb1c3f752f0ad0b973ce356a1a24cd0f19c31a07169cfd5705613a6bbb5918881635650839 +DIST NVIDIA-Linux-x86_64-580.126.09.run 396807358 BLAKE2B a8b7fe16718a8f9ec6d93cad71e07c96d837ff612ae21a96018981fc904839c6d85dc2515c1d640361483fad59b5fd79bdae6a32951ec2f5db4a9115d24798dc SHA512 d5c41131304b29d55d0caf8cd84c95b454d81e68d7b23ca893504c63d84dd78726e2dbd7f076b7f12be518e641d110d131ac178336d61a00bcc81b7a1890799d +DIST NVIDIA-Linux-x86_64-580.126.18.run 396862844 BLAKE2B fa2d992d4f23beac7a10bc5d17695ee0c211e3afcb6fb9135f09b8eebed86db226b1cb4b9646917ab28f6127136b349fbc02deeecef2c5625f2be6a178cd268e SHA512 3007896838256c5534d7a04958f38f2837314b09d05e595966ba68789b0166fd8c1a574b29c8dd9ee5414822c9aebad9f9c7e5db777b811701fcac2b92245f0f +DIST NVIDIA-Linux-x86_64-580.94.18.run 397082112 BLAKE2B c8ca38518debb4ed7bc26114aeb375acfe7da7f63056f08a9422f8e785f8488b1bfb9a66410985e8f883266f0befcd5bcd08e6bd4e0489c31bdf6374abe42bd1 SHA512 b1141f13cf2160e25004c9147328e60afb48b17866c907adfe1db6730ed50163fe5b8ff641d180c4b0420c0f47c0928585e52bf23c196d43a375d7a9466f8fe7 DIST NVIDIA-Linux-x86_64-590.48.01.run 416273526 BLAKE2B 57bc232f3d5cc52b3ba7c097e5c04b0e128947b34f75c8c7a75135ebbdda565dd9ae829f3707cfef35a9b8b554f2b46a50756f6b256a0f0280c22cf9ecefb2e1 SHA512 31fd82af707dbe9a6d3848766925386f5e91c5fae0a605819450eb8e5a5a52eaab3ae5cff50b4dd36bc5c32fe1aabc29a6a79438d6614988c7b08f509ef0da6d -DIST NVIDIA-kernel-module-source-535.274.02.tar.xz 12513068 BLAKE2B e9f9fbdc70ee634dd26d626b0d5252e01c748fa8fc5b50af02a18f0dc75e2a40ced2fbaf24c4389dd207936849f6d614f18ef06ed35111ed26f3f6fce9017592 SHA512 4a660e08c03840de0b8d5bee079ff203a864131ed3eb4805e80da6c071b6953a6acee6d81788c4ea076399db6270e34844d5ac3898914195f530d2e0ef1c96ab -DIST NVIDIA-kernel-module-source-570.207.tar.xz 17948940 BLAKE2B 7573f8f3083564038649e0a7fe0feb1cec313a1950b06200198e0802b7f3553212cea2100f563659f425c139eefaf976bea388886180be895e12f7631ac86b0c SHA512 de2306aa80ce057965a2d2d7570035feaef4016a6d9e37f7ffb9f19ddf6e892ab8eda14bfc893122c6f2321e406272b7cffc84a053321650c29d3a25d359c6f9 -DIST NVIDIA-kernel-module-source-580.119.02.tar.xz 22236204 BLAKE2B ec10077a776bfc3d933461fd2f188070cbb653a18743fa6089a62ec39981f76b19e201d59df51f1dbc3db74ba0a6d88bed9272d0633b0d092e4eed6ef3f6d5d6 SHA512 ffd90759137648378b35e59cc81459d75853b6ff6ef60dd3de83c6120be32166505f7d7a25f88440f51929e24a9181dee4310d4bec006b5ed86a46581a9b13d4 -DIST NVIDIA-kernel-module-source-580.95.05.tar.xz 22215620 BLAKE2B 179e2e1f820840273e54b55cd45233c6b5e26c1eb80e8e4fc7099a1704820cfe761c17839befcb9ddca2fe7e85b7ddf62e9a51b912e1f300b02ee8941d6467db SHA512 183e35afc583748f5d5fc60970be7e1e0b99de40bf0e9428d3acfd56f913724cc8aa242a276c327ad11e09290818883c8045ab3319dc0e919201687359f7cdc6 -DIST NVIDIA-kernel-module-source-590.44.01.tar.xz 22515256 BLAKE2B a71a59a6c5abbc5011164444f95730b8d96b1025b3d685ea69720a3afa658baeb0f4a6d9d8180d79b76cfb9e972f47c9525dd61e86322a820d17ba6a2eececc1 SHA512 a63f48f1f3a52d973597f6f261e8d9849165a33d561b5e70b6b84bbec3b3a66029a49a1e710f68c70b853104349ab1f583009c8885b4d259be115da6e9ba36ad +DIST NVIDIA-kernel-module-source-535.288.01.tar.xz 12538144 BLAKE2B 597c58a62591e82b77fb29527d240bd2043b37439a1e7089ce5ab7ecb514ca3cae5be415aa4324f1156c08ddc1138c02e58337df5f38eaf7f19294773e4bcebc SHA512 b70d95af6737c36f8573d877a3473d38ecf3d7a4a35b899c38c1682888b455dcc60f6738ccee60a584477856b79dd25e6a10ffd1a4503c1d78a88902ba8329b4 +DIST NVIDIA-kernel-module-source-570.211.01.tar.xz 17951900 BLAKE2B d40d2c1b4a92dfe8da95e1000413dfb484c9c96ad232dd5db14246378f6df8e73f04706592a536025c3d5512d5e663e7841de8bda782e3611b4b594b9b107ad4 SHA512 c988270d3aaa707310c3924de83eb5f5bdc4d022d1666eb3f41ed46eff35e98a765d4d6d34c22c02ac507016bed3c34af1da2e1befc285ec9158031a4a1447e4 +DIST NVIDIA-kernel-module-source-580.126.09.tar.xz 22250272 BLAKE2B 218c0df05f9506b22281a575db566d48760a7ab3df7f2c4d171d5157f44979efb6f40e8aebaec26e830cf3495bf2366ab406919293d2eab6e543567c0cae14fb SHA512 1c62f12e39d827f1a9dc13d934f8d690e3cf3da7838f39044b1175b612eb03e2f452424f6e456fed81bfa448c8a2dfe94b58e71bff08c4e5d5d8c944c74cdb2e +DIST NVIDIA-kernel-module-source-580.126.18.tar.xz 22192576 BLAKE2B ed2b39aaed517a3a55633c6e0fc5605641bf85fcf370b1c8e7eb3950d3cf9112b6c3656ef3aff3fedbbbb769bb7f975a87f218b91c4131a9930cc04c8df27bf0 SHA512 810c596cdb40666b5dbccf9c1d358ef155e9171a489513f78fee73f48d73798fee0f655d8a9c994144d933ff9a9e0fc362f7c4918f87c8dfa9f00d30beee102e DIST NVIDIA-kernel-module-source-590.48.01.tar.xz 22530000 BLAKE2B eae57ceccc78f0730fc4962b20f08f270bd21960e84ad5985433590e5229403a74bfc2518540f9e2ef07d319d9cb2288edfbe0d5f7a27cc7e0903aa61fed388c SHA512 6fe32d5d1a84df0baeaaecd4a847ba73a89bcd1b51d5f9c7525efd2af891f6d5512c1ac97c8b766ba1d1103312c53e5406653589e22684df9260fd75977591a6 DIST nvidia-installer-390.157.tar.bz2 150323 BLAKE2B 8058ca87a6dea956d564af9f7eab9b1fc82b1f2382bd5cb2f6d97cbe2e19292533522d5f8f2eacbeb16520372715fcb72f8f9b0998962af5d4e75522c8d74524 SHA512 93a7ece648602157496c8e27a88864ede341a100f5328a4c1a25faf8f0b94d252060e5e2f71d0c302fd0566c10773c30b76b3b5f431d8039b71c90a7969f7d7e DIST nvidia-installer-470.256.02.tar.bz2 146269 BLAKE2B 4402e725c8fd0157eb84d4ec140a33f97e873014577487ef1e32fb8921cabe79c60ff46532e5bfaabb2b6ac894f7c80086dbab19e61906e2e27346fb85f98829 SHA512 c962dc17d9696256d1ebedcaeb3010994f2ce3895aedc47987599ebfec132a9b9a249d2ece6502b15bd4a93f9b0106aa13487a7da5f64199c274ce11eba27cfd -DIST nvidia-installer-535.274.02.tar.bz2 148772 BLAKE2B 7a70926628e137a0687acdc613a3afcd9fafab300e6c3ab467f9fef65c66911795a326cd08d49190870939576f358760b44949ba20df6060936f98e1385a2435 SHA512 c2a61bb9637d7fe9de89d7e3945fe84c6f672c8f16c4c12d513ba0b0679146321f4565be1266fcd5145ed7a0610cb59ae9f6fd7f7cf565f24e028272688899ee -DIST nvidia-installer-570.207.tar.bz2 169253 BLAKE2B 1364655663682923df7504e76ddf157f4c5368442e6e21541ed12c54c1c35ce97370307a751a72a3d2fb2dd878852106392ef5e8dcdaf5f2a42d29e26ad60077 SHA512 253f15603e4ad27be655fb945cd60180fe9272e394cf587227c95f1648f8c0ec91973e6a603135d82976c8a650adef7003a7e4fe8372f6df88c4b512a29832dc -DIST nvidia-installer-580.119.02.tar.bz2 169905 BLAKE2B f6a08292a824879266e75efbb2ae28f49a40799d0a2d3390d031e2259b419f475e50bc0effca4cc32aae76370bde79c4078f362d892d07b938092de90c28d6c3 SHA512 cbe597dfa8a801aae053520917ba90735ad03194b51d767eb8afcb283e2ae6d0c93690d1fe2ec7e24b896680dbd8c53b99f246c3de6bd94a2588e4773ec82a27 -DIST nvidia-installer-580.95.05.tar.bz2 169558 BLAKE2B 5e52aca8950b83b2a0366fc39dba5b89d22248ced974807f33dababfc06b41b5c40ff238552e61fec54625a6b2bceb8401ebb4fb69b47e33e565058d1796cb9e SHA512 1f20838f4e20d77c9596aa886f53bc4abedfc5e5634665d3bd571fb920013b2dfdf7dcd082b0cfebdf4d104e87203965cff6a04863f9b0bd43f9e25264217578 -DIST nvidia-installer-590.44.01.tar.bz2 170890 BLAKE2B e6bbd5f862673217dd4359533bb3c275c3319af69b2a912e43ea5d1fbb0cde2434c0decf2330bf3ac94d78cbd21fcbda6c5cd7e1b34bb44dc6313be3257072b7 SHA512 558fcb1984a5a399e7b388923f43821913b523cacd8a4496c05db92362b270f6e58bdb838be7f5ebb02bd3422dd43cbff952f3ce506cf7fc0c42b5fc92d3b3f8 +DIST nvidia-installer-535.288.01.tar.bz2 148906 BLAKE2B c559bfaeddd1af6c72647fb2e5c46638817339bd59ced80bcc6acfa14304f5ab07123aa0e43d18feff5d2582f08ceb0f84d2b97eef783bcd833c12f751e4c945 SHA512 b5d92a68b39a11709dae83ded0d9b860f9ff4cef514a1eb957305daf80d4354a272a88e4a58db61547b0073e57c2913f2dc038c2d51b2eb649fc9ae25eb42954 +DIST nvidia-installer-570.211.01.tar.bz2 169330 BLAKE2B 100cdb3e0cccb19e3bbf69d4289d079a64cbca95fc20f4d48179190b5e61cfdcbfeb5b95c381c70824c185975356a70af4c89efb53ca0cbc5c61fc95d974ca77 SHA512 90efcd442feacd7f9d9bf25fddb77c521b2e7c79063703c320ce2bbd50a5cce950b0937ec926e89081634c6606c18861efda0e6288e24fab5ee31cd5d52d211f +DIST nvidia-installer-580.126.09.tar.bz2 169652 BLAKE2B 664354a67b56f3fbf323b7231b73c7af3510ec4b8f00533904e0771c6c76dfe98855cb7348bf177fc4902109519d1803ff8074f1fa2c4b7b0b007e459b9eb743 SHA512 9cb0be263204d6a90aeacd694066c12790d1dd513e40deef284fdb979e4227764fdf5e7692956cc08d4db270f17c4c7a3fa53e3033c863ec652fb4f48c33a8ef +DIST nvidia-installer-580.126.18.tar.bz2 169283 BLAKE2B 87e64a32358d5547dee98293b7a507465d1375bc1262f011d181112aa4d3f2103b2820587d688f92cf3cc8f6bf0e120e695998d47ca98de9c950c16f0428b0a9 SHA512 54bb99cd8b17004f7ed0ab87ef781104410d6eb57be2789c15550fbb2215473cc1180410c8dd2b2f75af3132c1047eeb5e906f45fcd7d6931dec3b1bb1db9d9c DIST nvidia-installer-590.48.01.tar.bz2 170826 BLAKE2B 450bd298e6c574ae6dc085714c130984058f6e606c3de628c5adeefddbfde3bf2e025b1e422948311e9e028cfbc6e8d4c68a22a10d30a9a28466f3105aa7c13c SHA512 4c776ad602594a5d2ced2570fd26b51e5fdf5b7613c43263a7f647a5d3d550c6c35960a6cd8884766a71f0b34c397e7d8bd0507b84043cbbc1c04a82ec067932 DIST nvidia-modprobe-390.157.tar.bz2 35306 BLAKE2B 80d202b39c2f95ec0f909712c2e101483af50124092c32efb33bd98ff58ddfb97b737ff07f1ddc941f688c1b4c26a15f392566d522e18506771f10422fcd571c SHA512 109bbe24a3758b568ea65fe1e9d78f69fae6108ec0497b796c885a3912825fe04ffd7389a3e22987f1a10a2926bf6eaa384faabc59478aa3ee244dd3ac91c6d3 DIST nvidia-modprobe-470.256.02.tar.bz2 38769 BLAKE2B 0db444b09b0b6d24c04877fae95249e781d82b3141f90eb05d869b64d2b6e65ad00bf44c4e427c64dbd4765fa99a8699f80a1d95b00c66137a54dc878d7ea298 SHA512 c1cbfa6c8e188e5a5eb5d390b9a903406cbff103d212fc30e611e4023be3fde896ad84e8bb45b030beb5d1bcd8155c9e55a8f9636c45ce1e2a5c03f672989a31 -DIST nvidia-modprobe-535.274.02.tar.bz2 40749 BLAKE2B 85cab6efd924d6a10a1336334ef2b3dd7005da9315518b59a865feffd889aaebfe428d142dee4cdc03eb4f77850c314abc1ba1b60083d0339c2466ed3c30b220 SHA512 cad7dd263ac430457fcb2a1e8659f53d436e2c46330ded165698c5b8ff0a52795edc837f724178f5c929e25aebf6c6094d14eb08e9469a17bd1673195cbc849b -DIST nvidia-modprobe-570.207.tar.bz2 41621 BLAKE2B 84b84be1ace3554be45b56866ffec617e4d4c838889257fffe19fea5811414cc417b7d6e297b32f23e0c2ab092ff911b3c7d04de168c84f4c9fccbd52be69c8a SHA512 d13dbefbe730a9aca3786effb5c7b361b5405b687bd17096b5815756e1c58ed265250b0faaf99da4fb29bb67c7d7da7d4d4609d2f2be03d8a9cfaa74e27cea5b -DIST nvidia-modprobe-580.119.02.tar.bz2 41697 BLAKE2B ccfa263a8e7b2a069ca8a2775b3c62816f3480d2cfd67bf2ca229dd8f7a56b0217eb03ed45ee8155c11c3c44b91c7533042d4a147242c9edc2c7656f2fdd6f68 SHA512 e4b83c88a0dc5978d137b37c545c5100681b32030333d6cf47ef7ab0f15ff8f689ec7a615c01650f0cb89932a91db0745ceb1e555f4c958b2a31562712185582 -DIST nvidia-modprobe-580.95.05.tar.bz2 41708 BLAKE2B 17988280c9c54fdc86dcf757903f18f83d1eb44b25a1386f8cc9bf098aec87b77c52bd3da9ea77511716c678e4354e8a40bee1561a953ed56eda350ab4a3e464 SHA512 67faabda2388515fcad71ffc965c7506156116f4e020837da33b0f17bd30aa05cd2d28a54711990684110133ad1a58a8db5473f58f2e5e587bc8edf5253a9351 -DIST nvidia-modprobe-590.44.01.tar.bz2 41704 BLAKE2B 224db886b27160e65f4b36fced5ae2b1915daf14228c1da613351cccc0669ac2dcf528bd5c10e105fe68a42bc981c44a7c6bad261e29cf286f5c52a8d4583305 SHA512 162b6106c6d98886f374c3351197a3239b416f678524f08e9e8490979a36df74d6c7c0a3d18c5cdb288d2492bb39d1ab43251806cb83bbd90db61d6f98e9dc00 +DIST nvidia-modprobe-535.288.01.tar.bz2 40729 BLAKE2B 60a8a22bcbaefb4d7ab1bbddba814939078b88a0ffb3f3fafece04910b476370f5e1f38878b1c0f109abe4449193dcbfcd308efadd03d28786b78dd2eaeac75b SHA512 0acb8e676fbc230978b97302df98450ee11fc7d59927c46643a8f92d5aec99a5d1d1bca861203a013cfbc61cadf89ed74e2fa999932264b833e3b5a53d42836e +DIST nvidia-modprobe-570.211.01.tar.bz2 41631 BLAKE2B 953113337b742ea246bf24a47cbe679f03d89ecfa48a655f179b0913dd7d9c1742f4b1bd765c4d4263c9d45c352de87bff9f0a5a2c3aa48c86f221177cd5d1fb SHA512 c1bbba303b587f18e824cd2dd9a74341d5a03ee56c6adff67bb33c4f65ed16742f094dca9457a04d68b676c3671756e47d996090523827f42c8780329988e3fb +DIST nvidia-modprobe-580.126.09.tar.bz2 41685 BLAKE2B 6024b6ecbd8732c98892c01920b633de6e96316d63d80570befb7cb35078349b6737371592d92ac8d60b3662454a9bd5f6f9be8023a614e6233186b48204d8ee SHA512 fecbebeeb9add103726bab211f58d1f4afb85cb47affa960a19e057c78c7ccf975b8e32043591a6e9c93402a8ae7f7232ba3b5aadd4f30e2f531914bb4787c43 +DIST nvidia-modprobe-580.126.18.tar.bz2 41651 BLAKE2B f2b8c639e50841f844e32ec4e41381af034c99ec81250fec68d7a79af5e61b005fd43c802d2dc9983f74b9816b8f6996b2580d21aca21ba3dcf4097fdb6dc11c SHA512 a179eb37f9513f962976d58c16417f90e6b51d43dacbed720d05727f1d6404dff1f81b4206dc913161198776028636187fab6812c2ec96fa9cca70d9e63c0652 DIST nvidia-modprobe-590.48.01.tar.bz2 41660 BLAKE2B 0780a1aa529d95323b37115efa529dab030cbea589a03ddc70460f4176e7aa88388401ce8508a093a2e9a0ad406589e9e94ff0391021307e879cbcacec8b6759 SHA512 805a70d5012fbc26af3787104e39b3626b2ed7d53a4989365d2fbf6926daf817eec1dc6b7cd50dfbfe29bbd71569ac3095f0a37cad2199994dbdaa76720d8fb0 DIST nvidia-persistenced-390.157.tar.bz2 48654 BLAKE2B 2cf6c92da90acff55e8c180a06b0c6a29d48be9fd8ca3c541202fd14f0697220fba6b66452942aa7ae7cc8821f5c5eb9fa8f7a31d2248624e5f9141d83a176b8 SHA512 70f0707ed6f2b877e69ef90cf782f66cbc9d2071db53ca09ceb7b89427b0fe176708517340621fa251539b7d481b238adeeb60261674eed74de1f62db6dbb72e DIST nvidia-persistenced-470.256.02.tar.bz2 46567 BLAKE2B 8f837322a3b88412fd2f6acf38721b49a6cb444fbd842d652519e5596f2e545d8f06bbdf017f46a22301ce87455f96147fab2829ca5fbf26131ec3e4a772e282 SHA512 4fd19258649b7d39945fb5c8578bf11ab118617dd14f3d11cdf15cb3fe77daf7b4719e4ae57af59031b1b809d02f4e8e8afed0ec60b9d0aed4d2488bd3013cd9 -DIST nvidia-persistenced-535.274.02.tar.bz2 48596 BLAKE2B 1f87652351ebdca97b1b145e421abdb2381fe9d824ebde12eb60983cf8480f60dc530337fd2a47d5120f3c77a6fbd895fca2497dacb31ed234a9e5cb357703c4 SHA512 2e8e3929039af7f468a4d43ea5a6452aba86fd715d229883212b9223603d0ecb7417380354e70c85366b173905708947f3bb1919e09382f69a62f502f7c6ae7a -DIST nvidia-persistenced-570.207.tar.bz2 61835 BLAKE2B 6dc810a183dd37f33b7cd2e9dcead6369adfffe1e2e85b40c0b18a72044131d1098be1e06550ac3fff39706aa2cff348ccbbc243fececef9de8147997a7cc98e SHA512 c178ddd4125c6002c414d14c162f272a144fc0621b6c51916bb8304a6fd7658cba6f1cc175fe65270b589ea8fa529531dff99ff3ac5336cf2f0f53775e07d7ad -DIST nvidia-persistenced-580.119.02.tar.bz2 62213 BLAKE2B d88ded3f8b99f975e71a6474f24f6e0179cc6a58f862b5796b962c8119a9c3f672a5a26a6caf834b8a27693ac2e394c85710117cb1d75d60963dbf41aad23c80 SHA512 052af6bbad837821ae50372595a14df9140fc0ef10199ea4667fd6fb1cd6524c84ee0570621f5e63b7234ded9bf3f1093402295752af3732bfc59176339515cc -DIST nvidia-persistenced-580.95.05.tar.bz2 62343 BLAKE2B ad5a8b185accac6e8488f7b6d138e71db783590ca3b9890a1034771977b2f598c4f920bc48e65dc254b925e71d7f59e935cf1e43c90982e81b48266ac5da4171 SHA512 624c052fd7e7aab74e86c07ab281448415f9900cade11c255f7b6907e7de26180513e83d7374b4a823ab431a0ce2c5a74ae51f8de3889bddeb959ec73c373605 -DIST nvidia-persistenced-590.44.01.tar.bz2 62203 BLAKE2B c656171144f8bf0c209a7d34813040ee3c19128520d07d72e46ad54972982b9d1ea9999bb31ed30b3f6479d1a8ac9c2476eebfe0cb71e41bfe7b062c1f8dc132 SHA512 41b373df321e58bb196b46ae0eeb83c3514f562fcb3ac0b159ea82446ef4e759a8a7a9952248b2fa28dc5294ecb2ad390c815933a05b1cba49023fb4b721b660 +DIST nvidia-persistenced-535.288.01.tar.bz2 48600 BLAKE2B 025d2d28a078354898a501eef857d496e504279e45ab2b167a4abd5345d50e8effa1432a46da7ffc0276faed5698fb02afec21eee810335daac638e4656d7ce8 SHA512 b92c96b12346d8e26321679ae51532e8d28eff6c2998b6e781ea840eecf022823e47b48ac0c918c1069eb04a601833c4e70c88f66eb4891bdea2a85666597d90 +DIST nvidia-persistenced-570.211.01.tar.bz2 61779 BLAKE2B 02ac6f53eb4c053ca894f79b49d2a4b1b1f8e9f1a349053794542e72112bf0fab87aa2ee317d486758aaf77811c929d0aa8fbbcef9de8cc59836445ef845cb7d SHA512 5cb8feb56bf245e8e51e65d3d6d31f2b588e7b84ca29330e564d3c27ab37ceb67df0f80f8b37dfafb49a9fe8d7fef6b26d6334c6403902737298e8f3b23d1cb3 +DIST nvidia-persistenced-580.126.09.tar.bz2 62240 BLAKE2B 980dfd0a2c852c97e246f36f69c984808ca01cdba299b2be51a2cd7e5125d56a98280a003a32ccaf6873afc3183f13aed0433077aa399475fb404e5d7811b37c SHA512 b6699cafb543d958911086c6773f7ac1ac3c32bb20b3a88c92e029f303f48f8daec7338cf080bf74ff97f26f4c92f640c1f51cf95fc9a601e666317fadf882ea +DIST nvidia-persistenced-580.126.18.tar.bz2 62246 BLAKE2B 2dd91f79713631afebd574bd3eed8fe2867083bece0ba9f57ffc3d41221729e39b2e04a2514b137c7a9407b0cb9569de3dc0c8f5ae78f9a15c78600c6feb8198 SHA512 32394ef4922b466a56f666ecea913831338af02a9768b85275ad1bbd9a7f75379e17597828412a4080a0dcfafb7e9bd5510d6244539594ca60a22a541de8458e DIST nvidia-persistenced-590.48.01.tar.bz2 62193 BLAKE2B e6f03ce2f24f1ddc6b1dc9b7a8dd22de4541d5ec82f85c58943cf48f295e7f77555765b01edcce1c7f5ba67580c51273de8b8200d522c49e2321cffcfc8aeb6b SHA512 960f37355e58da20af92f0f0df091709623e32d9ef4eaba34d1f6b52f71227ac7c3a7f84aec64460952fa32986672f9373774ab1e65149ed426c59be47d7f2d8 DIST nvidia-settings-390.157.tar.bz2 1108938 BLAKE2B d9ec1ab5d7f157d74627272adf752a671dd17e2ede02069437b6180b927fe315b15cc6416d584ab2f038b76fe01e5b64514a834f24d88ac16676e55205fdecdd SHA512 b16699009bf56a1ff3b623a528c58061c4f5a2c5c4a373756a07bcd667743a1df7c733a572d2d0baa835a904ac2fda8a5c85890dcc00c3a0f223e0467aea902d DIST nvidia-settings-470.256.02.tar.bz2 1062273 BLAKE2B 8e66201e7861469b12932595ef8f9fd29d4cfd570c2576ae7fbb7383f61c55ac71fe721cc431e79d6d69f86d998b5b4c3cafe531b573f439e6b499b0fc047a19 SHA512 626e66118ae2e62eacfdf44e37529c409b945a6f33637b9690d74abd87a2afb581aaca5f90328d280da99ceb659959d0e5dc5c22ef8013b2205b2b1c72e08007 -DIST nvidia-settings-535.274.02.tar.bz2 1094628 BLAKE2B 065eab7e3a6d2a38e437b133eeebddd647467ecfb110f1f356a37df2309e738372902bd8ad7cccb0643da0ef0a310536bc336e8583bf2a9058d580f4795a4b92 SHA512 bcaff79ebf66197a4228c6cda17995f6f0d1a6e8f1f156b907f5e7d7f06bdbf318b4fe084591e3f767ba4efc3a0986d2506fb4775ee09613d2c8f438762db1dd -DIST nvidia-settings-570.207.tar.bz2 1124342 BLAKE2B 7a1725d7ffb81df4d6d32fb4732aab44af5a84f8e42546e162924ec45fac06075e27748a2bdedfddddb8abf3387c07a79d8d23a7fea505f5efe213117a90ba08 SHA512 ed8a250c21f6fff50c6ebac6b6dcb016ce29bfef602ae57e4df87082e43640746bd900aef52c60b2415a23f658e3a8a5d3336c4cccaf9efcfc97d089bed11e8b -DIST nvidia-settings-580.119.02.tar.bz2 1132592 BLAKE2B c36458c81a9392c94312d0566c67ebcc60b11551211c1d0605cd45f2b01aef406d1ad49bb448a98daed47d53cc13f4d5cc0a2ea0ebdb9d34edebb772706fbd69 SHA512 34ef7943b3edac7f3d8bf8f191ba2c65da4d14307e053216b70bb0573182df0630a243f390d0455255a84d6fdb88e93dc886eb4edb49f31da5acdea400579089 -DIST nvidia-settings-580.95.05.tar.bz2 1131496 BLAKE2B 5eb45787d743319593ca36c6d95fc9e93a020615935211c627dbebccecf92b8dd7d28c6d63a95a07c8cad1a70a65b0ddcc0040564ece0bf3383478ae59bd3aa2 SHA512 8c60d4df230e253d5fdeda972f0a8a9285ee419fe9be34aa3d25c06d4954bb9b6fc6db789f3a621813fb817f6de6fbdec6d79f70d519f1ddcb6b25b8378d6480 -DIST nvidia-settings-590.44.01.tar.bz2 1134395 BLAKE2B b7a8a6f543f50bb2c399c45eba3cda4459518366868938f904a64412e83fca813cf6f545713c7dea2c9c8ac671b99192ba9e6e96c91fbccf4b4f8974a7a5471b SHA512 8aa2987381ebf3e7c8cf85264a4482368578ae28319edb53c1be70130faf27a62b2fc291225c503b499095c05c4a50d0d2d6845e9ccd080395b511a6ebc474dd +DIST nvidia-settings-535.288.01.tar.bz2 1094513 BLAKE2B 8b7112b44bbe3445b63ddc245edbdb717436432482e9f87398863ffd08c520b6ac3527d3d47a75cc7e0ddec3931302e3029ccd7050db1abcc317ebf697284e01 SHA512 f1a817d9463a928fe47fed14da5d1bc0b9cbe0a910cbf01fca0d4edbee0effa989ec1cbf34e0aba6cc8516cf7bdadbc60ee6f0e4178e3c6cfb78301a1ef5aa8b +DIST nvidia-settings-570.211.01.tar.bz2 1123957 BLAKE2B 7355319d29f96aeeada3cd1ffd08b053fa76a5f2f0dd35fac383ff5c1ffd4abba95d0a7f0f421fc4b74a11f2c94352c9e2db363034e5361a0d18017a321261f2 SHA512 8f29c02597eedd934531e703c617aaa7504effe836257de07c664145e07690b0b34b8c893c01e9e561bf90cb3c15b1b6c116e2a7a88ea1a733f2872490c10441 +DIST nvidia-settings-580.126.09.tar.bz2 1132737 BLAKE2B 9d32e702265c8802fee8694cd5b1170c4c19dce8e5c33047376368492a6b531ee09b9aaa81617db5b48dde6e8d1b34f5010fbe7e720598997e68f754c5985b05 SHA512 57ae5968056fbe5c76a2a0bebcd42c5a530874c787be2439ed7dd0e916dad20b1151f9ab91073751bbf0bbd344e70d32598ceec03344691a7fe2812e8a3d1c19 +DIST nvidia-settings-580.126.18.tar.bz2 1132578 BLAKE2B d903f91d84de3f98fcb6c32601c77297ad8cb34e74dc5719a36e5777a4f2003207f7ec3c41defaea4b26af739099a84648f994720db700090b81f7980d3e7cdb SHA512 6980829ba2e4517f0765b3a0321e408182627ed4f08601b9a44cbb7fd35bac46ba6eedc890e585ac9d1feb971fc0a0f3ae6992f3ee30bfe496cdec97ef4d6f30 DIST nvidia-settings-590.48.01.tar.bz2 1134292 BLAKE2B 901a3bad03d4eaca3f78afc154539f72aa882ae19052b43b6bfb267a3be1ded4af607fbc05d1a379a8038a22fa5a9c19dd6c393f3436cda97cc7049820f1ec57 SHA512 c82737dc8894a35b7e87afd99fb98c0a4093ec8fd48590cc8e09154d55f948ceaf48fff31c7d015adcceab31a00c5ec4334fe1e90aec94c4bb076118b789dd4c DIST nvidia-xconfig-390.157.tar.bz2 107399 BLAKE2B 0cbb3b1ba508ddc3ba4a161c290b31bf7a67f67880bdbd01171a962c5fa97ca945b1ef17932403f8589309380743f1da632c728d8accb6d4e56dbd895e7486bb SHA512 50b390811c9bf091b14add41f886925b17496b41006b7d3981d2398caa65cf5db8a579c8cebed78278384bf3acc629befb07b54339c61abcc75852c0dcb8b8ca DIST nvidia-xconfig-470.256.02.tar.bz2 108698 BLAKE2B e468574e4bc57e7279d4120e2b08a201671b50d408be0c530eabe5da7d45daaf21cbf5c7fa31410d0d732fe8ea1551cbfb21d1ae193c1b3f5b5c50c764c9e236 SHA512 9dcec1e0c2b56b4d38a5f2c76086302f8bc0860cc15012cce29c3a5062f801a48b6a2bb78344361b07a2717b58502783441a2daf402d9973a17526175b1f15ca -DIST nvidia-xconfig-535.274.02.tar.bz2 111008 BLAKE2B 4311cf01a7224a0fdf2d8730b2a88931d53916cd627740e6e8e73dbbd29641dfc32721c9886094799953464a69b80aa1fae1d6cf4b203c512ad65d2ae7f5356a SHA512 6c2d5e068f1e6d1c37041b179203608144797893e31c99133e1189a31e219176b3e032222d935679f4c30a79cb960741cecdaca0b552feb75eb10366aa9d66fa -DIST nvidia-xconfig-570.207.tar.bz2 111226 BLAKE2B 63ecc5f170fadb60fb841727799a31a4bd5a8465ca4b890d1d959a3559fe396ffd4ef4d9f0f79abbd59114894411fa584e1abb3e535d4ac47421480a40d5b4f3 SHA512 4250eef4f367d2d2a7e99cc393c1c738fb84240248c482343acc2b3a197d3c2cd7668c455d5d64758d83823dd17393d1699bed13ac9f8eb05b4b62150a2dde57 -DIST nvidia-xconfig-580.119.02.tar.bz2 111561 BLAKE2B 8e23563e05168de19f616c2fa7aaa69d626c9d21c3d7f7f876f60a711222779d87c1bdec7203bb9bbd401f198c0e1ea87ff586077cb7be78455722d1bef90b3a SHA512 68ae0de9adf9d33ef8d4703d508549a2268be5c11668cc067848b86fb920c428fb83dbb31a8497ccc9edcb43b2510b3c36bd7b4ded3a2cc0f022f372af418b29 -DIST nvidia-xconfig-580.95.05.tar.bz2 111488 BLAKE2B abaf3fa63c19129df539a1e0eb4466ff7b8ccf81527c69b6bcfb16df2abf0950541791ecca130ff59ec0028a5a92c1a0912bc1d35a48efbd331a58f224699db6 SHA512 4fa0d411e8c41ee5f24443ef9f88a261c006b5b487f6745d54eac27805a8a810ef5ffba1da3952a39978e1ccfe39114399722e392d282791a648c69a88b7777e -DIST nvidia-xconfig-590.44.01.tar.bz2 111036 BLAKE2B a8108784699b6b8e507a916152a2a02918db4da1f0ee24d4e31dbd1de779bef910f69fbfe0414df33d58b0ca1656f2d9a6fd4796c472078b5d919a14dd0b42ff SHA512 85b64c0fe5d6633b3aa95276f521b828b98278376b5be428080e257752332618867ded6805e8b50cbe9331bc4dd9fbdbdfd3c29e46fed1da890a993acbb3f613 +DIST nvidia-xconfig-535.288.01.tar.bz2 110671 BLAKE2B 94f8f5c651df7d43de308938312b2c97e8a0292a2575914250e22dc62e139cba36be038453d6f1688e8ebb90883ce0806424eee7ca6fd3a5cee5e9884cfc8d60 SHA512 4368625df5eec5ec8296b9f561a8dc32fda958fd4ea37a4bc9da42303529d6366b41a028d2d9614ba0dcd029a3a5740c15e4fa1febec31da7df51b0b276a831c +DIST nvidia-xconfig-570.211.01.tar.bz2 111263 BLAKE2B 9d6e7e973156d91ce1a213a95aa31269d811024ebf358dfad42c0771cafc6c4f2d4257994d67e67ac637a1107527511d8f8219446e9a57560bab8ba7d4d2684c SHA512 8e8be1e95998fde590bdb5c0246764a426d623c8bf9e705e7bff649f1daebb86726cead4add570622e34aea9a38b697d31d11d7a2fc741dd91af2ccaaa024cd1 +DIST nvidia-xconfig-580.126.09.tar.bz2 111541 BLAKE2B bab1f4347613ffe30ada9df4fa387a8426f4c829c4346cdb57cfa4334f93b2048b1296033e8ea79c1a5210ae8021ab5e4aa7d8dcbec216a886f5be14b684fdf4 SHA512 810e831e2522029e82e5bde1eab9ec641da271336c430eb2ce5645e7e765f179694fdb93a41e49ba2c951c0b0edc2fdffa77d088e9678ab206eabe45866c6c09 +DIST nvidia-xconfig-580.126.18.tar.bz2 111880 BLAKE2B 669b02a4dd3d3b08937f67f7812ac6b4f715d471526b3c5178623699fff2b89c596c199d1b8fa1837bb2a5c784f8adf68d1977686da8c586c5abd3f8b49d71f9 SHA512 769cff278522fd3a5435d0b2c31c627f4091be996f2e13ede2df064e025a32cdbe6818e5a81e86a0338a6e7b9c96b9aa4bd7d8a9ff737f738a46f0be63c9b90a DIST nvidia-xconfig-590.48.01.tar.bz2 110986 BLAKE2B 6ec7f5eee2ca4c4a96f0607ac94ec3d491137a0e8750a6ae4c46feddced61f7a8b1eb77aa333008a69ceab7ad071671b7449bb2ed9ba285359fd1cb991a9c9b2 SHA512 e85dbd9ba5e056fb6f8a4618df35fa1692d0037e50122a5659ebda043a9b380fdf72aaa56f82b64e5525c36f429ed9bbd7f0e319c608f7c50355d47ab3b24077 -DIST open-gpu-kernel-modules-580.94.13.tar.gz 23297773 BLAKE2B e694d81d489de376664d3e3afac2c127b4bac9db0a255f04a1a4b48ecdbf52e23d6523230ece371a30beb4699425d30f8c627bcf8c33214f87f46eddf18922c7 SHA512 03b150cc425f23bc9f567ab731a139379508e1368ed2ea7323ec9ab5fbc91839fede00dadbaf5c21ba2c3f0ffb5cafde0bc7871db1512838dd8b8f85c3a5fad2 +DIST open-gpu-kernel-modules-580.94.18.tar.gz 23301123 BLAKE2B d05530e8dd763a5305a20fd7a47a99f5bb9088cee68fc023f00c94c48f6477b0db504fa95f3ff1262d21cd57b05af529341bebfc69ec3ce904ac0315d424b0f7 SHA512 71fb699c57061d226ddfc1e8974c9c3f50d68af651e0d56afb425482b35c8892c67f60f9a41bde86e3f6d93b15bb8661d1f57b55b0fc18c84a6b8775ca5328c4 diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-590.conf b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-580.conf similarity index 83% rename from sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-590.conf rename to sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-580.conf index 5ab27a9e9d6..36d71d1664c 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-590.conf +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-580.conf @@ -17,6 +17,12 @@ options nvidia-drm modeset=1 # if need to troubleshoot issues, and re-enable if unrelated. #options nvidia-drm fbdev=0 +# Disable use of the GSP firmware, only an option when USE=kernel-open +# is disabled (which in turn disables usage of Blackwell 50xx or newer +# GPUs). This should not be touched unless it is causing known issues. +# Notably may be needed to get Runtime D3 to work with Turing GPUs. +#options nvidia NVreg_EnableGpuFirmware=0 + # Suspend options. Note that Allocations=1 requires suspend hooks currently # only used when either systemd or elogind is used to suspend. If using # neither or have issues, try Allocations=0 (revert if it does not help diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.126.09-kernel6.19.patch b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.126.09-kernel6.19.patch new file mode 100644 index 00000000000..bab13eac328 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-580.126.09-kernel6.19.patch @@ -0,0 +1,18 @@ +https://bugs.gentoo.org/970010 +--- a/kernel-module-source/kernel-open/nvidia-uvm/uvm_hmm.c ++++ b/kernel-module-source/kernel-open/nvidia-uvm/uvm_hmm.c +@@ -22,4 +22,5 @@ + *******************************************************************************/ + ++#include + #include "uvm_hmm.h" + +@@ -79,5 +80,7 @@ + // function will need to be revisited + // +-#if defined(NV_ZONE_DEVICE_PAGE_INIT_HAS_ORDER_ARG) ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0) ++#define ZONE_DEVICE_PAGE_INIT(page) zone_device_page_init(page, page_pgmap(page), 0); ++#elif defined(NV_ZONE_DEVICE_PAGE_INIT_HAS_ORDER_ARG) + #define ZONE_DEVICE_PAGE_INIT(page) zone_device_page_init(page, 0) + #else diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-590.48.01-kernel6.19.patch b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-590.48.01-kernel6.19.patch new file mode 100644 index 00000000000..0b48d877323 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/files/nvidia-kernel-module-source-590.48.01-kernel6.19.patch @@ -0,0 +1,99 @@ +https://bugs.gentoo.org/970010 +--- a/kernel-module-source/kernel-open/nvidia-uvm/uvm_hmm.c ++++ b/kernel-module-source/kernel-open/nvidia-uvm/uvm_hmm.c +@@ -57,4 +57,5 @@ + #include + #include ++#include + + #include "uvm_common.h" +@@ -2141,5 +2142,9 @@ + UVM_ASSERT(!page_count(dpage)); + UVM_ASSERT(!dpage->zone_device_data); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0) ++ zone_device_page_init(dpage, page_pgmap(dpage), 0); ++#else + zone_device_page_init(dpage); ++#endif + dpage->zone_device_data = gpu_chunk; + atomic64_inc(&va_block->hmm.va_space->hmm.allocated_page_count); +--- a/kernel-module-source/kernel-open/nvidia-uvm/uvm_pmm_gpu.c ++++ b/kernel-module-source/kernel-open/nvidia-uvm/uvm_pmm_gpu.c +@@ -178,4 +178,6 @@ + #include "uvm_linux.h" + ++#include ++ + #if defined(CONFIG_PCI_P2PDMA) && defined(NV_STRUCT_PAGE_HAS_ZONE_DEVICE_DATA) + #include +@@ -3000,6 +3002,12 @@ + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0) ++static void devmem_folio_free(struct folio *folio) ++{ ++ struct page *page = &folio->page; ++#else + static void devmem_page_free(struct page *page) + { ++#endif + uvm_gpu_chunk_t *chunk = uvm_pmm_devmem_page_to_chunk(page); + uvm_gpu_t *gpu = uvm_gpu_chunk_get_gpu(chunk); +@@ -3061,5 +3069,9 @@ + static const struct dev_pagemap_ops uvm_pmm_devmem_ops = + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0) ++ .folio_free = devmem_folio_free, ++#else + .page_free = devmem_page_free, ++#endif + .migrate_to_ram = devmem_fault_entry, + }; +@@ -3149,6 +3161,12 @@ + } + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0) ++static void device_p2p_folio_free(struct folio *folio) ++{ ++ struct page *page = &folio->page; ++#else + static void device_p2p_page_free(struct page *page) + { ++#endif + uvm_device_p2p_mem_t *p2p_mem = page->zone_device_data; + +@@ -3159,12 +3177,24 @@ + + #if UVM_CDMM_PAGES_SUPPORTED() ++ ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0) ++static void device_coherent_folio_free(struct folio *folio) ++{ ++ device_p2p_folio_free(folio); ++} ++#else + static void device_coherent_page_free(struct page *page) + { + device_p2p_page_free(page); + } ++#endif + + static const struct dev_pagemap_ops uvm_device_coherent_pgmap_ops = + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0) ++ .folio_free = device_coherent_folio_free, ++#else + .page_free = device_coherent_page_free, ++#endif + }; + +@@ -3303,5 +3333,9 @@ + static const struct dev_pagemap_ops uvm_device_p2p_pgmap_ops = + { ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 19, 0) ++ .folio_free = device_p2p_folio_free, ++#else + .page_free = device_p2p_page_free, ++#endif + }; + diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/metadata.xml b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/metadata.xml index 05def8b1636..d7260344c52 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/metadata.xml +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/metadata.xml @@ -12,10 +12,8 @@ Use the open source variant of the drivers (only - works for Turing/Ampere or newer GPUs, aka GTX 1650+ - -- recommended with >=560.xx drivers if usable and - is *required* for 50xx Blackwell or newer GPUs -- - always-enabled regardless of USE in >=590.xx) + usable with Turing/Ampere or newer GPUs, aka GTX 1650+ + -- note 50xx Blackwell or newer cards *require* this) Install the persistence daemon for keeping devices state when unused (e.g. for headless) Install the NVIDIA dynamic boost support daemon (only useful with specific laptops, ignore if unsure) diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-535.274.02.ebuild b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-535.288.01.ebuild similarity index 98% rename from sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-535.274.02.ebuild rename to sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-535.288.01.ebuild index aecc28257f6..55126f020b2 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-535.274.02.ebuild +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-535.288.01.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -26,7 +26,6 @@ LICENSE="NVIDIA-2023 Apache-2.0 BSD BSD-2 GPL-2 MIT ZLIB curl openssl" SLOT="0/${PV%%.*}" KEYWORDS="-* amd64 ~arm64" IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland" -REQUIRED_USE="kernel-open? ( modules )" COMMON_DEPEND=" acct-group/video @@ -183,6 +182,14 @@ src_compile() { local xnvflags=-fPIC #840389 tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" + # Same as uname -m. + local target_arch + case ${ARCH} in + amd64) target_arch=x86_64 ;; + arm64) target_arch=aarch64 ;; + *) die "Unrecognised architecture: ${ARCH}" ;; + esac + NV_ARGS=( PREFIX="${EPREFIX}"/usr HOST_CC="$(tc-getBUILD_CC)" @@ -190,6 +197,7 @@ src_compile() { BUILD_GTK2LIB= NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out + TARGET_ARCH="${target_arch}" WAYLAND_AVAILABLE=$(usex wayland 1 0) XNVCTRL_CFLAGS="${xnvflags}" ) @@ -218,6 +226,7 @@ src_compile() { CC="${KERNEL_CC}" # needed for above gnu17 workaround IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" + TARGET_ARCH="${target_arch}" # kernel takes "x86" and "x86_64" as meaning the same, but nvidia # makes the distinction (since 550.135) and is not happy with "x86" @@ -555,7 +564,7 @@ pkg_postinst() { ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau" fi - if use kernel-open; then + if use kernel-open && use modules; then ewarn "\nOpen source variant of ${PN} was selected, be warned it is experimental" ewarn "and only for modern GPUs (e.g. GTX 1650+). Try to disable if run into issues." ewarn "Please also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html" diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-570.207.ebuild b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-570.211.01.ebuild similarity index 98% rename from sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-570.207.ebuild rename to sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-570.211.01.ebuild index b344456365b..4d3677fc847 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-570.207.ebuild +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-570.211.01.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -26,7 +26,6 @@ LICENSE="NVIDIA-2025 Apache-2.0 BSD BSD-2 GPL-2 MIT ZLIB curl openssl" SLOT="0/${PV%%.*}" KEYWORDS="-* amd64 ~arm64" IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland" -REQUIRED_USE="kernel-open? ( modules )" COMMON_DEPEND=" acct-group/video @@ -61,10 +60,7 @@ RDEPEND=" powerd? ( sys-apps/dbus[abi_x86_32(-)?] ) wayland? ( >=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?] - || ( - >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] - gui-libs/egl-wayland2[abi_x86_32(-)?] - ) + >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] X? ( gui-libs/egl-x11[abi_x86_32(-)?] ) ) " @@ -186,6 +182,14 @@ src_compile() { local xnvflags=-fPIC #840389 tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" + # Same as uname -m. + local target_arch + case ${ARCH} in + amd64) target_arch=x86_64 ;; + arm64) target_arch=aarch64 ;; + *) die "Unrecognised architecture: ${ARCH}" ;; + esac + NV_ARGS=( PREFIX="${EPREFIX}"/usr HOST_CC="$(tc-getBUILD_CC)" @@ -193,6 +197,7 @@ src_compile() { BUILD_GTK2LIB= NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out + TARGET_ARCH="${target_arch}" WAYLAND_AVAILABLE=$(usex wayland 1 0) XNVCTRL_CFLAGS="${xnvflags}" ) @@ -217,6 +222,7 @@ src_compile() { local modargs=( IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" + TARGET_ARCH="${target_arch}" # kernel takes "x86" and "x86_64" as meaning the same, but nvidia # makes the distinction (since 550.135) and is not happy with "x86" @@ -569,7 +575,7 @@ pkg_postinst() { ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau" fi - if use kernel-open && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then + if use kernel-open && use modules && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then ewarn "\nOpen source variant of ${PN} was selected, note that it requires" ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if run into issues." ewarn "Also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html" diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09-r1.ebuild b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09-r1.ebuild new file mode 100644 index 00000000000..89f7e24ef28 --- /dev/null +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09-r1.ebuild @@ -0,0 +1,605 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +MODULES_OPTIONAL_IUSE=+modules +inherit desktop dot-a eapi9-pipestatus eapi9-ver flag-o-matic linux-mod-r1 +inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info + +MODULES_KERNEL_MAX=6.19 +NV_URI="https://download.nvidia.com/XFree86/" + +DESCRIPTION="NVIDIA Accelerated Graphics Driver" +HOMEPAGE="https://www.nvidia.com/" +SRC_URI=" + amd64? ( ${NV_URI}Linux-x86_64/${PV}/NVIDIA-Linux-x86_64-${PV}.run ) + arm64? ( ${NV_URI}Linux-aarch64/${PV}/NVIDIA-Linux-aarch64-${PV}.run ) + $(printf "${NV_URI}%s/%s-${PV}.tar.bz2 " \ + nvidia-{installer,modprobe,persistenced,settings,xconfig}{,}) + ${NV_URI}NVIDIA-kernel-module-source/NVIDIA-kernel-module-source-${PV}.tar.xz +" +# nvidia-installer is unused but here for GPL-2's "distribute sources" +S=${WORKDIR} + +LICENSE=" + NVIDIA-2025 Apache-2.0 Boost-1.0 BSD BSD-2 GPL-2 MIT ZLIB + curl openssl public-domain +" +SLOT="0/${PV%%.*}" +KEYWORDS="-* amd64 ~arm64" +IUSE=" + +X abi_x86_32 abi_x86_64 kernel-open persistenced powerd + +static-libs +tools wayland +" + +COMMON_DEPEND=" + acct-group/video + X? ( x11-libs/libpciaccess ) + persistenced? ( + acct-user/nvpd + net-libs/libtirpc:= + ) + tools? ( + >=app-accessibility/at-spi2-core-2.46:2 + dev-libs/glib:2 + dev-libs/jansson:= + media-libs/harfbuzz:= + x11-libs/cairo + x11-libs/gdk-pixbuf:2 + x11-libs/gtk+:3[X] + x11-libs/libX11 + x11-libs/libXext + x11-libs/libXxf86vm + x11-libs/pango + ) +" +RDEPEND=" + ${COMMON_DEPEND} + dev-libs/openssl:0/3 + sys-libs/glibc + X? ( + media-libs/libglvnd[X,abi_x86_32(-)?] + x11-libs/libX11[abi_x86_32(-)?] + x11-libs/libXext[abi_x86_32(-)?] + ) + powerd? ( sys-apps/dbus[abi_x86_32(-)?] ) + wayland? ( + >=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?] + >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] + X? ( gui-libs/egl-x11[abi_x86_32(-)?] ) + ) +" +DEPEND=" + ${COMMON_DEPEND} + static-libs? ( + x11-base/xorg-proto + x11-libs/libX11 + x11-libs/libXext + ) + tools? ( + dev-util/vulkan-headers + media-libs/libglvnd + sys-apps/dbus + x11-base/xorg-proto + x11-libs/libXrandr + x11-libs/libXv + x11-libs/libvdpau + ) +" +BDEPEND=" + app-alternatives/awk + sys-devel/m4 + virtual/pkgconfig +" + +# there is some non-prebuilt exceptions but rather not maintain a list +QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*" + +PATCHES=( + "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch + "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch + "${FILESDIR}"/nvidia-kernel-module-source-${PV}-kernel6.19.patch +) + +pkg_setup() { + use modules && [[ ${MERGE_TYPE} != binary ]] || return + + # do early before linux-mod-r1 so can use chkconfig to setup CONFIG_CHECK + get_version + require_configured_kernel + + local CONFIG_CHECK=" + PROC_FS + ~DRM_KMS_HELPER + ~DRM_FBDEV_EMULATION + ~SYSVIPC + ~!LOCKDEP + ~!PREEMPT_RT + ~!RANDSTRUCT_FULL + ~!RANDSTRUCT_PERFORMANCE + ~!SLUB_DEBUG_ON + !DEBUG_MUTEXES + $(usev powerd '~CPU_FREQ') + " + + kernel_is -ge 6 11 && linux_chkconfig_present DRM_FBDEV_EMULATION && + CONFIG_CHECK+=" DRM_TTM_HELPER" + + use amd64 && kernel_is -ge 5 8 && CONFIG_CHECK+=" X86_PAT" #817764 + + use kernel-open && CONFIG_CHECK+=" MMU_NOTIFIER" #843827 + + local drm_helper_msg="Cannot be directly selected in the kernel's config menus, and may need + selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or + DRM_AMDGPU=m (among others, consult the kernel config's help), can + also use DRM_NOUVEAU=m as long as built as module *not* built-in." + local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but is needed for nvidia-drm.modeset=1 + support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf) which is needed for wayland + and for config-less Xorg auto-detection. + ${drm_helper_msg}" + local ERROR_DRM_TTM_HELPER="CONFIG_DRM_TTM_HELPER: is not set but is needed to compile when using + kernel version 6.11.x or newer while DRM_FBDEV_EMULATION is set. + ${drm_helper_msg}" + local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set but is needed for + nvidia-drm.fbdev=1 support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf), may + result in a blank console/tty." + local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to build with USE=kernel-open. + Cannot be directly selected in the kernel's menuconfig, and may need + selection of another option that requires it such as CONFIG_AMD_IOMMU=y, + or DRM_I915=m (among others, consult the kernel config's help)." + local ERROR_PREEMPT_RT="CONFIG_PREEMPT_RT: is set but is unsupported by NVIDIA upstream and + will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is + set. Please do not report issues if run into e.g. kernel panics while + ignoring this." + local randstruct_msg="is set but NVIDIA may be unstable with + it such as causing a kernel panic on shutdown, it is recommended to + disable with CONFIG_RANDSTRUCT_NONE=y (https://bugs.gentoo.org/969413 + -- please report if this appears fixed on NVIDIA's side so can remove + this warning)." + local ERROR_RANDSTRUCT_FULL="CONFIG_RANDSTRUCT_FULL: ${randstruct_msg}" + local ERROR_RANDSTRUCT_PERFORMANCE="CONFIG_RANDSTRUCT_PERFORMANCE: ${randstruct_msg}" + + linux-mod-r1_pkg_setup +} + +src_prepare() { + # make patches usable across versions + rm nvidia-modprobe && mv nvidia-modprobe{-${PV},} || die + rm nvidia-persistenced && mv nvidia-persistenced{-${PV},} || die + rm nvidia-settings && mv nvidia-settings{-${PV},} || die + rm nvidia-xconfig && mv nvidia-xconfig{-${PV},} || die + mv NVIDIA-kernel-module-source-${PV} kernel-module-source || die + + default + + # prevent detection of incomplete kernel DRM support (bug #603818) + sed 's/defined(CONFIG_DRM/defined(CONFIG_DRM_KMS_HELPER/g' \ + -i kernel{,-module-source/kernel-open}/conftest.sh || die + + sed 's/__USER__/nvpd/' \ + nvidia-persistenced/init/systemd/nvidia-persistenced.service.template \ + > "${T}"/nvidia-persistenced.service || die + + # use alternative vulkan icd option if USE=-X (bug #909181) + use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die + + # makefile attempts to install wayland library even if not built + use wayland || sed -i 's/ WAYLAND_LIB_install$//' \ + nvidia-settings/src/Makefile || die +} + +src_compile() { + tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG + + # extra flags for the libXNVCtrl.a static library + local xnvflags=-fPIC #840389 + tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" + + # Same as uname -m. + local target_arch + case ${ARCH} in + amd64) target_arch=x86_64 ;; + arm64) target_arch=aarch64 ;; + *) die "Unrecognised architecture: ${ARCH}" ;; + esac + + NV_ARGS=( + PREFIX="${EPREFIX}"/usr + HOST_CC="$(tc-getBUILD_CC)" + HOST_LD="$(tc-getBUILD_LD)" + BUILD_GTK2LIB= + NV_USE_BUNDLED_LIBJANSSON=0 + NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out + TARGET_ARCH="${target_arch}" + WAYLAND_AVAILABLE=$(usex wayland 1 0) + XNVCTRL_CFLAGS="${xnvflags}" + ) + + if use modules; then + local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} o_ldflags=${LDFLAGS} + + local modlistargs=video:kernel + if use kernel-open; then + modlistargs+=-module-source:kernel-module-source/kernel-open + + # environment flags are normally unused for modules, but nvidia + # uses it for building the "blob" and it is a bit fragile + filter-flags -fno-plt #912949 + filter-lto + CC=${KERNEL_CC} CXX=${KERNEL_CXX} strip-unsupported-flags + + LDFLAGS=$(raw-ldflags) + fi + + local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} ) + local modargs=( + IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 + SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" + TARGET_ARCH="${target_arch}" + + # kernel takes "x86" and "x86_64" as meaning the same, but nvidia + # makes the distinction (since 550.135) and is not happy with "x86" + # TODO?: it should be ok/better for tc-arch-kernel to do x86_64 + $(usev amd64 ARCH=x86_64) + ) + + # temporary workaround for bug #914468 + addpredict "${KV_OUT_DIR}" + + linux-mod-r1_src_compile + CFLAGS=${o_cflags} CXXFLAGS=${o_cxxflags} LDFLAGS=${o_ldflags} + fi + + emake "${NV_ARGS[@]}" -C nvidia-modprobe + use persistenced && emake "${NV_ARGS[@]}" -C nvidia-persistenced + use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig + + if use tools; then + # avoid noisy *very* noisy logs with deprecation warnings + CFLAGS="-Wno-deprecated-declarations ${CFLAGS}" \ + emake "${NV_ARGS[@]}" -C nvidia-settings + elif use static-libs; then + # pretend GTK+3 is available, not actually used (bug #880879) + emake "${NV_ARGS[@]}" BUILD_GTK3LIB=1 \ + -C nvidia-settings/src out/libXNVCtrl.a + fi +} + +src_install() { + local libdir=$(get_libdir) libdir32=$(ABI=x86 get_libdir) + + NV_ARGS+=( DESTDIR="${D}" LIBDIR="${ED}"/usr/${libdir} ) + + local -A paths=( + [APPLICATION_PROFILE]=/usr/share/nvidia + [CUDA_ICD]=/etc/OpenCL/vendors + [EGL_EXTERNAL_PLATFORM_JSON]=/usr/share/egl/egl_external_platform.d + [FIRMWARE]=/lib/firmware/nvidia/${PV} + [GBM_BACKEND_LIB_SYMLINK]=/usr/${libdir}/gbm + [GLVND_EGL_ICD_JSON]=/usr/share/glvnd/egl_vendor.d + [OPENGL_DATA]=/usr/share/nvidia + [VULKANSC_ICD_JSON]=/usr/share/vulkansc + [VULKAN_ICD_JSON]=/usr/share/vulkan + [WINE_LIB]=/usr/${libdir}/nvidia/wine + [XORG_OUTPUTCLASS_CONFIG]=/usr/share/X11/xorg.conf.d + + [GLX_MODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules/extensions + [GLX_MODULE_SYMLINK]=/usr/${libdir}/xorg/modules + [XMODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules + ) + + local skip_files=( + $(usev !X "libGLX_nvidia libglxserver_nvidia") + libGLX_indirect # non-glvnd unused fallback + libnvidia-{gtk,wayland-client} nvidia-{settings,xconfig} # from source + libnvidia-egl-gbm 15_nvidia_gbm # gui-libs/egl-gbm + libnvidia-egl-wayland 10_nvidia_wayland # gui-libs/egl-wayland + libnvidia-egl-xcb 20_nvidia_xcb.json # gui-libs/egl-x11 + libnvidia-egl-xlib 20_nvidia_xlib.json # gui-libs/egl-x11 + libnvidia-pkcs11.so # using the openssl3 version instead + ) + local skip_modules=( + $(usev !X "nvfbc vdpau xdriver") + $(usev !modules gsp) + $(usev !powerd nvtopps) + installer nvpd # handled separately / built from source + ) + local skip_types=( + GLVND_LIB GLVND_SYMLINK EGL_CLIENT.\* GLX_CLIENT.\* # media-libs/libglvnd + OPENCL_WRAPPER.\* # virtual/opencl + DOCUMENTATION DOT_DESKTOP .\*_SRC DKMS_CONF SYSTEMD_UNIT # handled separately / unused + ) + + local DOCS=( + README.txt NVIDIA_Changelog supported-gpus/supported-gpus.json + nvidia-settings/doc/{FRAMELOCK,NV-CONTROL-API}.txt + ) + local HTML_DOCS=( html/. ) + einstalldocs + + local DISABLE_AUTOFORMATTING=yes + local DOC_CONTENTS="\ +Trusted users should be in the 'video' group to use NVIDIA devices. +You can add yourself by using: gpasswd -a my-user video\ +$(usev modules " + +Like all out-of-tree kernel modules, it is necessary to rebuild +${PN} after upgrading or rebuilding the Linux kernel +by for example running \`emerge @module-rebuild\`. Alternatively, +if using a distribution kernel (sys-kernel/gentoo-kernel{,-bin}), +this can be automated by setting USE=dist-kernel globally. + +Loaded kernel modules also must not mismatch with the installed +${PN} version (excluding -r revision), meaning should +ensure \`eselect kernel list\` points to the kernel that will be +booted before building and preferably reboot after upgrading +${PN} (the ebuild will emit a warning if mismatching). + +See '${EPREFIX}/etc/modprobe.d/nvidia.conf' for modules options.")\ +$(use amd64 && usev !abi_x86_32 " + +Note that without USE=abi_x86_32 on ${PN}, 32bit applications +(typically using wine / steam) will not be able to use GPU acceleration.") + +Be warned that USE=kernel-open may need to be either enabled or +disabled for certain cards to function: +- GTX 50xx (blackwell) and higher require it to be enabled +- GTX 1650 and higher (pre-blackwell) should work either way +- Older cards require it to be disabled + +For additional information or for troubleshooting issues, please see +https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers and NVIDIA's own +documentation that is installed alongside this README." + readme.gentoo_create_doc + + if use modules; then + linux-mod-r1_src_install + + insinto /etc/modprobe.d + newins "${FILESDIR}"/nvidia-580.conf nvidia.conf + + # used for gpu verification with binpkgs (not kept, see pkg_preinst) + insinto /usr/share/nvidia + doins supported-gpus/supported-gpus.json + fi + + emake "${NV_ARGS[@]}" -C nvidia-modprobe install + fowners :video /usr/bin/nvidia-modprobe #505092 + fperms 4710 /usr/bin/nvidia-modprobe + + if use persistenced; then + emake "${NV_ARGS[@]}" -C nvidia-persistenced install + newconfd "${FILESDIR}"/nvidia-persistenced.confd nvidia-persistenced + newinitd "${FILESDIR}"/nvidia-persistenced.initd nvidia-persistenced + systemd_dounit "${T}"/nvidia-persistenced.service + fi + + if use tools; then + emake "${NV_ARGS[@]}" -C nvidia-settings install + + doicon nvidia-settings/doc/nvidia-settings.png + domenu nvidia-settings/doc/nvidia-settings.desktop + + exeinto /etc/X11/xinit/xinitrc.d + newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings + fi + + if use static-libs; then + dolib.a nvidia-settings/src/out/libXNVCtrl.a + strip-lto-bytecode + + insinto /usr/include/NVCtrl + doins nvidia-settings/src/libXNVCtrl/NVCtrl{Lib,}.h + fi + + use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig install + + # mimic nvidia-installer by reading .manifest to install files + # 0:file 1:perms 2:type 3+:subtype/arguments -:module + local m into + while IFS=' ' read -ra m; do + ! [[ ${#m[@]} -ge 2 && ${m[-1]} =~ MODULE: ]] || + [[ " ${m[0]##*/}" =~ ^(\ ${skip_files[*]/%/.*|\\} )$ ]] || + [[ " ${m[2]}" =~ ^(\ ${skip_types[*]/%/|\\} )$ ]] || + has ${m[-1]#MODULE:} "${skip_modules[@]}" && continue + + case ${m[2]} in + MANPAGE) + gzip -dc ${m[0]} | newman - ${m[0]%.gz} + pipestatus || die + continue + ;; + GBM_BACKEND_LIB_SYMLINK) m[4]=../${m[4]};; # missing ../ + VDPAU_SYMLINK) m[4]=vdpau/; m[5]=${m[5]#vdpau/};; # .so to vdpau/ + esac + + if [[ -v 'paths[${m[2]}]' ]]; then + into=${paths[${m[2]}]} + elif [[ ${m[2]} == EXPLICIT_PATH ]]; then + into=${m[3]} + elif [[ ${m[2]} == *_BINARY ]]; then + into=/usr/bin + elif [[ ${m[3]} == COMPAT32 ]]; then + use abi_x86_32 || continue + into=/usr/${libdir32} + elif [[ ${m[2]} == *_@(LIB|SYMLINK) ]]; then + into=/usr/${libdir} + else + die "No known installation path for ${m[0]}" + fi + [[ ${m[3]: -2} == ?/ ]] && into+=/${m[3]%/} + [[ ${m[4]: -2} == ?/ ]] && into+=/${m[4]%/} + + if [[ ${m[2]} =~ _SYMLINK$ ]]; then + [[ ${m[4]: -1} == / ]] && m[4]=${m[5]} + dosym ${m[4]} ${into}/${m[0]} + continue + fi + # avoid portage warning due to missing soname links in manifest + [[ ${m[0]} =~ ^libnvidia-ngx.so ]] && + dosym ${m[0]} ${into}/${m[0]%.so*}.so.1 + + printf -v m[1] %o $((m[1] | 0200)) # 444->644 + insopts -m${m[1]} + insinto ${into} + doins ${m[0]} + done < .manifest || die + insopts -m0644 # reset + + # MODULE:installer non-skipped extras + : "$(systemd_get_sleepdir)" + exeinto "${_#"${EPREFIX}"}" + doexe systemd/system-sleep/nvidia + dobin systemd/nvidia-sleep.sh + systemd_dounit systemd/system/nvidia-{hibernate,resume,suspend,suspend-then-hibernate}.service + + dobin nvidia-bug-report.sh + + insinto /usr/share/nvidia/files.d + doins sandboxutils-filelist.json + + # MODULE:powerd extras + if use powerd; then + newinitd "${FILESDIR}"/nvidia-powerd.initd nvidia-powerd #923117 + systemd_dounit systemd/system/nvidia-powerd.service + + insinto /usr/share/dbus-1/system.d + doins nvidia-dbus.conf + fi + + # enabling is needed for sleep to work properly and little reason not to do + # it unconditionally for a better user experience + : "$(systemd_get_systemunitdir)" + local unitdir=${_#"${EPREFIX}"} + # not using relative symlinks to match systemd's own links + dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-hibernate.service + dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-resume.service + dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-suspend.service + dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-resume.service + dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-suspend-then-hibernate.service + dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-resume.service + # also add a custom elogind hook to do the equivalent of the above + exeinto /usr/lib/elogind/system-sleep + newexe "${FILESDIR}"/system-sleep.elogind nvidia + # =systemd-256 or may fail to resume with some setups + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1072722 + insinto "${unitdir}"/systemd-homed.service.d + newins - 10-nvidia.conf <<-EOF + [Service] + Environment=SYSTEMD_HOME_LOCK_FREEZE_SESSION=false + EOF + insinto "${unitdir}"/systemd-suspend.service.d + newins - 10-nvidia.conf <<-EOF + [Service] + Environment=SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false + EOF + dosym -r "${unitdir}"/systemd-{suspend,hibernate}.service.d/10-nvidia.conf + dosym -r "${unitdir}"/systemd-{suspend,hybrid-sleep}.service.d/10-nvidia.conf + dosym -r "${unitdir}"/systemd-{suspend,suspend-then-hibernate}.service.d/10-nvidia.conf + + # symlink non-versioned so nvidia-settings can use it even if misdetected + dosym nvidia-application-profiles-${PV}-key-documentation \ + ${paths[APPLICATION_PROFILE]}/nvidia-application-profiles-key-documentation + + # don't attempt to strip firmware files (silences errors) + dostrip -x ${paths[FIRMWARE]} + + # sandbox issues with /dev/nvidiactl and others (bug #904292,#921578) + # are widespread and sometime affect revdeps of packages built with + # USE=opencl/cuda making it hard to manage in ebuilds (minimal set, + # ebuilds should handle manually if need others or addwrite) + insinto /etc/sandbox.d + newins - 20nvidia <<<'SANDBOX_PREDICT="/dev/nvidiactl:/dev/nvidia-caps:/dev/char"' + + # dracut does not use /etc/modprobe.d if hostonly=no, but want to make sure + # our settings are used for bug 932781#c8 and nouveau blacklist if either + # modules are included (however, just best-effort without initramfs regen) + if use modules; then + echo "install_items+=\" ${EPREFIX}/etc/modprobe.d/nvidia.conf \"" >> \ + "${ED}"/usr/lib/dracut/dracut.conf.d/10-${PN}.conf || die + fi +} + +pkg_preinst() { + has_version "${CATEGORY}/${PN}[kernel-open]" && NV_HAD_KERNEL_OPEN= + + use modules || return + + # set video group id based on live system (bug #491414) + local g=$(egetent group video | cut -d: -f3) + [[ ${g} =~ ^[0-9]+$ ]] || die "Failed to determine video group id (got '${g}')" + sed -i "s/@VIDEOGID@/${g}/" "${ED}"/etc/modprobe.d/nvidia.conf || die + + # try to find driver mismatches using temporary supported-gpus.json + for g in $(grep -l 0x10de /sys/bus/pci/devices/*/vendor 2>/dev/null); do + g=$(grep -io "\"devid\":\"$(<${g%vendor}device)\"[^}]*branch\":\"[0-9]*" \ + "${ED}"/usr/share/nvidia/supported-gpus.json 2>/dev/null) + if [[ ${g} ]]; then + g=$((${g##*\"}+1)) + if ver_test -ge ${g}; then + NV_LEGACY_MASK=">=${CATEGORY}/${PN}-${g}" + break + fi + fi + done + rm "${ED}"/usr/share/nvidia/supported-gpus.json || die +} + +pkg_postinst() { + linux-mod-r1_pkg_postinst + + readme.gentoo_print_elog + + if [[ -r /proc/driver/nvidia/version && + $( ${EROOT}/etc/portage/package.mask/${PN}" + else + ewarn " echo '${NV_LEGACY_MASK}' >> ${EROOT}/etc/portage/package.mask" + fi + ewarn "...then downgrade to a legacy[1] branch if possible (not all old versions" + ewarn "are available or fully functional, may need to consider nouveau[2])." + ewarn "[1] https://www.nvidia.com/object/IO_32667.html" + ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau" + fi + + if use kernel-open && use modules && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then + ewarn "\nOpen source variant of ${PN} was selected, note that it requires" + ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if run into issues." + ewarn "Also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html" + fi + + if ver_replacing -lt 580.126.09-r1; then + elog "\n>=nvidia-drivers-580.126.09-r1 changes some defaults that may or may" + elog "not need attention:" + elog "1. nvidia-drm.modeset=1 is now default regardless of USE=wayland" + elog "2. nvidia-drm.fbdev=1 is now also tentatively default to match upstream" + elog "See ${EROOT}/etc/modprobe.d/nvidia.conf to modify settings if needed," + elog "fbdev=1 *could* cause issues for the console display with some setups." + fi +} diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09.ebuild similarity index 95% rename from sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild rename to sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09.ebuild index 3dde3bbccdd..d4e71fe8b01 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.95.05.ebuild +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.09.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -7,7 +7,7 @@ MODULES_OPTIONAL_IUSE=+modules inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1 inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info -MODULES_KERNEL_MAX=6.18 +MODULES_KERNEL_MAX=6.19 NV_URI="https://download.nvidia.com/XFree86/" DESCRIPTION="NVIDIA Accelerated Graphics Driver" @@ -29,7 +29,6 @@ LICENSE=" SLOT="0/${PV%%.*}" KEYWORDS="-* amd64 ~arm64" IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland" -REQUIRED_USE="kernel-open? ( modules )" COMMON_DEPEND=" acct-group/video @@ -64,10 +63,7 @@ RDEPEND=" powerd? ( sys-apps/dbus[abi_x86_32(-)?] ) wayland? ( >=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?] - || ( - >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] - gui-libs/egl-wayland2[abi_x86_32(-)?] - ) + >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] X? ( gui-libs/egl-x11[abi_x86_32(-)?] ) ) " @@ -100,7 +96,7 @@ QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*" PATCHES=( "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch - "${FILESDIR}"/nvidia-kernel-module-source-580.95.05-kernel6.18.patch + "${FILESDIR}"/nvidia-kernel-module-source-${PV}-kernel6.19.patch ) pkg_setup() { @@ -117,6 +113,8 @@ pkg_setup() { ~SYSVIPC ~!LOCKDEP ~!PREEMPT_RT + ~!RANDSTRUCT_FULL + ~!RANDSTRUCT_PERFORMANCE ~!SLUB_DEBUG_ON !DEBUG_MUTEXES $(usev powerd '~CPU_FREQ') @@ -150,6 +148,13 @@ pkg_setup() { will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is set. Please do not report issues if run into e.g. kernel panics while ignoring this." + local randstruct_msg="is set but NVIDIA may be unstable with + it such as causing a kernel panic on shutdown, it is recommended to + disable with CONFIG_RANDSTRUCT_NONE=y (https://bugs.gentoo.org/969413 + -- please report if this appears fixed on NVIDIA's side so can remove + this warning)." + local ERROR_RANDSTRUCT_FULL="CONFIG_RANDSTRUCT_FULL: ${randstruct_msg}" + local ERROR_RANDSTRUCT_PERFORMANCE="CONFIG_RANDSTRUCT_PERFORMANCE: ${randstruct_msg}" linux-mod-r1_pkg_setup } @@ -191,6 +196,14 @@ src_compile() { local xnvflags=-fPIC #840389 tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" + # Same as uname -m. + local target_arch + case ${ARCH} in + amd64) target_arch=x86_64 ;; + arm64) target_arch=aarch64 ;; + *) die "Unrecognised architecture: ${ARCH}" ;; + esac + NV_ARGS=( PREFIX="${EPREFIX}"/usr HOST_CC="$(tc-getBUILD_CC)" @@ -198,6 +211,7 @@ src_compile() { BUILD_GTK2LIB= NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out + TARGET_ARCH="${target_arch}" WAYLAND_AVAILABLE=$(usex wayland 1 0) XNVCTRL_CFLAGS="${xnvflags}" ) @@ -222,6 +236,7 @@ src_compile() { local modargs=( IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" + TARGET_ARCH="${target_arch}" # kernel takes "x86" and "x86_64" as meaning the same, but nvidia # makes the distinction (since 550.135) and is not happy with "x86" @@ -574,7 +589,7 @@ pkg_postinst() { ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau" fi - if use kernel-open && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then + if use kernel-open && use modules && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then ewarn "\nOpen source variant of ${PN} was selected, note that it requires" ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if run into issues." ewarn "Also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html" diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.119.02.ebuild b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.18.ebuild similarity index 91% rename from sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.119.02.ebuild rename to sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.18.ebuild index d32bb11ae40..2e39cb6c8a0 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.119.02.ebuild +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.126.18.ebuild @@ -1,18 +1,13 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -# note: while this 580.119.02 version is not as broken as 580.105.08 -# was (no need to mask), it still seem to be affected by notable -# regressions compared to 580.95.05 and it should not be considered -# for stable (e.g. https://forums.developer.nvidia.com/t/355216) - MODULES_OPTIONAL_IUSE=+modules -inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1 +inherit desktop dot-a eapi9-pipestatus eapi9-ver flag-o-matic linux-mod-r1 inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info -MODULES_KERNEL_MAX=6.18 +MODULES_KERNEL_MAX=6.19 NV_URI="https://download.nvidia.com/XFree86/" DESCRIPTION="NVIDIA Accelerated Graphics Driver" @@ -33,8 +28,10 @@ LICENSE=" " SLOT="0/${PV%%.*}" KEYWORDS="-* ~amd64 ~arm64" -IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland" -REQUIRED_USE="kernel-open? ( modules )" +IUSE=" + +X abi_x86_32 abi_x86_64 kernel-open persistenced powerd + +static-libs +tools wayland +" COMMON_DEPEND=" acct-group/video @@ -69,10 +66,7 @@ RDEPEND=" powerd? ( sys-apps/dbus[abi_x86_32(-)?] ) wayland? ( >=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?] - || ( - >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] - gui-libs/egl-wayland2[abi_x86_32(-)?] - ) + >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] X? ( gui-libs/egl-x11[abi_x86_32(-)?] ) ) " @@ -121,6 +115,8 @@ pkg_setup() { ~SYSVIPC ~!LOCKDEP ~!PREEMPT_RT + ~!RANDSTRUCT_FULL + ~!RANDSTRUCT_PERFORMANCE ~!SLUB_DEBUG_ON !DEBUG_MUTEXES $(usev powerd '~CPU_FREQ') @@ -137,15 +133,16 @@ pkg_setup() { selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or DRM_AMDGPU=m (among others, consult the kernel config's help), can also use DRM_NOUVEAU=m as long as built as module *not* built-in." - local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection - of drivers (no custom config), and for wayland / nvidia-drm.modeset=1. + local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but is needed for nvidia-drm.modeset=1 + support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf) which is needed for wayland + and for config-less Xorg auto-detection. ${drm_helper_msg}" local ERROR_DRM_TTM_HELPER="CONFIG_DRM_TTM_HELPER: is not set but is needed to compile when using kernel version 6.11.x or newer while DRM_FBDEV_EMULATION is set. ${drm_helper_msg}" local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set but is needed for - nvidia-drm.fbdev=1 support, currently off-by-default and it could - be ignored, but note that is due to change in the future." + nvidia-drm.fbdev=1 support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf), may + result in a blank console/tty." local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to build with USE=kernel-open. Cannot be directly selected in the kernel's menuconfig, and may need selection of another option that requires it such as CONFIG_AMD_IOMMU=y, @@ -154,6 +151,13 @@ pkg_setup() { will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is set. Please do not report issues if run into e.g. kernel panics while ignoring this." + local randstruct_msg="is set but NVIDIA may be unstable with + it such as causing a kernel panic on shutdown, it is recommended to + disable with CONFIG_RANDSTRUCT_NONE=y (https://bugs.gentoo.org/969413 + -- please report if this appears fixed on NVIDIA's side so can remove + this warning)." + local ERROR_RANDSTRUCT_FULL="CONFIG_RANDSTRUCT_FULL: ${randstruct_msg}" + local ERROR_RANDSTRUCT_PERFORMANCE="CONFIG_RANDSTRUCT_PERFORMANCE: ${randstruct_msg}" linux-mod-r1_pkg_setup } @@ -179,10 +183,6 @@ src_prepare() { # use alternative vulkan icd option if USE=-X (bug #909181) use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die - # enable nvidia-drm.modeset=1 by default with USE=wayland - cp "${FILESDIR}"/nvidia-570.conf "${T}"/nvidia.conf || die - use !wayland || sed -i '/^#.*modeset=1$/s/^#//' "${T}"/nvidia.conf || die - # makefile attempts to install wayland library even if not built use wayland || sed -i 's/ WAYLAND_LIB_install$//' \ nvidia-settings/src/Makefile || die @@ -195,6 +195,14 @@ src_compile() { local xnvflags=-fPIC #840389 tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" + # Same as uname -m. + local target_arch + case ${ARCH} in + amd64) target_arch=x86_64 ;; + arm64) target_arch=aarch64 ;; + *) die "Unrecognised architecture: ${ARCH}" ;; + esac + NV_ARGS=( PREFIX="${EPREFIX}"/usr HOST_CC="$(tc-getBUILD_CC)" @@ -202,6 +210,7 @@ src_compile() { BUILD_GTK2LIB= NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out + TARGET_ARCH="${target_arch}" WAYLAND_AVAILABLE=$(usex wayland 1 0) XNVCTRL_CFLAGS="${xnvflags}" ) @@ -226,6 +235,7 @@ src_compile() { local modargs=( IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" + TARGET_ARCH="${target_arch}" # kernel takes "x86" and "x86_64" as meaning the same, but nvidia # makes the distinction (since 550.135) and is not happy with "x86" @@ -346,7 +356,7 @@ documentation that is installed alongside this README." linux-mod-r1_src_install insinto /etc/modprobe.d - doins "${T}"/nvidia.conf + newins "${FILESDIR}"/nvidia-580.conf nvidia.conf # used for gpu verification with binpkgs (not kept, see pkg_preinst) insinto /usr/share/nvidia @@ -516,7 +526,6 @@ documentation that is installed alongside this README." pkg_preinst() { has_version "${CATEGORY}/${PN}[kernel-open]" && NV_HAD_KERNEL_OPEN= - has_version "${CATEGORY}/${PN}[wayland]" && NV_HAD_WAYLAND= use modules || return @@ -578,15 +587,18 @@ pkg_postinst() { ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau" fi - if use kernel-open && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then + if use kernel-open && use modules && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then ewarn "\nOpen source variant of ${PN} was selected, note that it requires" ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if run into issues." ewarn "Also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html" fi - if use wayland && use modules && [[ ! -v NV_HAD_WAYLAND ]]; then - elog "\nNote that with USE=wayland, nvidia-drm.modeset=1 will be enabled" - elog "in '${EROOT}/etc/modprobe.d/nvidia.conf'. *If* experience issues," - elog "either disable wayland or edit nvidia.conf." + if ver_replacing -lt 580.126.09-r1; then + elog "\n>=nvidia-drivers-580.126.09-r1 changes some defaults that may or may" + elog "not need attention:" + elog "1. nvidia-drm.modeset=1 is now default regardless of USE=wayland" + elog "2. nvidia-drm.fbdev=1 is now also tentatively default to match upstream" + elog "See ${EROOT}/etc/modprobe.d/nvidia.conf to modify settings if needed," + elog "fbdev=1 *could* cause issues for the console display with some setups." fi } diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.13.ebuild b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.18.ebuild similarity index 93% rename from sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.13.ebuild rename to sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.18.ebuild index f3d232db2c6..3af5a212985 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.13.ebuild +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-580.94.18.ebuild @@ -1,14 +1,14 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 MODULES_OPTIONAL_IUSE=+modules -inherit desktop dot-a eapi9-pipestatus flag-o-matic linux-mod-r1 +inherit desktop dot-a eapi9-pipestatus eapi9-ver flag-o-matic linux-mod-r1 inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info MODULES_KERNEL_MAX=6.18 -NV_PIN=580.95.05 +NV_PIN=580.126.18 DESCRIPTION="NVIDIA Accelerated Graphics Driver" HOMEPAGE="https://developer.nvidia.com/vulkan-driver/" @@ -29,8 +29,10 @@ LICENSE=" " SLOT="0/vulkan" KEYWORDS="-* ~amd64" -IUSE="+X abi_x86_32 abi_x86_64 kernel-open persistenced powerd +static-libs +tools wayland" -REQUIRED_USE="kernel-open? ( modules )" +IUSE=" + +X abi_x86_32 abi_x86_64 kernel-open persistenced powerd + +static-libs +tools wayland +" COMMON_DEPEND=" acct-group/video @@ -65,10 +67,7 @@ RDEPEND=" powerd? ( sys-apps/dbus[abi_x86_32(-)?] ) wayland? ( >=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?] - || ( - >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] - gui-libs/egl-wayland2[abi_x86_32(-)?] - ) + >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] X? ( gui-libs/egl-x11[abi_x86_32(-)?] ) ) " @@ -133,15 +132,16 @@ pkg_setup() { selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or DRM_AMDGPU=m (among others, consult the kernel config's help), can also use DRM_NOUVEAU=m as long as built as module *not* built-in." - local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but needed for Xorg auto-detection - of drivers (no custom config), and for wayland / nvidia-drm.modeset=1. + local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but is needed for nvidia-drm.modeset=1 + support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf) which is needed for wayland + and for config-less Xorg auto-detection. ${drm_helper_msg}" local ERROR_DRM_TTM_HELPER="CONFIG_DRM_TTM_HELPER: is not set but is needed to compile when using kernel version 6.11.x or newer while DRM_FBDEV_EMULATION is set. ${drm_helper_msg}" local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set but is needed for - nvidia-drm.fbdev=1 support, currently off-by-default and it could - be ignored, but note that is due to change in the future." + nvidia-drm.fbdev=1 support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf), may + result in a blank console/tty." local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to build with USE=kernel-open. Cannot be directly selected in the kernel's menuconfig, and may need selection of another option that requires it such as CONFIG_AMD_IOMMU=y, @@ -175,10 +175,6 @@ src_prepare() { # use alternative vulkan icd option if USE=-X (bug #909181) use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die - # enable nvidia-drm.modeset=1 by default with USE=wayland - cp "${FILESDIR}"/nvidia-570.conf "${T}"/nvidia.conf || die - use !wayland || sed -i '/^#.*modeset=1$/s/^#//' "${T}"/nvidia.conf || die - # makefile attempts to install wayland library even if not built use wayland || sed -i 's/ WAYLAND_LIB_install$//' \ nvidia-settings/src/Makefile || die @@ -191,6 +187,14 @@ src_compile() { local xnvflags=-fPIC #840389 tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" + # Same as uname -m. + local target_arch + case ${ARCH} in + amd64) target_arch=x86_64 ;; + arm64) target_arch=aarch64 ;; + *) die "Unrecognised architecture: ${ARCH}" ;; + esac + NV_ARGS=( PREFIX="${EPREFIX}"/usr HOST_CC="$(tc-getBUILD_CC)" @@ -198,6 +202,7 @@ src_compile() { BUILD_GTK2LIB= NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out + TARGET_ARCH="${target_arch}" WAYLAND_AVAILABLE=$(usex wayland 1 0) XNVCTRL_CFLAGS="${xnvflags}" ) @@ -222,6 +227,7 @@ src_compile() { local modargs=( IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" + TARGET_ARCH="${target_arch}" # kernel takes "x86" and "x86_64" as meaning the same, but nvidia # makes the distinction (since 550.135) and is not happy with "x86" @@ -342,7 +348,7 @@ documentation that is installed alongside this README." linux-mod-r1_src_install insinto /etc/modprobe.d - doins "${T}"/nvidia.conf + newins "${FILESDIR}"/nvidia-580.conf nvidia.conf # used for gpu verification with binpkgs (not kept, see pkg_preinst) insinto /usr/share/nvidia @@ -512,7 +518,6 @@ documentation that is installed alongside this README." pkg_preinst() { has_version "${CATEGORY}/${PN}[kernel-open]" && NV_HAD_KERNEL_OPEN= - has_version "${CATEGORY}/${PN}[wayland]" && NV_HAD_WAYLAND= use modules || return @@ -574,15 +579,18 @@ pkg_postinst() { ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau" fi - if use kernel-open && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then + if use kernel-open && use modules && [[ ! -v NV_HAD_KERNEL_OPEN ]]; then ewarn "\nOpen source variant of ${PN} was selected, note that it requires" ewarn "Turing/Ampere+ GPUs (aka GTX 1650+). Try disabling if run into issues." ewarn "Also see: ${EROOT}/usr/share/doc/${PF}/html/kernel_open.html" fi - if use wayland && use modules && [[ ! -v NV_HAD_WAYLAND ]]; then - elog "\nNote that with USE=wayland, nvidia-drm.modeset=1 will be enabled" - elog "in '${EROOT}/etc/modprobe.d/nvidia.conf'. *If* experience issues," - elog "either disable wayland or edit nvidia.conf." + if ver_replacing -lt 580.94.18; then + elog "\n>=nvidia-drivers-580.94.18:0/vulkan changes some defaults that may or may" + elog "not need attention:" + elog "1. nvidia-drm.modeset=1 is now default regardless of USE=wayland" + elog "2. nvidia-drm.fbdev=1 is now also tentatively default to match upstream" + elog "See ${EROOT}/etc/modprobe.d/nvidia.conf to modify settings if needed," + elog "fbdev=1 *could* cause issues for the console display with some setups." fi } diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.44.01.ebuild b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.44.01.ebuild deleted file mode 100644 index e1f8b776485..00000000000 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.44.01.ebuild +++ /dev/null @@ -1,567 +0,0 @@ -# Copyright 1999-2025 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -MODULES_OPTIONAL_IUSE=+modules -inherit desktop dot-a eapi9-pipestatus eapi9-ver flag-o-matic linux-mod-r1 -inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info - -MODULES_KERNEL_MAX=6.18 -NV_URI="https://download.nvidia.com/XFree86/" - -DESCRIPTION="NVIDIA Accelerated Graphics Driver" -HOMEPAGE="https://www.nvidia.com/" -SRC_URI=" - amd64? ( ${NV_URI}Linux-x86_64/${PV}/NVIDIA-Linux-x86_64-${PV}.run ) - arm64? ( ${NV_URI}Linux-aarch64/${PV}/NVIDIA-Linux-aarch64-${PV}.run ) - $(printf "${NV_URI}%s/%s-${PV}.tar.bz2 " \ - nvidia-{installer,modprobe,persistenced,settings,xconfig}{,}) - ${NV_URI}NVIDIA-kernel-module-source/NVIDIA-kernel-module-source-${PV}.tar.xz -" -# nvidia-installer is unused but here for GPL-2's "distribute sources" -S=${WORKDIR} - -LICENSE=" - NVIDIA-2025 Apache-2.0 Boost-1.0 BSD BSD-2 GPL-2 MIT ZLIB - curl openssl public-domain -" -SLOT="0/${PV%%.*}" -# kept unkeyworded due to being a beta, users are free to opt-in for testing -#KEYWORDS="-* ~amd64 ~arm64" -IUSE="+X abi_x86_32 abi_x86_64 persistenced powerd +static-libs +tools wayland" - -COMMON_DEPEND=" - acct-group/video - X? ( x11-libs/libpciaccess ) - persistenced? ( - acct-user/nvpd - net-libs/libtirpc:= - ) - tools? ( - >=app-accessibility/at-spi2-core-2.46:2 - dev-libs/glib:2 - dev-libs/jansson:= - media-libs/harfbuzz:= - x11-libs/cairo - x11-libs/gdk-pixbuf:2 - x11-libs/gtk+:3[X] - x11-libs/libX11 - x11-libs/libXext - x11-libs/libXxf86vm - x11-libs/pango - ) -" -# egl-wayland2: nvidia currently ships both versions so, to ensure -# everything works properly, depend on both at same time for now -# (may use one or the other depending on setup) -RDEPEND=" - ${COMMON_DEPEND} - dev-libs/openssl:0/3 - sys-libs/glibc - X? ( - media-libs/libglvnd[X,abi_x86_32(-)?] - x11-libs/libX11[abi_x86_32(-)?] - x11-libs/libXext[abi_x86_32(-)?] - ) - powerd? ( sys-apps/dbus[abi_x86_32(-)?] ) - wayland? ( - >=gui-libs/egl-gbm-1.1.1-r2[abi_x86_32(-)?] - >=gui-libs/egl-wayland-1.1.13.1[abi_x86_32(-)?] - gui-libs/egl-wayland2[abi_x86_32(-)?] - X? ( gui-libs/egl-x11[abi_x86_32(-)?] ) - ) -" -DEPEND=" - ${COMMON_DEPEND} - static-libs? ( - x11-base/xorg-proto - x11-libs/libX11 - x11-libs/libXext - ) - tools? ( - dev-util/vulkan-headers - media-libs/libglvnd - sys-apps/dbus - x11-base/xorg-proto - x11-libs/libXrandr - x11-libs/libXv - x11-libs/libvdpau - ) -" -BDEPEND=" - app-alternatives/awk - sys-devel/m4 - virtual/pkgconfig -" - -# there is some non-prebuilt exceptions but rather not maintain a list -QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*" - -PATCHES=( - "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch - "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch -) - -pkg_setup() { - use modules && [[ ${MERGE_TYPE} != binary ]] || return - - # do early before linux-mod-r1 so can use chkconfig to setup CONFIG_CHECK - get_version - require_configured_kernel - - local CONFIG_CHECK=" - MMU_NOTIFIER - PROC_FS - ~DRM_KMS_HELPER - ~DRM_FBDEV_EMULATION - ~SYSVIPC - ~!LOCKDEP - ~!PREEMPT_RT - ~!SLUB_DEBUG_ON - !DEBUG_MUTEXES - $(usev powerd '~CPU_FREQ') - " - - kernel_is -ge 6 11 && linux_chkconfig_present DRM_FBDEV_EMULATION && - CONFIG_CHECK+=" DRM_TTM_HELPER" - - use amd64 && kernel_is -ge 5 8 && CONFIG_CHECK+=" X86_PAT" #817764 - - local drm_helper_msg="Cannot be directly selected in the kernel's config menus, and may need - selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or - DRM_AMDGPU=m (among others, consult the kernel config's help), can - also use DRM_NOUVEAU=m as long as built as module *not* built-in." - local ERROR_DRM_KMS_HELPER="CONFIG_DRM_KMS_HELPER: is not set but is needed for nvidia-drm.modeset=1 - support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf) which is needed for wayland - and for config-less Xorg auto-detection. - ${drm_helper_msg}" - local ERROR_DRM_TTM_HELPER="CONFIG_DRM_TTM_HELPER: is not set but is needed to compile when using - kernel version 6.11.x or newer while DRM_FBDEV_EMULATION is set. - ${drm_helper_msg}" - local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set but is needed for - nvidia-drm.fbdev=1 support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf), may - result in a blank console/tty." - local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but is required for compilation. - Cannot be directly selected in the kernel's menuconfig, and may need - selection of another option that requires it such as CONFIG_AMD_IOMMU=y, - or DRM_I915=m (among others, consult the kernel config's help)." - local ERROR_PREEMPT_RT="CONFIG_PREEMPT_RT: is set but is unsupported by NVIDIA upstream and - will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is - set. Please do not report issues if run into e.g. kernel panics while - ignoring this." - - linux-mod-r1_pkg_setup -} - -src_prepare() { - # make patches usable across versions - rm nvidia-modprobe && mv nvidia-modprobe{-${PV},} || die - rm nvidia-persistenced && mv nvidia-persistenced{-${PV},} || die - rm nvidia-settings && mv nvidia-settings{-${PV},} || die - rm nvidia-xconfig && mv nvidia-xconfig{-${PV},} || die - mv NVIDIA-kernel-module-source-${PV} kernel-module-source || die - - default - - sed 's/__USER__/nvpd/' \ - nvidia-persistenced/init/systemd/nvidia-persistenced.service.template \ - > "${T}"/nvidia-persistenced.service || die - - # use alternative vulkan icd option if USE=-X (bug #909181) - use X || sed -i 's/"libGLX/"libEGL/' nvidia_{layers,icd}.json || die - - # makefile attempts to install wayland library even if not built - use wayland || sed -i 's/ WAYLAND_LIB_install$//' \ - nvidia-settings/src/Makefile || die -} - -src_compile() { - tc-export AR CC CXX LD OBJCOPY OBJDUMP PKG_CONFIG - - # extra flags for the libXNVCtrl.a static library - local xnvflags=-fPIC #840389 - tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" - - NV_ARGS=( - PREFIX="${EPREFIX}"/usr - HOST_CC="$(tc-getBUILD_CC)" - HOST_LD="$(tc-getBUILD_LD)" - BUILD_GTK2LIB= - NV_USE_BUNDLED_LIBJANSSON=0 - NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out - WAYLAND_AVAILABLE=$(usex wayland 1 0) - XNVCTRL_CFLAGS="${xnvflags}" - ) - - if use modules; then - local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} o_ldflags=${LDFLAGS} - - # environment flags are normally unused for modules, but nvidia uses - # them for building the formerly closed "blob" and it is a bit fragile - filter-flags -fno-plt #912949 - filter-lto - CC=${KERNEL_CC} CXX=${KERNEL_CXX} strip-unsupported-flags - LDFLAGS=$(raw-ldflags) - - : video:kernel-module-source:kernel-module-source/kernel-open - local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=${_} ) - local modargs=( - IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 - SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" - - # kernel takes "x86" and "x86_64" as meaning the same, but nvidia - # makes the distinction (since 550.135) and is not happy with "x86" - # TODO?: it should be ok/better for tc-arch-kernel to do x86_64 - $(usev amd64 ARCH=x86_64) - ) - - # temporary workaround for bug #914468 - addpredict "${KV_OUT_DIR}" - - linux-mod-r1_src_compile - CFLAGS=${o_cflags} CXXFLAGS=${o_cxxflags} LDFLAGS=${o_ldflags} - fi - - emake "${NV_ARGS[@]}" -C nvidia-modprobe - use persistenced && emake "${NV_ARGS[@]}" -C nvidia-persistenced - use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig - - if use tools; then - # avoid noisy *very* noisy logs with deprecation warnings - CFLAGS="-Wno-deprecated-declarations ${CFLAGS}" \ - emake "${NV_ARGS[@]}" -C nvidia-settings - elif use static-libs; then - # pretend GTK+3 is available, not actually used (bug #880879) - emake "${NV_ARGS[@]}" BUILD_GTK3LIB=1 \ - -C nvidia-settings/src out/libXNVCtrl.a - fi -} - -src_install() { - local libdir=$(get_libdir) libdir32=$(ABI=x86 get_libdir) - - NV_ARGS+=( DESTDIR="${D}" LIBDIR="${ED}"/usr/${libdir} ) - - local -A paths=( - [APPLICATION_PROFILE]=/usr/share/nvidia - [CUDA_ICD]=/etc/OpenCL/vendors - [EGL_EXTERNAL_PLATFORM_JSON]=/usr/share/egl/egl_external_platform.d - [FIRMWARE]=/lib/firmware/nvidia/${PV} - [GBM_BACKEND_LIB_SYMLINK]=/usr/${libdir}/gbm - [GLVND_EGL_ICD_JSON]=/usr/share/glvnd/egl_vendor.d - [OPENGL_DATA]=/usr/share/nvidia - [VULKANSC_ICD_JSON]=/usr/share/vulkansc - [VULKAN_ICD_JSON]=/usr/share/vulkan - [WINE_LIB]=/usr/${libdir}/nvidia/wine - [XORG_OUTPUTCLASS_CONFIG]=/usr/share/X11/xorg.conf.d - - [GLX_MODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules/extensions - [GLX_MODULE_SYMLINK]=/usr/${libdir}/xorg/modules - [XMODULE_SHARED_LIB]=/usr/${libdir}/xorg/modules - ) - - local skip_files=( - $(usev !X "libGLX_nvidia libglxserver_nvidia") - libGLX_indirect # non-glvnd unused fallback - libnvidia-{gtk,wayland-client} nvidia-{settings,xconfig} # from source - libnvidia-egl-gbm 15_nvidia_gbm # gui-libs/egl-gbm - libnvidia-egl-wayland 10_nvidia_wayland # gui-libs/egl-wayland - libnvidia-egl-wayland2 99_nvidia_wayland2 # gui-libs/egl-wayland2 - libnvidia-egl-xcb 20_nvidia_xcb.json # gui-libs/egl-x11 - libnvidia-egl-xlib 20_nvidia_xlib.json # gui-libs/egl-x11 - libnvidia-pkcs11.so # using the openssl3 version instead - ) - local skip_modules=( - $(usev !X "nvfbc vdpau xdriver") - $(usev !modules gsp) - $(usev !powerd nvtopps) - installer nvpd # handled separately / built from source - ) - local skip_types=( - GLVND_LIB GLVND_SYMLINK EGL_CLIENT.\* GLX_CLIENT.\* # media-libs/libglvnd - OPENCL_WRAPPER.\* # virtual/opencl - DOCUMENTATION DOT_DESKTOP .\*_SRC DKMS_CONF SYSTEMD_UNIT # handled separately / unused - ) - - local DOCS=( - README.txt NVIDIA_Changelog supported-gpus/supported-gpus.json - nvidia-settings/doc/{FRAMELOCK,NV-CONTROL-API}.txt - ) - local HTML_DOCS=( html/. ) - einstalldocs - - local DISABLE_AUTOFORMATTING=yes - local DOC_CONTENTS="\ -Trusted users should be in the 'video' group to use NVIDIA devices. -You can add yourself by using: gpasswd -a my-user video\ -$(usev modules " - -Like all out-of-tree kernel modules, it is necessary to rebuild -${PN} after upgrading or rebuilding the Linux kernel -by for example running \`emerge @module-rebuild\`. Alternatively, -if using a distribution kernel (sys-kernel/gentoo-kernel{,-bin}), -this can be automated by setting USE=dist-kernel globally. - -Loaded kernel modules also must not mismatch with the installed -${PN} version (excluding -r revision), meaning should -ensure \`eselect kernel list\` points to the kernel that will be -booted before building and preferably reboot after upgrading -${PN} (the ebuild will emit a warning if mismatching). - -See '${EPREFIX}/etc/modprobe.d/nvidia.conf' for modules options.")\ -$(use amd64 && usev !abi_x86_32 " - -Note that without USE=abi_x86_32 on ${PN}, 32bit applications -(typically using wine / steam) will not be able to use GPU acceleration.") - -For additional information or for troubleshooting issues, please see -https://wiki.gentoo.org/wiki/NVIDIA/nvidia-drivers and NVIDIA's own -documentation that is installed alongside this README." - readme.gentoo_create_doc - - if use modules; then - linux-mod-r1_src_install - - insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-590.conf nvidia.conf - - # used for gpu verification with binpkgs (not kept, see pkg_preinst) - insinto /usr/share/nvidia - doins supported-gpus/supported-gpus.json - fi - - emake "${NV_ARGS[@]}" -C nvidia-modprobe install - fowners :video /usr/bin/nvidia-modprobe #505092 - fperms 4710 /usr/bin/nvidia-modprobe - - if use persistenced; then - emake "${NV_ARGS[@]}" -C nvidia-persistenced install - newconfd "${FILESDIR}"/nvidia-persistenced.confd nvidia-persistenced - newinitd "${FILESDIR}"/nvidia-persistenced.initd nvidia-persistenced - systemd_dounit "${T}"/nvidia-persistenced.service - fi - - if use tools; then - emake "${NV_ARGS[@]}" -C nvidia-settings install - - doicon nvidia-settings/doc/nvidia-settings.png - domenu nvidia-settings/doc/nvidia-settings.desktop - - exeinto /etc/X11/xinit/xinitrc.d - newexe "${FILESDIR}"/95-nvidia-settings-r1 95-nvidia-settings - fi - - if use static-libs; then - dolib.a nvidia-settings/src/out/libXNVCtrl.a - strip-lto-bytecode - - insinto /usr/include/NVCtrl - doins nvidia-settings/src/libXNVCtrl/NVCtrl{Lib,}.h - fi - - use X && emake "${NV_ARGS[@]}" -C nvidia-xconfig install - - # mimic nvidia-installer by reading .manifest to install files - # 0:file 1:perms 2:type 3+:subtype/arguments -:module - local m into - while IFS=' ' read -ra m; do - ! [[ ${#m[@]} -ge 2 && ${m[-1]} =~ MODULE: ]] || - [[ " ${m[0]##*/}" =~ ^(\ ${skip_files[*]/%/.*|\\} )$ ]] || - [[ " ${m[2]}" =~ ^(\ ${skip_types[*]/%/|\\} )$ ]] || - has ${m[-1]#MODULE:} "${skip_modules[@]}" && continue - - case ${m[2]} in - MANPAGE) - gzip -dc ${m[0]} | newman - ${m[0]%.gz} - pipestatus || die - continue - ;; - GBM_BACKEND_LIB_SYMLINK) m[4]=../${m[4]};; # missing ../ - VDPAU_SYMLINK) m[4]=vdpau/; m[5]=${m[5]#vdpau/};; # .so to vdpau/ - esac - - if [[ -v 'paths[${m[2]}]' ]]; then - into=${paths[${m[2]}]} - elif [[ ${m[2]} == EXPLICIT_PATH ]]; then - into=${m[3]} - elif [[ ${m[2]} == *_BINARY ]]; then - into=/usr/bin - elif [[ ${m[3]} == COMPAT32 ]]; then - use abi_x86_32 || continue - into=/usr/${libdir32} - elif [[ ${m[2]} == *_@(LIB|SYMLINK) ]]; then - into=/usr/${libdir} - else - die "No known installation path for ${m[0]}" - fi - [[ ${m[3]: -2} == ?/ ]] && into+=/${m[3]%/} - [[ ${m[4]: -2} == ?/ ]] && into+=/${m[4]%/} - - if [[ ${m[2]} =~ _SYMLINK$ ]]; then - [[ ${m[4]: -1} == / ]] && m[4]=${m[5]} - dosym ${m[4]} ${into}/${m[0]} - continue - fi - # avoid portage warning due to missing soname links in manifest - [[ ${m[0]} =~ ^libnvidia-ngx.so ]] && - dosym ${m[0]} ${into}/${m[0]%.so*}.so.1 - - printf -v m[1] %o $((m[1] | 0200)) # 444->644 - insopts -m${m[1]} - insinto ${into} - doins ${m[0]} - done < .manifest || die - insopts -m0644 # reset - - # MODULE:installer non-skipped extras - : "$(systemd_get_sleepdir)" - exeinto "${_#"${EPREFIX}"}" - doexe systemd/system-sleep/nvidia - dobin systemd/nvidia-sleep.sh - systemd_dounit systemd/system/nvidia-{hibernate,resume,suspend,suspend-then-hibernate}.service - - dobin nvidia-bug-report.sh - - insinto /usr/share/nvidia/files.d - doins sandboxutils-filelist.json - - # MODULE:powerd extras - if use powerd; then - newinitd "${FILESDIR}"/nvidia-powerd.initd nvidia-powerd #923117 - systemd_dounit systemd/system/nvidia-powerd.service - - insinto /usr/share/dbus-1/system.d - doins nvidia-dbus.conf - fi - - # enabling is needed for sleep to work properly and little reason not to do - # it unconditionally for a better user experience - : "$(systemd_get_systemunitdir)" - local unitdir=${_#"${EPREFIX}"} - # not using relative symlinks to match systemd's own links - dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-hibernate.service - dosym {"${unitdir}",/etc/systemd/system/systemd-hibernate.service.wants}/nvidia-resume.service - dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-suspend.service - dosym {"${unitdir}",/etc/systemd/system/systemd-suspend.service.wants}/nvidia-resume.service - dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-suspend-then-hibernate.service - dosym {"${unitdir}",/etc/systemd/system/systemd-suspend-then-hibernate.service.wants}/nvidia-resume.service - # also add a custom elogind hook to do the equivalent of the above - exeinto /usr/lib/elogind/system-sleep - newexe "${FILESDIR}"/system-sleep.elogind nvidia - # =systemd-256 or may fail to resume with some setups - # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1072722 - insinto "${unitdir}"/systemd-homed.service.d - newins - 10-nvidia.conf <<-EOF - [Service] - Environment=SYSTEMD_HOME_LOCK_FREEZE_SESSION=false - EOF - insinto "${unitdir}"/systemd-suspend.service.d - newins - 10-nvidia.conf <<-EOF - [Service] - Environment=SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false - EOF - dosym -r "${unitdir}"/systemd-{suspend,hibernate}.service.d/10-nvidia.conf - dosym -r "${unitdir}"/systemd-{suspend,hybrid-sleep}.service.d/10-nvidia.conf - dosym -r "${unitdir}"/systemd-{suspend,suspend-then-hibernate}.service.d/10-nvidia.conf - - # symlink non-versioned so nvidia-settings can use it even if misdetected - dosym nvidia-application-profiles-${PV}-key-documentation \ - ${paths[APPLICATION_PROFILE]}/nvidia-application-profiles-key-documentation - - # don't attempt to strip firmware files (silences errors) - dostrip -x ${paths[FIRMWARE]} - - # sandbox issues with /dev/nvidiactl and others (bug #904292,#921578) - # are widespread and sometime affect revdeps of packages built with - # USE=opencl/cuda making it hard to manage in ebuilds (minimal set, - # ebuilds should handle manually if need others or addwrite) - insinto /etc/sandbox.d - newins - 20nvidia <<<'SANDBOX_PREDICT="/dev/nvidiactl:/dev/nvidia-caps:/dev/char"' - - # dracut does not use /etc/modprobe.d if hostonly=no, but want to make sure - # our settings are used for bug 932781#c8 and nouveau blacklist if either - # modules are included (however, just best-effort without initramfs regen) - if use modules; then - echo "install_items+=\" ${EPREFIX}/etc/modprobe.d/nvidia.conf \"" >> \ - "${ED}"/usr/lib/dracut/dracut.conf.d/10-${PN}.conf || die - fi -} - -pkg_preinst() { - use modules || return - - # set video group id based on live system (bug #491414) - local g=$(egetent group video | cut -d: -f3) - [[ ${g} =~ ^[0-9]+$ ]] || die "Failed to determine video group id (got '${g}')" - sed -i "s/@VIDEOGID@/${g}/" "${ED}"/etc/modprobe.d/nvidia.conf || die - - # try to find driver mismatches using temporary supported-gpus.json - for g in $(grep -l 0x10de /sys/bus/pci/devices/*/vendor 2>/dev/null); do - g=$(grep -io "\"devid\":\"$(<${g%vendor}device)\"[^}]*branch\":\"[0-9]*" \ - "${ED}"/usr/share/nvidia/supported-gpus.json 2>/dev/null) - if [[ ${g} ]]; then - g=$((${g##*\"}+1)) - if ver_test -ge ${g}; then - NV_LEGACY_MASK=">=${CATEGORY}/${PN}-${g}" - break - fi - fi - done - rm "${ED}"/usr/share/nvidia/supported-gpus.json || die -} - -pkg_postinst() { - linux-mod-r1_pkg_postinst - - readme.gentoo_print_elog - - if [[ -r /proc/driver/nvidia/version && - $( ${EROOT}/etc/portage/package.mask/${PN}" - else - ewarn " echo '${NV_LEGACY_MASK}' >> ${EROOT}/etc/portage/package.mask" - fi - ewarn "...then downgrade to a legacy[1] branch if possible (not all old versions" - ewarn "are available or fully functional, may need to consider nouveau[2])." - ewarn "[1] https://www.nvidia.com/object/IO_32667.html" - ewarn "[2] https://wiki.gentoo.org/wiki/Nouveau" - fi - - if ver_replacing -lt 590; then - elog "\n>=${PN}-590 has changes that may or may not need attention:" - elog "1. support for Pascal, Maxwell, and Volta cards has been dropped" - elog " (if affected, there should be a another message about this above)" - elog "2. kernel-open USE is gone and the open source variant is *always* used" - elog " (no longer possible to disable GSP with NVreg_EnableGpuFirmware=0)" - elog "3. nvidia-drm.modeset=1 is now default regardless of USE=wayland" - elog "4. nvidia-drm.fbdev=1 is now also tentatively default to match upstream" - elog "See ${EROOT}/etc/modprobe.d/nvidia.conf to modify settings if needed," - elog "fbdev=1 *could* cause issues for the console display with some setups." - fi -} diff --git a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01.ebuild b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01-r1.ebuild similarity index 91% rename from sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01.ebuild rename to sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01-r1.ebuild index 79ae5026092..de8dcd9a226 100644 --- a/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01.ebuild +++ b/sdk_container/src/third_party/portage-stable/x11-drivers/nvidia-drivers/nvidia-drivers-590.48.01-r1.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2025 Gentoo Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 @@ -7,7 +7,7 @@ MODULES_OPTIONAL_IUSE=+modules inherit desktop dot-a eapi9-pipestatus eapi9-ver flag-o-matic linux-mod-r1 inherit readme.gentoo-r1 systemd toolchain-funcs unpacker user-info -MODULES_KERNEL_MAX=6.18 +MODULES_KERNEL_MAX=6.19 NV_URI="https://download.nvidia.com/XFree86/" DESCRIPTION="NVIDIA Accelerated Graphics Driver" @@ -27,9 +27,11 @@ LICENSE=" curl openssl public-domain " SLOT="0/${PV%%.*}" -# kept unkeyworded due to being a beta, users are free to opt-in for testing KEYWORDS="-* ~amd64 ~arm64" -IUSE="+X abi_x86_32 abi_x86_64 persistenced powerd +static-libs +tools wayland" +IUSE=" + +X abi_x86_32 abi_x86_64 +kernel-open persistenced powerd + +static-libs +tools wayland +" COMMON_DEPEND=" acct-group/video @@ -101,6 +103,7 @@ QA_PREBUILT="lib/firmware/* usr/bin/* usr/lib*" PATCHES=( "${FILESDIR}"/nvidia-modprobe-390.141-uvm-perms.patch "${FILESDIR}"/nvidia-settings-530.30.02-desktop.patch + "${FILESDIR}"/nvidia-kernel-module-source-${PV}-kernel6.19.patch ) pkg_setup() { @@ -111,13 +114,14 @@ pkg_setup() { require_configured_kernel local CONFIG_CHECK=" - MMU_NOTIFIER PROC_FS ~DRM_KMS_HELPER ~DRM_FBDEV_EMULATION ~SYSVIPC ~!LOCKDEP ~!PREEMPT_RT + ~!RANDSTRUCT_FULL + ~!RANDSTRUCT_PERFORMANCE ~!SLUB_DEBUG_ON !DEBUG_MUTEXES $(usev powerd '~CPU_FREQ') @@ -128,6 +132,8 @@ pkg_setup() { use amd64 && kernel_is -ge 5 8 && CONFIG_CHECK+=" X86_PAT" #817764 + use kernel-open && CONFIG_CHECK+=" MMU_NOTIFIER" #843827 + local drm_helper_msg="Cannot be directly selected in the kernel's config menus, and may need selection of a DRM device even if unused, e.g. CONFIG_DRM_QXL=m or DRM_AMDGPU=m (among others, consult the kernel config's help), can @@ -142,7 +148,7 @@ pkg_setup() { local ERROR_DRM_FBDEV_EMULATION="CONFIG_DRM_FBDEV_EMULATION: is not set but is needed for nvidia-drm.fbdev=1 support (see ${EPREFIX}/etc/modprobe.d/nvidia.conf), may result in a blank console/tty." - local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but is required for compilation. + local ERROR_MMU_NOTIFIER="CONFIG_MMU_NOTIFIER: is not set but needed to build with USE=kernel-open. Cannot be directly selected in the kernel's menuconfig, and may need selection of another option that requires it such as CONFIG_AMD_IOMMU=y, or DRM_I915=m (among others, consult the kernel config's help)." @@ -150,6 +156,13 @@ pkg_setup() { will fail to build unless the env var IGNORE_PREEMPT_RT_PRESENCE=1 is set. Please do not report issues if run into e.g. kernel panics while ignoring this." + local randstruct_msg="is set but NVIDIA may be unstable with + it such as causing a kernel panic on shutdown, it is recommended to + disable with CONFIG_RANDSTRUCT_NONE=y (https://bugs.gentoo.org/969413 + -- please report if this appears fixed on NVIDIA's side so can remove + this warning)." + local ERROR_RANDSTRUCT_FULL="CONFIG_RANDSTRUCT_FULL: ${randstruct_msg}" + local ERROR_RANDSTRUCT_PERFORMANCE="CONFIG_RANDSTRUCT_PERFORMANCE: ${randstruct_msg}" linux-mod-r1_pkg_setup } @@ -183,6 +196,14 @@ src_compile() { local xnvflags=-fPIC #840389 tc-is-lto && xnvflags+=" $(test-flags-CC -ffat-lto-objects)" + # Same as uname -m. + local target_arch + case ${ARCH} in + amd64) target_arch=x86_64 ;; + arm64) target_arch=aarch64 ;; + *) die "Unrecognised architecture: ${ARCH}" ;; + esac + NV_ARGS=( PREFIX="${EPREFIX}"/usr HOST_CC="$(tc-getBUILD_CC)" @@ -190,6 +211,7 @@ src_compile() { BUILD_GTK2LIB= NV_USE_BUNDLED_LIBJANSSON=0 NV_VERBOSE=1 DO_STRIP= MANPAGE_GZIP= OUTPUTDIR=out + TARGET_ARCH="${target_arch}" WAYLAND_AVAILABLE=$(usex wayland 1 0) XNVCTRL_CFLAGS="${xnvflags}" ) @@ -197,18 +219,24 @@ src_compile() { if use modules; then local o_cflags=${CFLAGS} o_cxxflags=${CXXFLAGS} o_ldflags=${LDFLAGS} - # environment flags are normally unused for modules, but nvidia uses - # them for building the formerly closed "blob" and it is a bit fragile - filter-flags -fno-plt #912949 - filter-lto - CC=${KERNEL_CC} CXX=${KERNEL_CXX} strip-unsupported-flags - LDFLAGS=$(raw-ldflags) + local modlistargs=video:kernel + if use kernel-open; then + modlistargs+=-module-source:kernel-module-source/kernel-open + + # environment flags are normally unused for modules, but nvidia + # uses it for building the "blob" and it is a bit fragile + filter-flags -fno-plt #912949 + filter-lto + CC=${KERNEL_CC} CXX=${KERNEL_CXX} strip-unsupported-flags + + LDFLAGS=$(raw-ldflags) + fi - : video:kernel-module-source:kernel-module-source/kernel-open - local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=${_} ) + local modlist=( nvidia{,-drm,-modeset,-peermem,-uvm}=${modlistargs} ) local modargs=( IGNORE_CC_MISMATCH=yes NV_VERBOSE=1 SYSOUT="${KV_OUT_DIR}" SYSSRC="${KV_DIR}" + TARGET_ARCH="${target_arch}" # kernel takes "x86" and "x86_64" as meaning the same, but nvidia # makes the distinction (since 550.135) and is not happy with "x86" @@ -324,7 +352,7 @@ documentation that is installed alongside this README." linux-mod-r1_src_install insinto /etc/modprobe.d - newins "${FILESDIR}"/nvidia-590.conf nvidia.conf + newins "${FILESDIR}"/nvidia-580.conf nvidia.conf # used for gpu verification with binpkgs (not kept, see pkg_preinst) insinto /usr/share/nvidia @@ -557,10 +585,11 @@ pkg_postinst() { elog "\n>=${PN}-590 has changes that may or may not need attention:" elog "1. support for Pascal, Maxwell, and Volta cards has been dropped" elog " (if affected, there should be a another message about this above)" - elog "2. kernel-open USE is gone and the open source variant is *always* used" - elog " (no longer possible to disable GSP with NVreg_EnableGpuFirmware=0)" + elog "2. USE=kernel-open is now enabled by default" + elog " (generally safe and recommended, but some setups may hit regressions)" elog "3. nvidia-drm.modeset=1 is now default regardless of USE=wayland" elog "4. nvidia-drm.fbdev=1 is now also tentatively default to match upstream" + elog "(3+4 were also later changed in >=580.126.09-r1, may already be in-use)" elog "See ${EROOT}/etc/modprobe.d/nvidia.conf to modify settings if needed," elog "fbdev=1 *could* cause issues for the console display with some setups." fi From 0f51084aa13af74153ab825309e779a60f716667 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Fri, 5 Jul 2024 14:19:11 +0100 Subject: [PATCH 4/8] Stop trying to create lib->lib64 symlink We stopped using profiles with a lib->lib64 symlink a while ago, so there is no point in checking for this any more. We weren't checking against the target SDK architecture anyway. Signed-off-by: James Le Cuirot --- bootstrap_sdk | 11 +---------- build_library/set_lsb_release | 1 + build_library/toolchain_util.sh | 4 ---- 3 files changed, 2 insertions(+), 14 deletions(-) diff --git a/bootstrap_sdk b/bootstrap_sdk index 834506ee6d2..0c636beda2b 100755 --- a/bootstrap_sdk +++ b/bootstrap_sdk @@ -65,16 +65,7 @@ ROOT_OVERLAY=${TEMPDIR}/stage4_overlay if [[ "$STAGES" =~ stage4 ]]; then info "Setting release to ${FLATCAR_VERSION}" rm -rf "${ROOT_OVERLAY}" - # need to setup the lib->lib64 symlink correctly - libdir=$(get_sdk_libdir) - mkdir -p "${ROOT_OVERLAY}/usr/${libdir}" - if [[ "${libdir}" != lib ]]; then - if [[ "$(get_sdk_symlink_lib)" == "yes" ]]; then - ln -s "${libdir}" "${ROOT_OVERLAY}/usr/lib" - else - mkdir -p "${ROOT_OVERLAY}/usr/lib" - fi - fi + mkdir -p "${ROOT_OVERLAY}" "${BUILD_LIBRARY_DIR}/set_lsb_release" \ --root "${ROOT_OVERLAY}" fi diff --git a/build_library/set_lsb_release b/build_library/set_lsb_release index f86c968909f..4681cb5eda6 100755 --- a/build_library/set_lsb_release +++ b/build_library/set_lsb_release @@ -45,6 +45,7 @@ sudo ln -sf "../usr/share/flatcar/lsb-release" "${ROOT_FS_DIR}/etc/lsb-release" # And the new standard, os-release # https://www.freedesktop.org/software/systemd/man/os-release.html +sudo mkdir -p "${ROOT_FS_DIR}/usr/lib" sudo_clobber "${ROOT_FS_DIR}/usr/lib/os-release" < Date: Fri, 5 Jul 2024 15:05:53 +0100 Subject: [PATCH 5/8] Stop creating /usr/lib64/os-release compatibility symlink We currently put an os-release symlink in lib64, but we shouldn't assume that the architecture will even have a lib64 directory. I doubt this compatibility symlink was needed anyway. Gentoo doesn't have one, and applications are supposed to check /etc/os-release. I can find almost no reference to /usr/lib64/os-release anywhere, let alone in Flatcar. Signed-off-by: James Le Cuirot --- build_library/set_lsb_release | 4 ---- 1 file changed, 4 deletions(-) diff --git a/build_library/set_lsb_release b/build_library/set_lsb_release index 4681cb5eda6..514bba7c2de 100755 --- a/build_library/set_lsb_release +++ b/build_library/set_lsb_release @@ -63,10 +63,6 @@ CPE_NAME="cpe:2.3:o:${OS_ID}-linux:${OS_ID}_linux:${FLATCAR_VERSION}:*:*:*:*:*:* EOF sudo ln -sf "../usr/lib/os-release" "${ROOT_FS_DIR}/etc/os-release" sudo ln -sf "../../lib/os-release" "${ROOT_FS_DIR}/usr/share/flatcar/os-release" -# Compat for split of lib64 into lib and lib64 -if [ ! -e "${ROOT_FS_DIR}/usr/lib64/os-release" ]; then - sudo ln -sf "../lib/os-release" "${ROOT_FS_DIR}/usr/lib64/os-release" -fi # Create the defaults for the coreos configuration files in the usr directory sudo_clobber "${ROOT_FS_DIR}/usr/share/flatcar/release" < Date: Mon, 15 Jul 2024 12:03:01 +0100 Subject: [PATCH 6/8] Support building the SDK for arm64 Catalyst 4 adds support for building with QEMU, so I initially leveraged this, but it turned out to be very much slower than emulating the amd64 SDK on arm64, where an arm64 build could then be mostly run without emulation. I have kept the code for the slower approach anyway since it is small and may be useful to somebody. There were several places where we assumed that amd64 was native and arm64 required emulation via QEMU. The scripts are now more architecture-agnostic, paving the way for riscv support later. We no longer set QEMU_LD_PREFIX because it prevents the SDK itself from being emulated. It also assumes there is only one non-native target, which may not always be the case. bubblewrap does a better job of running binaries under QEMU. Signed-off-by: James Le Cuirot --- build_library/build_image_util.sh | 29 +++----------- build_library/catalyst.sh | 15 ++++++++ build_library/portage/env/releng/qemu | 1 + build_library/portage/package.env/qemu | 1 + build_library/prod_image_util.sh | 1 + common.sh | 38 ------------------- .../coreos/config/env/dev-lang/rust | 3 +- .../profiles/coreos/amd64/sdk/package.use | 3 ++ .../profiles/coreos/arm64/sdk/package.use | 3 ++ .../coreos/arm64/sdk/transition/parent | 2 + .../profiles/coreos/targets/sdk/make.defaults | 6 --- .../profiles/coreos/targets/sdk/package.use | 2 +- setup_board | 26 ++++++++++--- 13 files changed, 54 insertions(+), 76 deletions(-) create mode 100644 build_library/portage/env/releng/qemu create mode 100644 build_library/portage/package.env/qemu create mode 100644 sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/sdk/package.use create mode 100644 sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/sdk/transition/parent diff --git a/build_library/build_image_util.sh b/build_library/build_image_util.sh index 221095d45cd..4ff46dcb03c 100755 --- a/build_library/build_image_util.sh +++ b/build_library/build_image_util.sh @@ -102,32 +102,13 @@ zip_update_tools() { --arch "$(get_sdk_arch)" --output-dir "${BUILD_DIR}" --zip-name "${update_zip}" } -# ldconfig cannot generate caches for non-native arches. -# Use qemu & the native ldconfig to work around that. -# http://code.google.com/p/chromium/issues/detail?id=378377 run_ldconfig() { - local root_fs_dir=$1 - case ${ARCH} in - arm64) - sudo qemu-aarch64 "${root_fs_dir}"/usr/sbin/ldconfig -r "${root_fs_dir}";; - x86|amd64) - sudo ldconfig -r "${root_fs_dir}";; - *) - die "Unable to run ldconfig for ARCH ${ARCH}" - esac + # This wrapper is created by setup_board. + sudo "ldconfig-${BOARD}" -r "$1" } run_localedef() { - local root_fs_dir="$1" loader=() - case ${ARCH} in - arm64) - loader=( qemu-aarch64 -L "${root_fs_dir}" );; - amd64) - loader=( "${root_fs_dir}/usr/lib64/ld-linux-x86-64.so.2" \ - --library-path "${root_fs_dir}/usr/lib64" );; - *) - die "Unable to run localedef for ARCH ${ARCH}";; - esac + local root_fs_dir="$1" info "Generating C.UTF-8 locale..." local i18n="${root_fs_dir}/usr/share/i18n" # localedef will silently fall back to /usr/share/i18n if missing so @@ -135,8 +116,8 @@ run_localedef() { [[ -f "${i18n}/charmaps/UTF-8.gz" ]] || die [[ -f "${i18n}/locales/C" ]] || die sudo mkdir -p "${root_fs_dir}/usr/lib/locale" - sudo I18NPATH="${i18n}" "${loader[@]}" "${root_fs_dir}/usr/bin/localedef" \ - --prefix="${root_fs_dir}" --charmap=UTF-8 --inputfile=C C.UTF-8 + sudo I18NPATH="${i18n}" "bwrap-${BOARD}" "${root_fs_dir}" /usr/bin/localedef \ + --charmap=UTF-8 --inputfile=C C.UTF-8 } # Basic command to emerge binary packages into the target image. diff --git a/build_library/catalyst.sh b/build_library/catalyst.sh index 3e792417bed..c4055cee63a 100644 --- a/build_library/catalyst.sh +++ b/build_library/catalyst.sh @@ -25,6 +25,7 @@ BINPKGS= DISTDIR= TEMPDIR= STAGES= +unset QEMU DEFINE_string catalyst_root "${DEFAULT_CATALYST_ROOT}" \ "Path to directory for all catalyst images and other files." @@ -97,6 +98,7 @@ cflags: -O2 -pipe cxxflags: -O2 -pipe ldflags: -Wl,-O2 -Wl,--as-needed source_subpath: ${SEED} +${QEMU+interpreter: $(type -P "${QEMU}")} EOF } @@ -207,6 +209,16 @@ catalyst_init() { SEED="seed/${FLAGS_seed_tarball##*/}" SEED="${SEED%.tar.*}" fi + + # Emulate the build, if needed. Note the SDK itself may already be emulated, + # so check the requested arch against the kernel's real arch, not uname -m. + if [[ ${ARCH} != $(get_portage_arch "$(< /proc/sys/kernel/arch)") ]]; then + case "${ARCH}" in + amd64) QEMU=qemu-x86_64 ;; + arm64) QEMU=qemu-aarch64 ;; + riscv) QEMU=qemu-riscv64 ;; + esac + fi } write_configs() { @@ -226,6 +238,9 @@ write_configs() { ln -sfT '/mnt/host/source/src/third_party/coreos-overlay/coreos/user-patches' \ "${TEMPDIR}"/portage/patches + + [[ -n ${QEMU} ]] || + rm "${TEMPDIR}"/portage/package.env/qemu } build_stage() { diff --git a/build_library/portage/env/releng/qemu b/build_library/portage/env/releng/qemu new file mode 100644 index 00000000000..de86517db4d --- /dev/null +++ b/build_library/portage/env/releng/qemu @@ -0,0 +1 @@ +FEATURES="-pid-sandbox -network-sandbox -ipc-sandbox" diff --git a/build_library/portage/package.env/qemu b/build_library/portage/package.env/qemu new file mode 100644 index 00000000000..60c290a8ba7 --- /dev/null +++ b/build_library/portage/package.env/qemu @@ -0,0 +1 @@ +*/* releng/qemu diff --git a/build_library/prod_image_util.sh b/build_library/prod_image_util.sh index b6d760fba2a..d45936f06da 100755 --- a/build_library/prod_image_util.sh +++ b/build_library/prod_image_util.sh @@ -139,6 +139,7 @@ create_prod_image() { sudo rm -rf "${BUILD_DIR}/root_fs_dir2" # clean-ups of things we do not need + sudo find ${root_fs_dir}/usr/bin -empty -delete # Bind mounts created by bwrap sudo rm ${root_fs_dir}/etc/csh.env sudo rm -rf ${root_fs_dir}/etc/env.d sudo rm -rf ${root_fs_dir}/usr/include diff --git a/common.sh b/common.sh index 3dbb8040dc3..0cff99ed563 100644 --- a/common.sh +++ b/common.sh @@ -51,9 +51,6 @@ fi # Turn on bash debug support if available for backtraces. shopt -s extdebug 2>/dev/null -# Source qemu library path -. /etc/profile.d/qemu-aarch64.sh 2> /dev/null || true - # Output a backtrace all the way back to the raw invocation, suppressing # only the _dump_trace frame itself. _dump_trace() { @@ -992,38 +989,3 @@ BOAT echo -e "${V_VIDOFF}" die "$* failed" } - -# The binfmt_misc support in the kernel is required. -# The aarch64 binaries should be executed through -# "/usr/bin/qemu-aarch64-static" -setup_qemu_static() { - local root_fs_dir="$1" - case "${BOARD}" in - amd64-usr) return 0;; - arm64-usr) - if [[ -f "${root_fs_dir}/sbin/ldconfig" ]]; then - sudo cp /usr/bin/qemu-aarch64 "${root_fs_dir}"/usr/bin/qemu-aarch64-static - echo export QEMU_LD_PREFIX=\"/build/arm64-usr/\" | sudo tee /etc/profile.d/qemu-aarch64.sh - . /etc/profile.d/qemu-aarch64.sh - else - die "Missing basic layout in target rootfs" - fi - ;; - *) die "Unsupported arch" ;; - esac -} - -clean_qemu_static() { - local root_fs_dir="$1" - case "${BOARD}" in - amd64-usr) return 0;; - arm64-usr) - if [[ -f "${root_fs_dir}/usr/bin/qemu-aarch64-static" ]]; then - sudo rm "${root_fs_dir}"/usr/bin/qemu-aarch64-static - else - die "File not found" - fi - ;; - *) die "Unsupported arch" ;; - esac -} diff --git a/sdk_container/src/third_party/coreos-overlay/coreos/config/env/dev-lang/rust b/sdk_container/src/third_party/coreos-overlay/coreos/config/env/dev-lang/rust index c467aedeada..d72efdb3d5e 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos/config/env/dev-lang/rust +++ b/sdk_container/src/third_party/coreos-overlay/coreos/config/env/dev-lang/rust @@ -2,5 +2,6 @@ INSTALL_MASK+=" *rustdoc*" I_KNOW_WHAT_I_AM_DOING_CROSS=1 RUST_CROSS_TARGETS=( - $(aarch64-cros-linux-gnu-gcc --version >/dev/null && echo "AArch64:aarch64-unknown-linux-gnu:aarch64-cros-linux-gnu") + $(use arm64 || { aarch64-cros-linux-gnu-gcc --version &>/dev/null && echo "AArch64:aarch64-unknown-linux-gnu:aarch64-cros-linux-gnu"; }) + $(use amd64 || { x86_64-cros-linux-gnu-gcc --version &>/dev/null && echo "X86:x86_64-unknown-linux-gnu:x86_64-cros-linux-gnu" ; }) ) diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/amd64/sdk/package.use b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/amd64/sdk/package.use index e69de29bb2d..21b5b3ee045 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/amd64/sdk/package.use +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/amd64/sdk/package.use @@ -0,0 +1,3 @@ +# Don't build the user space emulator for this arch. It's not needed and gets in +# the way when using Catalyst with QEMU. +app-emulation/qemu -qemu_user_targets_x86_64 diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/sdk/package.use b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/sdk/package.use new file mode 100644 index 00000000000..c3e3f1eaed4 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/sdk/package.use @@ -0,0 +1,3 @@ +# Don't build the user space emulator for this arch. It's not needed and gets in +# the way when using Catalyst with QEMU. +app-emulation/qemu -qemu_user_targets_aarch64 diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/sdk/transition/parent b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/sdk/transition/parent new file mode 100644 index 00000000000..627544f8c19 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/arm64/sdk/transition/parent @@ -0,0 +1,2 @@ +.. +:coreos/targets/sdk/transition diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/sdk/make.defaults b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/sdk/make.defaults index 3fb2f4e9a72..5a6fa0111d9 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/sdk/make.defaults +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/sdk/make.defaults @@ -5,12 +5,6 @@ USE="cros_host expat man -pam" # Enable CPU architectures needed by Rust builds LLVM_TARGETS="X86 AArch64" -# Both x86_64 and i386 targets are required for grub testing -QEMU_SOFTMMU_TARGETS="x86_64 i386 aarch64" - -# For cross build support. -QEMU_USER_TARGETS="aarch64" - # add cros_host to bootstrapping USE flags so SDK / toolchains bootstrapping # will use vim's vimrc instead of baselayouts', BOOTSTRAP_USE="$BOOTSTRAP_USE cros_host" diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/sdk/package.use b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/sdk/package.use index 641b433bda1..2108e23b8b9 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/sdk/package.use +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/targets/sdk/package.use @@ -12,7 +12,7 @@ app-crypt/gnupg smartcard usb # for qemu app-arch/bzip2 static-libs -app-emulation/qemu -doc -jpeg ncurses python static-user virtfs qemu_softmmu_targets_x86_64 qemu_softmmu_targets_aarch64 +app-emulation/qemu -doc -jpeg ncurses python static-user virtfs qemu_softmmu_targets_aarch64 qemu_softmmu_targets_x86_64 qemu_user_targets_aarch64 qemu_user_targets_x86_64 dev-libs/glib static-libs dev-libs/libaio static-libs dev-libs/libpcre2 static-libs diff --git a/setup_board b/setup_board index c1acdc1f25d..0b97cc7c5b0 100755 --- a/setup_board +++ b/setup_board @@ -92,6 +92,13 @@ generate_all_wrappers() { # the board arch matches the SDK arch and therefore emulation is unnecessary. qemu=$(type -P "qemu-${BOARD_CHOST%%-*}") || unset qemu + # If emulation is necessary, then we need to create a placeholder to bind + # mount QEMU onto now. This avoids needing root to do it later. + if [[ -n ${qemu-} ]]; then + sudo mkdir -p "${BOARD_ROOT}${qemu%/*}" + sudo touch "${BOARD_ROOT}${qemu}" + fi + info "Generating wrapper scripts" for wrapper in emerge ebuild eclean equery portageq \ @@ -113,8 +120,20 @@ exec ${BOARD_CHOST}-gdb -iex 'set sysroot ${BOARD_ROOT}' "\$@" EOF wrappers+=( "${wrapper}" ) + # A general purpose wrapper for effectively chrooting using bubblewrap, + # together with emulation by QEMU if necessary. + wrapper="/usr/local/bin/bwrap-${BOARD_VARIANT}" + sudo_clobber "${wrapper}" < "$GCLIENT_ROOT/src/scripts/.default_board" fi From c45d5966edaf1ce01003ee8d7d2e6d5a30b9633a Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Thu, 22 May 2025 15:20:28 +0100 Subject: [PATCH 7/8] profiles: We don't use wrappers in the board sysroot anymore Signed-off-by: James Le Cuirot --- .../coreos-overlay/profiles/coreos/base/profile.bashrc | 8 -------- 1 file changed, 8 deletions(-) diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/profile.bashrc b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/profile.bashrc index 6165f45d053..b8dfb442218 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/profile.bashrc +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/profile.bashrc @@ -1,8 +1,6 @@ # Dumping ground for build-time helpers to utilize since SYSROOT/tmp/ # can be nuked at any time. CROS_BUILD_BOARD_TREE="${SYSROOT}/build" -CROS_BUILD_BOARD_BIN="${CROS_BUILD_BOARD_TREE}/bin" - CROS_ADDONS_TREE="/mnt/host/source/src/third_party/coreos-overlay/coreos" # Are we merging for the board sysroot, or for the SDK, or for @@ -118,12 +116,6 @@ cros_setup_hooks() { } cros_setup_hooks -# Since we're storing the wrappers in a board sysroot, make sure that -# is actually in our PATH. -cros_pre_pkg_setup_sysroot_build_bin_dir() { - PATH+=":${CROS_BUILD_BOARD_BIN}" -} - # Avoid modifications of the preexisting users - these are provided by # our baselayout and usermod can't change anything there anyway (it # complains that the user is not in /etc/passwd). From 8365726b7dad2bd2599a8e175709d5f944e120d4 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Mon, 23 Feb 2026 18:11:58 +0000 Subject: [PATCH 8/8] sys-apps/iucode_tool: Use unstable 2.3.1-r2 for a cross-compile fix Signed-off-by: James Le Cuirot --- .../profiles/coreos/base/package.accept_keywords | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords index 2d5bc352c4e..d4a54b9795d 100644 --- a/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords +++ b/sdk_container/src/third_party/coreos-overlay/profiles/coreos/base/package.accept_keywords @@ -124,3 +124,6 @@ sys-apps/azure-vm-utils # Our own ebuild fixing issues in Gentoo, hopefully will be fixed # there too eventually. =sys-libs/libselinux-3.8.1-r3 ~amd64 ~arm64 + +# Needed to build this amd64-specific package on other arches. +=sys-apps/iucode_tool-2.3.1-r2 ~amd64 ~arm64