From c8fcd68662d3369c85b5f0d6a7e58774f712d095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Kemetm=C3=BCller?= Date: Tue, 19 Feb 2019 00:47:07 +0100 Subject: [PATCH 1/4] cudatoolkit: Fixup cuda-gdb ncurses version The ncurses upgrade to libncurses.so.6 did silently break cuda-gdb quite some time ago. --- pkgs/development/compilers/cudatoolkit/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index fb01740232f..847c545233e 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, makeWrapper, fetchurl, requireFile, perl, ncurses, expat, python27, zlib +{ lib, stdenv, makeWrapper, fetchurl, requireFile, perl, ncurses5, expat, python27, zlib , gcc48, gcc49, gcc5, gcc6, gcc7 , xorg, gtk2, glib, fontconfig, freetype, unixODBC, alsaLib, glibc }: @@ -42,7 +42,7 @@ let nativeBuildInputs = [ perl makeWrapper ]; runtimeDependencies = [ - ncurses expat python zlib glibc + ncurses5 expat python zlib glibc xorg.libX11 xorg.libXext xorg.libXrender xorg.libXt xorg.libXtst xorg.libXi xorg.libXext gtk2 glib fontconfig freetype unixODBC alsaLib ]; From f4839744897c87a28dc9d34842023aad5f5e60be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Kemetm=C3=BCller?= Date: Tue, 19 Feb 2019 00:48:06 +0100 Subject: [PATCH 2/4] cudatoolkit: Fix building of older versions Versions prior to 9.0 did not build. Additionally we add some smoke tests for the binaries in $out/bin. --- .../compilers/cudatoolkit/default.nix | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index 847c545233e..f0570568f51 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -49,8 +49,6 @@ let rpath = "${stdenv.lib.makeLibraryPath runtimeDependencies}:${stdenv.cc.cc.lib}/lib64"; - phases = [ "unpackPhase" "installPhase" "fixupPhase" ]; - unpackPhase = '' sh $src --keep --noexec @@ -70,6 +68,7 @@ let installPhase = '' mkdir $out cd $(basename $src) + export PERL5LIB=. perl ./install-linux.pl --prefix="$out" cd .. for patch in $runPatches; do @@ -84,7 +83,7 @@ let rm -rf $out/lib # Remove some cruft. - rm $out/bin/uninstall* + ${lib.optionalString (lib.versionAtLeast version "7.0") "rm $out/bin/uninstall*"} # Fixup path to samples (needed for cuda 6.5 or else nsight will not find them) if [ -d "$out"/cuda-samples ]; then @@ -138,6 +137,23 @@ let done < <(find $out $lib $doc -type f -print0) ''; + doInstallCheck = true; + postInstallCheck = let + in '' + # Smoke test binaries + pushd $out/bin + for f in *; do + case $f in + crt) continue;; + nvcc.profile) continue;; + nsight_ee_plugins_manage.sh) continue;; + uninstall_cuda_toolkit_6.5.pl) continue;; + computeprof|nvvp|nsight) continue;; # TODO: Broken + *) echo "Executing '$f --version':"; ./$f --version;; + esac + done + popd + ''; passthru = { cc = gcc; majorVersion = From ec2c972acc143a4df5328a1ae8b390d876dfc058 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Kemetm=C3=BCller?= Date: Tue, 19 Feb 2019 19:28:55 +0100 Subject: [PATCH 3/4] cudatoolkit: Fix GUI applications This fixes the following error when starting nvvp or nsight: ``` (java:23876): Gtk-WARNING **: 19:12:17.777: Unable to locate theme engine in module_path: "adwaita", A fatal error has been detected by the Java Runtime Environment: SIGSEGV (0xb) at pc=0x00007f957f7b67fe, pid=23876, tid=140281059333888 JRE version: Java(TM) SE Runtime Environment (8.0_77-b03) (build 1.8.0_77-b03) Java VM: Java HotSpot(TM) 64-Bit Server VM (25.77-b03 mixed mode linux-amd64 compressed oops) Problematic frame: C [libpixbufloader-bmp.so+0x27fe] gdk_pixbuf__bmp_image_load_increment+0xeee ``` Since GDK_PIXBUF_MODULE_FILE should match the version we actually link to, we override the environment variable using the one provided by the gdk_pixbuf setup-hook. --- .../compilers/cudatoolkit/default.nix | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index f0570568f51..80c0576a905 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -1,6 +1,6 @@ { lib, stdenv, makeWrapper, fetchurl, requireFile, perl, ncurses5, expat, python27, zlib , gcc48, gcc49, gcc5, gcc6, gcc7 -, xorg, gtk2, glib, fontconfig, freetype, unixODBC, alsaLib, glibc +, xorg, gtk2, gdk_pixbuf, glib, fontconfig, freetype, unixODBC, alsaLib, glibc }: let @@ -40,7 +40,7 @@ let outputs = [ "out" "lib" "doc" ]; nativeBuildInputs = [ perl makeWrapper ]; - + buildInputs = [ gdk_pixbuf ]; # To get $GDK_PIXBUF_MODULE_FILE via setup-hook runtimeDependencies = [ ncurses5 expat python zlib glibc xorg.libX11 xorg.libXext xorg.libXrender xorg.libXt xorg.libXtst xorg.libXi xorg.libXext @@ -66,6 +66,7 @@ let ''; installPhase = '' + runHook preInstall mkdir $out cd $(basename $src) export PERL5LIB=. @@ -118,6 +119,15 @@ let '' + lib.optionalString (lib.versionOlder version "8.0") '' # Hack to fix building against recent Glibc/GCC. echo "NIX_CFLAGS_COMPILE+=' -D_FORCE_INLINES'" >> $out/nix-support/setup-hook + '' + '' + runHook postInstall + ''; + + postInstall = '' + for b in nvvp nsight; do + wrapProgram "$out/bin/$b" \ + --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" + done ''; preFixup = '' @@ -148,7 +158,7 @@ let nvcc.profile) continue;; nsight_ee_plugins_manage.sh) continue;; uninstall_cuda_toolkit_6.5.pl) continue;; - computeprof|nvvp|nsight) continue;; # TODO: Broken + computeprof|nvvp|nsight) continue;; # GUIs don't feature "--version" *) echo "Executing '$f --version':"; ./$f --version;; esac done From 3e0723f2b2e0d7b4e94d2045eb21272f8fdfb05c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Kemetm=C3=BCller?= Date: Tue, 19 Feb 2019 23:17:55 +0100 Subject: [PATCH 4/4] cudatoolkit_9_0: Add later released patch updates --- .../compilers/cudatoolkit/default.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkgs/development/compilers/cudatoolkit/default.nix b/pkgs/development/compilers/cudatoolkit/default.nix index 80c0576a905..3a34d14f8ad 100644 --- a/pkgs/development/compilers/cudatoolkit/default.nix +++ b/pkgs/development/compilers/cudatoolkit/default.nix @@ -225,6 +225,24 @@ in rec { version = "9.0.176.1"; url = "https://developer.nvidia.com/compute/cuda/9.0/Prod/local_installers/cuda_9.0.176_384.81_linux-run"; sha256 = "0308rmmychxfa4inb1ird9bpgfppgr9yrfg1qp0val5azqik91ln"; + runPatches = [ + (fetchurl { + url = "https://developer.nvidia.com/compute/cuda/9.0/Prod/patches/1/cuda_9.0.176.1_linux-run"; + sha256 = "1vbqg97pq9z9c8nqvckiwmq3ljm88m7gaizikzxbvz01izh67gx4"; + }) + (fetchurl { + url = "https://developer.nvidia.com/compute/cuda/9.0/Prod/patches/2/cuda_9.0.176.2_linux-run"; + sha256 = "1sz5dijbx9yf7drfipdxav5a5g6sxy4w6vi9xav0lb6m2xnmyd7c"; + }) + (fetchurl { + url = "https://developer.nvidia.com/compute/cuda/9.0/Prod/patches/3/cuda_9.0.176.3_linux-run"; + sha256 = "1jm83bxpscpjhzs5q3qijdgjm0r8qrdlgkj7y08fq8c0v8q2r7j2"; + }) + (fetchurl { + url = "https://developer.nvidia.com/compute/cuda/9.0/Prod/patches/4/cuda_9.0.176.4_linux-run"; + sha256 = "0pymg3mymsa2n48y0njz3spzlkm15lvjzw8fms1q83zslz4x0lwk"; + }) + ]; gcc = gcc6; };