From 5a4cab3f5f0fd9e2e7a6c417803856aeebf7a399 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 27 Mar 2025 15:12:23 +0100 Subject: [PATCH] cudaPackages.nsight-{compute,systems}: fix aarch64-linux builds --- .../cuda-modules/cuda/overrides.nix | 65 +++++++++++++------ 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/pkgs/development/cuda-modules/cuda/overrides.nix b/pkgs/development/cuda-modules/cuda/overrides.nix index a3957a6ca2a7..ece0788fb46f 100644 --- a/pkgs/development/cuda-modules/cuda/overrides.nix +++ b/pkgs/development/cuda-modules/cuda/overrides.nix @@ -306,6 +306,7 @@ filterAndCreateOverrides { qt5 ? null, qt6 ? null, rdma-core, + stdenv, }: prevAttrs: let @@ -318,6 +319,12 @@ filterAndCreateOverrides { else lib.getLib qt.qtwayland; inherit (qt) wrapQtAppsHook qtwebview; + archDir = + { + aarch64-linux = "linux-desktop-t210-a64"; + x86_64-linux = "linux-desktop-glibc_2_11_3-x64"; + } + .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); in { nativeBuildInputs = prevAttrs.nativeBuildInputs ++ [ wrapQtAppsHook ]; @@ -328,16 +335,22 @@ filterAndCreateOverrides { rdma-core ]; dontWrapQtApps = true; + preInstall = '' + rm -rf host/${archDir}/Mesa/ + ''; postInstall = '' moveToOutput 'ncu' "''${!outputBin}/bin" moveToOutput 'ncu-ui' "''${!outputBin}/bin" - moveToOutput 'host/*' "''${!outputBin}/bin" - moveToOutput 'target/*' "''${!outputBin}/bin" - wrapQtApp "''${!outputBin}/bin/host/linux-desktop-glibc_2_11_3-x64/ncu-ui.bin" + moveToOutput 'host/${archDir}' "''${!outputBin}/bin" + moveToOutput 'target/${archDir}' "''${!outputBin}/bin" + wrapQtApp "''${!outputBin}/bin/host/${archDir}/ncu-ui.bin" + ''; + preFixup = '' + # lib needs libtiff.so.5, but nixpkgs provides libtiff.so.6 + patchelf --replace-needed libtiff.so.5 libtiff.so "''${!outputBin}/bin/host/${archDir}/Plugins/imageformats/libqtiff.so" ''; autoPatchelfIgnoreMissingDeps = prevAttrs.autoPatchelfIgnoreMissingDeps ++ [ "libnvidia-ml.so.1" - "libtiff.so.5" ]; brokenConditions = prevAttrs.brokenConditions // { "Qt 5 missing (<2022.2.0)" = !(versionOlder version "2022.2.0" -> qt5 != null); @@ -358,6 +371,7 @@ filterAndCreateOverrides { qt5 ? null, qt6 ? null, rdma-core, + stdenv, ucx, wayland, xorg, @@ -373,19 +387,31 @@ filterAndCreateOverrides { else lib.getLib qt.qtwayland; qtWaylandPlugins = "${qtwayland}/${qt.qtbase.qtPluginPrefix}"; + hostDir = + { + aarch64-linux = "host-linux-armv8"; + x86_64-linux = "host-linux-x64"; + } + .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + targetDir = + { + aarch64-linux = "target-linux-sbsa-armv8"; + x86_64-linux = "target-linux-x64"; + } + .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + versionString = with lib.versions; "${majorMinor version}.${patch version}"; in { # An ad hoc replacement for # https://github.com/ConnorBaker/cuda-redist-find-features/issues/11 env.rmPatterns = toString [ - "nsight-systems/*/*/lib{arrow,jpeg}*" - "nsight-systems/*/*/lib{ssl,ssh,crypto}*" - "nsight-systems/*/*/libboost*" - "nsight-systems/*/*/libexec" - "nsight-systems/*/*/libstdc*" - "nsight-systems/*/*/libgbm" - "nsight-systems/*/*/python/bin/python" - "nsight-systems/*/*/Mesa" + "nsight-systems/${versionString}/${hostDir}/lib{arrow,jpeg}*" + "nsight-systems/${versionString}/${hostDir}/lib{ssl,ssh,crypto}*" + "nsight-systems/${versionString}/${hostDir}/libboost*" + "nsight-systems/${versionString}/${hostDir}/libexec" + "nsight-systems/${versionString}/${hostDir}/libstdc*" + "nsight-systems/${versionString}/${hostDir}/python/bin/python" + "nsight-systems/${versionString}/${hostDir}/Mesa" ]; postPatch = prevAttrs.postPatch or "" @@ -427,21 +453,22 @@ filterAndCreateOverrides { postInstall = # 1. Move dependencies of nsys, nsys-ui binaries to bin output # 2. Fix paths in wrapper scripts - let - versionString = with lib.versions; "${majorMinor version}.${patch version}"; - in '' - moveToOutput 'nsight-systems/${versionString}/host-linux-*' "''${!outputBin}" - moveToOutput 'nsight-systems/${versionString}/target-linux-*' "''${!outputBin}" + moveToOutput 'nsight-systems/${versionString}/${hostDir}' "''${!outputBin}" + moveToOutput 'nsight-systems/${versionString}/${targetDir}' "''${!outputBin}" moveToOutput 'nsight-systems/${versionString}/bin' "''${!outputBin}" substituteInPlace $bin/bin/nsys $bin/bin/nsys-ui \ --replace-fail 'nsight-systems-#VERSION_RSPLIT#' nsight-systems/${versionString} - wrapQtApp "$bin/nsight-systems/${versionString}/host-linux-x64/nsys-ui.bin" + wrapQtApp "$bin/nsight-systems/${versionString}/${hostDir}/nsys-ui.bin" ''; + preFixup = '' + # lib needs libtiff.so.5, but nixpkgs provides libtiff.so.6 + patchelf --replace-needed libtiff.so.5 libtiff.so $bin/nsight-systems/${versionString}/${hostDir}/Plugins/imageformats/libqtiff.so + ''; + autoPatchelfIgnoreMissingDeps = prevAttrs.autoPatchelfIgnoreMissingDeps ++ [ "libnvidia-ml.so.1" - "libtiff.so.5" ]; brokenConditions = prevAttrs.brokenConditions // {