From e5db0148cace799d366ba9e4db728faefd251f6e Mon Sep 17 00:00:00 2001 From: saundersp Date: Tue, 9 Sep 2025 02:31:13 +0200 Subject: [PATCH] Added dev-util/nvidia-cuda-toolkit-13.0.1 --- dev-util/nvidia-cuda-toolkit/Manifest | 3 + .../nvidia-cuda-toolkit-13.0.1.ebuild | 386 ++++++++++++++++++ .../dev-util/nvidia-cuda-toolkit-13.0.1 | 16 + 3 files changed, 405 insertions(+) create mode 100644 dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-13.0.1.ebuild create mode 100644 metadata/md5-cache/dev-util/nvidia-cuda-toolkit-13.0.1 diff --git a/dev-util/nvidia-cuda-toolkit/Manifest b/dev-util/nvidia-cuda-toolkit/Manifest index 0fceb23..076814f 100644 --- a/dev-util/nvidia-cuda-toolkit/Manifest +++ b/dev-util/nvidia-cuda-toolkit/Manifest @@ -3,5 +3,8 @@ AUX nvidia-cuda-toolkit-glibc-2.42.patch 1133 BLAKE2B 861f343e2f0921d5bfa17276de AUX parse_manifest.py 8488 BLAKE2B 8ac93a39276eaf89b41a5b0baa168b5974423077b0fd4b22841451514513c914fb4188863d73591f89975cc833dcb88bde289b0676f218715d8735a2d5c0f159 SHA512 4b2d9de215858d25319254666a22a184e26510a3488fc97a939704fab1e81a9baa363fc1168129618ce076de84d7acbeb71d98b8be272017f47b54c237d9b9a4 DIST cuda_13.0.0_580.65.06_linux.run 4300799649 BLAKE2B 7eaed96412d7bd937304780882cd4e3fd7feeccd0ee32c7a780bfc76155cbb1f2aea9e2b114202cb797e93467c6f34f98120c4cd02a6f7722c418b62e8b62a67 SHA512 1d09fd6f966e009c5ec461f72839bc70305cda99850ed58c446e4abffb25d9b88e50c0f03a23af13e90245be4b633592a50404cc7dd92cca42e21b8f8d790984 DIST cuda_13.0.0_580.65.06_linux_sbsa.run 3983090672 BLAKE2B 8c1d3904c8a7fc40bceedf77a6602a7cfb114c8ad0ea2954d34d9d6d21af80be956a58d41387c24666f66f6f5cafe7305a981b3a5d25fe77cc91a639caa8cc08 SHA512 58acff4db5c62a640517b24006ced20da6bc4ea2c9c15eb0bf6f054bc7599b109ade45ee11bd9bf413f20a283631b669cabaa5cd8e98891f766c922a9eb9a182 +DIST cuda_13.0.1_580.82.07_linux.run 4302469087 BLAKE2B 4e108eb2345d767c02af493cd0a6f61bce984a6cd8fef5c0ecff7d96e1374607c0c9614bf929bd2532464a69842e56dbd5d9b782eb3b2fbb93295e9ce9be2e14 SHA512 ec45bdbf883114092058a03f3efd03355d0d612597ce5baef812305a889e90d1faf8db805190ff19aa431b4c9b9454d8901bb38dcbec84278887d27ea10e965e +DIST cuda_13.0.1_580.82.07_linux_sbsa.run 4046343296 BLAKE2B 3c8c887768ecc89b998b0601780c29099862cb0f4782ea0afe88ff1f4fbd82759b18d56b710f88b2bb4abeac0cd522e6a36350012583b45830b58454db4685e1 SHA512 df7a1c339b149c36e68661d7cd2fe129e9bee120c5b8425809f28a0009307c013a7a9ee8011aa3605046935ecab9b8a3fdc7bee5fac7c187884273fa7212378a EBUILD nvidia-cuda-toolkit-13.0.0.ebuild 10904 BLAKE2B f6eef9e63d2449cf79580db20385d75e41ac263cf1e29482490d44946bc764399fe8c9701970cd2bce81ee08daf7eda5d11562ab490e7f7bcce0059ee6d3546d SHA512 a52fc76ee73a2bdc234c642eff5ecadbd9136f81cdbbf7a857a58a83f8c5daf4a7f6160c55144ee8b383d5a6dd142885678eef20fe6b16955276ef286398b48b +EBUILD nvidia-cuda-toolkit-13.0.1.ebuild 10904 BLAKE2B 77e26991a4c85614177e16a4f9db243b2021cfed9b9d6147d828e41f070f7dc1fda24a6e542efadcff9a7cbdf5dab7001d3a85cf782d534a03a0cf550453dd7a SHA512 d787e9838ef59fcc63d5e4ea45259f0b62908773d0e3888235e2989a782d249197c1a363eabb519e01dfdbece29efa21e62456742659b97a3db645e319efcfc0 MISC metadata.xml 843 BLAKE2B 5ed06252572415290175ff90b66c1e13b67d282085295586e046019cc7d28b6e11728fba310bcf4101caaf09f4d1383f8df3f1c97325fa9e979dfa06e4704571 SHA512 208c83e0d968796d526b7223c5221f0805401b31420807a21f078797cba8e3f141c654017331a89649af2aa29a40cc1ff28f9cfa3ba2e6bee85fa76957c01837 diff --git a/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-13.0.1.ebuild b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-13.0.1.ebuild new file mode 100644 index 0000000..a328f09 --- /dev/null +++ b/dev-util/nvidia-cuda-toolkit/nvidia-cuda-toolkit-13.0.1.ebuild @@ -0,0 +1,386 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +# shellcheck disable=SC2317 + +EAPI=8 + +PYTHON_COMPAT=( python3_{11..14} ) +inherit check-reqs edo toolchain-funcs +inherit python-r1 + +DRIVER_PV="580.82.07" +GCC_MAX_VER="15" +CLANG_MAX_VER="20" + +DESCRIPTION="NVIDIA CUDA Toolkit (compiler and friends)" +HOMEPAGE="https://developer.nvidia.com/cuda-zone" +SRC_URI=" + amd64? ( + https://developer.download.nvidia.com/compute/cuda/${PV}/local_installers/cuda_${PV}_${DRIVER_PV}_linux.run + ) + arm64? ( + https://developer.download.nvidia.com/compute/cuda/${PV}/local_installers/cuda_${PV}_${DRIVER_PV}_linux_sbsa.run + ) +" +S="${WORKDIR}" + +LICENSE="NVIDIA-CUDA" + +SLOT="0/${PV}" # UNSLOTTED +# SLOT="${PV}" # SLOTTED + +KEYWORDS="-* ~amd64 ~arm64 ~amd64-linux ~arm64-linux" +IUSE="clang debugger examples nsight profiler rdma sanitizer" +RESTRICT="bindist mirror strip test" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +# since CUDA 11, the bundled toolkit driver (== ${DRIVER_PV}) and the +# actual required minimum driver version are different. +RDEPEND=" + !clang? ( + ${ED} ${_DESTDIR}" + } + + dopcfile() { + [[ $# -eq 0 ]] && return + + dodir "${CUDA_PATH}/pkgconfig" + cat > "${ED}${CUDA_PATH}/pkgconfig/${1}.pc" <<-EOF || die "dopcfile" + cudaroot=${EPREFIX}${CUDA_PATH} + libdir=\${cudaroot}/targets/${narch}-linux/lib${4} + includedir=\${cudaroot}/targets/${narch}-linux/include + + Name: ${1} + Description: ${3} + Version: ${2} + Libs: -L\${libdir} -l${1} + Cflags: -I\${includedir} + EOF + } + + pushd builds >/dev/null || die + fix_executable_bit=( + cuda_cupti/extras/CUPTI/samples/pc_sampling_utility/pc_sampling_utility_helper.h + cuda_cupti/extras/CUPTI/samples/pc_sampling_continuous/libpc_sampling_continuous.pl + + libcufile/gds/tools/run_gdsio.cfg + ) + + if use amd64; then + fix_executable_bit+=( + cuda_opencl/targets/*/include/CL/cl.hpp + + libcufile/targets/*/lib/libcufile_rdma_static.a + libcufile/targets/*/lib/libcufile_static.a + ) + fi + chmod -x "${fix_executable_bit[@]}" || die "failed chmod" + popd >/dev/null || die + + ebegin "parsing manifest" "${S}/manifests/cuda_"*.xml # {{{ + + "${EPYTHON}" "${FILESDIR}/parse_manifest.py" "${S}/manifests/cuda_"*".xml" &> "${T}/install.sh" \ + || die "failed to parse manifest" + # shellcheck disable=SC1091 + source "${T}/install.sh" || die "failed to source install script" + + eend $? # }}} + + if use debugger; then + if [[ -d "${ED}/${CUDA_PATH}/extras/Debugger/lib64" ]]; then + rmdir "${ED}/${CUDA_PATH}/extras/Debugger/lib64" || die "remove debugger lib64" + fi + + find "${ED}/${CUDA_PATH}/bin" -maxdepth 1 -name "cuda-gdb-*-tui" -print0 | while read -rd $'\0' tui_name; do + impl="$(basename "${tui_name}" | cut -d '-' -f 3 | tr '.' '_')" + + if ! has "${impl}" "${PYTHON_COMPAT[@]}" || ! use "python_targets_${impl}"; then + rm "${tui_name}" || die "tui-name rm ${tui_name}" + sed -e "/$(basename "${tui_name}")\"/d" -i "${ED}/${CUDA_PATH}/bin/cuda-gdb" || die "tui_name sed" + fi + done + fi + + # remove rdma libs (unless USE=rdma) + if ! use rdma; then + rm "${ED}/${CUDA_PATH}/targets/${narch}-linux/lib/libcufile_rdma"* || die "failed to remove rdma files" + fi + + # Add include and lib symlinks + mv "${D}${CUDA_PATH}/include/crt" "${D}${CUDA_PATH}/targets/${narch}-linux/include" + rmdir "${D}${CUDA_PATH}/include" + dosym -r "${CUDA_PATH}/targets/${narch}-linux/include" "${CUDA_PATH}/include" + dosym -r "${CUDA_PATH}/targets/${narch}-linux/lib" "${CUDA_PATH}/$(get_libdir)" + + find "${ED}/${CUDA_PATH}" -empty -delete || die + + local ldpathextradirs pathextradirs + + use debugger && ldpathextradirs+=":${EPREFIX}${CUDA_PATH}/extras/Debugger/lib64" + use profiler && ldpathextradirs+=":${EPREFIX}${CUDA_PATH}/extras/CUPTI/lib64" + + local revord=$(( 999999 - $(printf "%02d%02d%02d" "$(ver_cut 1)" "$(ver_cut 2)" "$(ver_cut 3)") )) + newenvd - "99cuda${revord}" <<-EOF + PATH=${EPREFIX}${CUDA_PATH}/bin${pathextradirs} + PKG_CONFIG_PATH=${EPREFIX}${CUDA_PATH}/pkgconfig + LDPATH=${EPREFIX}${CUDA_PATH}/$(get_libdir):${EPREFIX}${CUDA_PATH}/nvvm/lib64${ldpathextradirs} + EOF + + # CUDA prepackages libraries, don't revdep-build on them + insinto /etc/revdep-rebuild + newins - "80${PN}${revord}" <<-EOF + SEARCH_DIRS_MASK="${EPREFIX}${CUDA_PATH}" + EOF + + # https://bugs.gentoo.org/926116 + insinto /etc/sandbox.d + newins - "80${PN}" <<-EOF + SANDBOX_PREDICT="/proc/self/task" + EOF + + # TODO drop and replace with runtime detection similar to what python does {{{ + # ATTENTION: change requires revbump, see link below for supported GCC # versions + # https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#system-requirements + local cuda_supported_gcc=( 8.5 9.5 10 11 12 13 14 "${GCC_MAX_VER}" ) + + sed \ + -e "s:CUDA_SUPPORTED_GCC:${cuda_supported_gcc[*]}:g" \ + "${FILESDIR}"/cuda-config.in > "${ED}/${CUDA_PATH}/bin/cuda-config" || die + fperms +x "${CUDA_PATH}/bin/cuda-config" + # }}} + + # skip til cudnn has been changed #950207 + # if [[ "${SLOT}" != "${PV}" ]]; then + # dosym -r "${CUDA_PATH}" "${CUDA_PATH%"-${PV}"}" + # fi + + fowners -R root:root "${CUDA_PATH}" +} + +pkg_postinst_check() { + # Due to requiring specific compiler versions here, we check more then we have to, for the sake of clarity. + # tc-getCC defaults to gcc, so clang-major-version is checked using gcc and fails on gcc-profiles. # 959420 + # We therefore force gcc and clang for the check. + + if tc-is-gcc || ! use clang; then + if ver_test "$(CC=gcc gcc-major-version)" -gt "${GCC_MAX_VER}"; then + ewarn + ewarn "gcc > ${GCC_MAX_VER} will not work with CUDA" + ewarn + ewarn "Append --ccbin= pointing to a gcc bindir to the nvcc compiler flags (NVCCFLAGS)" + ewarn "or set NVCC_CCBIN to the same bindir." + ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/*-linux-gnu/gcc-bin/${GCC_MAX_VER}")\"" + ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/*-linux-gnu/gcc-bin/${GCC_MAX_VER}")" + ewarn + fi + fi + + if tc-is-clang || use clang; then + if ver_test "$(CC=clang clang-major-version)" -gt "${CLANG_MAX_VER}"; then + ewarn + ewarn "clang > ${CLANG_MAX_VER} will not work with CUDA" + ewarn + ewarn "Append --ccbin= pointing to a clang bindir to the nvcc compiler flags (NVCCFLAGS)" + ewarn "or set NVCC_CCBIN to the same bindir." + ewarn " NVCCFLAGS=\"--ccbin=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")\"" + ewarn " NVCC_CCBIN=$(eval echo "${EPREFIX}/usr/lib/llvm/*/bin${CLANG_MAX_VER}")" + ewarn + fi + fi +} + +pkg_postinst() { + if [[ ${MERGE_TYPE} != binary ]]; then + pkg_postinst_check + fi + + if use profiler; then + einfo + einfo "nvidia-drivers restricts access to performance counters." + einfo "You'll need to run profiling tools (nvprof) " + einfo "using sudo (needs cap SYS_ADMIN) or add the following line to " + einfo "a modprobe configuration file " + einfo "(e.g. /etc/modprobe.d/nvidia-prof.conf): " + einfo + einfo "options nvidia NVreg_RestrictProfilingToAdminUsers=0" + einfo + fi +} diff --git a/metadata/md5-cache/dev-util/nvidia-cuda-toolkit-13.0.1 b/metadata/md5-cache/dev-util/nvidia-cuda-toolkit-13.0.1 new file mode 100644 index 0000000..c452a3f --- /dev/null +++ b/metadata/md5-cache/dev-util/nvidia-cuda-toolkit-13.0.1 @@ -0,0 +1,16 @@ +BDEPEND=|| ( ( dev-lang/python:3.14 dev-python/defusedxml[python_targets_python3_14(-)] ) ( dev-lang/python:3.13 dev-python/defusedxml[python_targets_python3_13(-)] ) ( dev-lang/python:3.12 dev-python/defusedxml[python_targets_python3_12(-)] ) ( dev-lang/python:3.11 dev-python/defusedxml[python_targets_python3_11(-)] ) ) +DEFINED_PHASES=compile configure install postinst prepare pretend setup unpack +DESCRIPTION=NVIDIA CUDA Toolkit (compiler and friends) +EAPI=8 +HOMEPAGE=https://developer.nvidia.com/cuda-zone +INHERIT=check-reqs edo toolchain-funcs python-r1 +IUSE=clang debugger examples nsight profiler rdma sanitizer python_targets_python3_11 python_targets_python3_12 python_targets_python3_13 python_targets_python3_14 +KEYWORDS=-* ~amd64 ~arm64 ~amd64-linux ~arm64-linux +LICENSE=NVIDIA-CUDA +RDEPEND=!clang? (