about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2017-10-15 14:44:54 +0300
committerNikolay Amiantov <ab@fmap.me>2017-10-19 12:47:30 +0300
commit6309e5fa0139d1fee020e8d4ca18e5658c93ae3a (patch)
treeb0dc5608f3c7073060b0babcc038bc3520288c00
parentce9059a120713ffef30a1f237f56a290c8680740 (diff)
downloadnixlib-6309e5fa0139d1fee020e8d4ca18e5658c93ae3a.tar
nixlib-6309e5fa0139d1fee020e8d4ca18e5658c93ae3a.tar.gz
nixlib-6309e5fa0139d1fee020e8d4ca18e5658c93ae3a.tar.bz2
nixlib-6309e5fa0139d1fee020e8d4ca18e5658c93ae3a.tar.lz
nixlib-6309e5fa0139d1fee020e8d4ca18e5658c93ae3a.tar.xz
nixlib-6309e5fa0139d1fee020e8d4ca18e5658c93ae3a.tar.zst
nixlib-6309e5fa0139d1fee020e8d4ca18e5658c93ae3a.zip
cudnn: refactor to use shared derivation
Also return 8.0-6.0 version for TensorFlow.
-rw-r--r--pkgs/development/libraries/science/math/cudnn/7.0-4.0/default.nix34
-rw-r--r--pkgs/development/libraries/science/math/cudnn/7.5-6.0/default.nix47
-rw-r--r--pkgs/development/libraries/science/math/cudnn/9.0-7.0/default.nix48
-rw-r--r--pkgs/development/libraries/science/math/cudnn/default.nix45
-rw-r--r--pkgs/development/libraries/science/math/cudnn/generic.nix (renamed from pkgs/development/libraries/science/math/cudnn/8.0-7.0/default.nix)20
-rw-r--r--pkgs/top-level/all-packages.nix21
6 files changed, 65 insertions, 150 deletions
diff --git a/pkgs/development/libraries/science/math/cudnn/7.0-4.0/default.nix b/pkgs/development/libraries/science/math/cudnn/7.0-4.0/default.nix
deleted file mode 100644
index 1e1a37af2f0e..000000000000
--- a/pkgs/development/libraries/science/math/cudnn/7.0-4.0/default.nix
+++ /dev/null
@@ -1,34 +0,0 @@
-{ stdenv, requireFile, cudatoolkit }:
-
-stdenv.mkDerivation rec {
-  version = "4.0";
-
-  name = "cudnn-${version}";
-
-  src = requireFile rec {
-    name = "cudnn-7.0-linux-x64-v${version}-prod.tgz";
-    message = '' 
-      This nix expression requires that ${name} is
-      already part of the store. Register yourself to NVIDIA Accelerated Computing Developer Program
-      and download cuDNN library at https://developer.nvidia.com/cudnn, and store it to the nix store with nix-store --add-fixed sha256 <FILE>.
-    '';
-    sha256 = "0zgr6qdbc29qw6sikhrh6diwwz7150rqc8a49f2qf37j2rvyyr2f";
-
-  };
-
-  phases = "unpackPhase installPhase fixupPhase";
-
-  propagatedBuildInputs = [ cudatoolkit ];
-
-  installPhase = ''
-    mkdir -p $out
-    cp -a include $out/include
-    cp -a lib64 $out/lib64
-  '';
-
-  meta = {
-    description = "NVIDIA CUDA Deep Neural Network library (cuDNN)";
-    homepage = https://developer.nvidia.com/cudnn;
-    license = stdenv.lib.licenses.unfree;
-  };
-}
diff --git a/pkgs/development/libraries/science/math/cudnn/7.5-6.0/default.nix b/pkgs/development/libraries/science/math/cudnn/7.5-6.0/default.nix
deleted file mode 100644
index 90d130ff19de..000000000000
--- a/pkgs/development/libraries/science/math/cudnn/7.5-6.0/default.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ stdenv
-, requireFile
-, cudatoolkit
-}:
-
-stdenv.mkDerivation rec {
-  version = "6.0";
-  cudatoolkit_version = "7.5";
-
-  name = "cudatoolkit-${cudatoolkit_version}-cudnn-${version}";
-
-  src = requireFile rec {
-    name = "cudnn-${cudatoolkit_version}-linux-x64-v${version}.tgz";
-    message = ''
-      This nix expression requires that ${name} is already part of the store.
-      Register yourself to NVIDIA Accelerated Computing Developer Program, retrieve the cuDNN library
-      at https://developer.nvidia.com/cudnn, and run the following command in the download directory:
-      nix-prefetch-url file://${name}
-    '';
-    sha256 = "0b68hv8pqcvh7z8xlgm4cxr9rfbjs0yvg1xj2n5ap4az1h3lp3an";
-  };
-
-  phases = "unpackPhase installPhase fixupPhase";
-
-  installPhase = ''
-    function fixRunPath {
-      p=$(patchelf --print-rpath $1)
-      patchelf --set-rpath "$p:${stdenv.lib.makeLibraryPath [ stdenv.cc.cc ]}" $1
-    }
-    fixRunPath lib64/libcudnn.so
-
-    mkdir -p $out
-    cp -a include $out/include
-    cp -a lib64 $out/lib
-  '';
-
-  propagatedBuildInputs = [
-    cudatoolkit
-  ];
-
-  meta = with stdenv.lib; {
-    description = "NVIDIA CUDA Deep Neural Network library (cuDNN)";
-    homepage = "https://developer.nvidia.com/cudnn";
-    license = licenses.unfree;
-    platforms = [ "x86_64-linux" ];
-  };
-}
diff --git a/pkgs/development/libraries/science/math/cudnn/9.0-7.0/default.nix b/pkgs/development/libraries/science/math/cudnn/9.0-7.0/default.nix
deleted file mode 100644
index f5215ac3764e..000000000000
--- a/pkgs/development/libraries/science/math/cudnn/9.0-7.0/default.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-{ stdenv
-, lib
-, requireFile
-, cudatoolkit
-, fetchurl
-}:
-
-stdenv.mkDerivation rec {
-  version = "7.0";
-  cudatoolkit_version = "9.0";
-
-  name = "cudatoolkit-${cudatoolkit_version}-cudnn-${version}";
-
-  src = requireFile rec {
-    name = "cudnn-${cudatoolkit_version}-linux-x64-v7.tgz";
-    message = ''
-      This nix expression requires that ${name} is already part of the store.
-      Register yourself to NVIDIA Accelerated Computing Developer Program, retrieve the cuDNN library
-      at https://developer.nvidia.com/cudnn, and run the following command in the download directory:
-      nix-prefetch-url file://${name}
-    '';
-    sha256 = "1ld5x819vya6p2ppmr7i3lz9ac2y81kssgbzgd0lsign7r2qjapc";
-  };
-
-  installPhase = ''
-    function fixRunPath {
-      p=$(patchelf --print-rpath $1)
-      patchelf --set-rpath "$p:${lib.makeLibraryPath [ stdenv.cc.cc ]}" $1
-    }
-    fixRunPath lib64/libcudnn.so
-
-    mkdir -p $out
-    cp -a include $out/include
-    cp -a lib64 $out/lib64
-  '';
-
-  propagatedBuildInputs = [
-    cudatoolkit
-  ];
-
-  meta = with stdenv.lib; {
-    description = "NVIDIA CUDA Deep Neural Network library (cuDNN)";
-    homepage = "https://developer.nvidia.com/cudnn";
-    license = licenses.unfree;
-    platforms = [ "x86_64-linux" ];
-    maintainers = with maintainers; [ mdaiter ];
-  };
-}
diff --git a/pkgs/development/libraries/science/math/cudnn/default.nix b/pkgs/development/libraries/science/math/cudnn/default.nix
new file mode 100644
index 000000000000..db66d8545883
--- /dev/null
+++ b/pkgs/development/libraries/science/math/cudnn/default.nix
@@ -0,0 +1,45 @@
+{ callPackage, cudatoolkit7, cudatoolkit75, cudatoolkit8, cudatoolkit9 }:
+
+let
+  generic = args: callPackage (import ./generic.nix (removeAttrs args ["cudatoolkit"])) {
+    inherit (args) cudatoolkit;
+  };
+
+in
+
+{
+  cudnn_cudatoolkit7 = generic rec {
+    version = "4.0";
+    cudatoolkit = cudatoolkit7;
+    srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v${version}-prod.tgz";
+    sha256 = "0zgr6qdbc29qw6sikhrh6diwwz7150rqc8a49f2qf37j2rvyyr2f";
+  };
+
+  cudnn_cudatoolkit75 = generic rec {
+    version = "6.0";
+    cudatoolkit = cudatoolkit75;
+    srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v${version}.tgz";
+    sha256 = "0b68hv8pqcvh7z8xlgm4cxr9rfbjs0yvg1xj2n5ap4az1h3lp3an";
+  };
+
+  cudnn6_cudatoolkit8 = generic rec {
+    version = "6.0";
+    cudatoolkit = cudatoolkit8;
+    srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v${version}.tgz";
+    sha256 = "173zpgrk55ri8if7s5yngsc89ajd6hz4pss4cdxlv6lcyh5122cv";
+  };
+
+  cudnn_cudatoolkit8 = generic rec {
+    version = "7.0";
+    cudatoolkit = cudatoolkit8;
+    srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v7.tgz";
+    sha256 = "19yjdslrslwv5ic4vgpzb0fa0mqbgi6a66b7gc66vdc9n9589398";
+  };
+
+  cudnn_cudatoolkit9 = generic rec {
+    version = "7.0";
+    cudatoolkit = cudatoolkit9;
+    srcName = "cudnn-${cudatoolkit.majorVersion}-linux-x64-v7.tgz";
+    sha256 = "1ld5x819vya6p2ppmr7i3lz9ac2y81kssgbzgd0lsign7r2qjapc";
+  };
+}
diff --git a/pkgs/development/libraries/science/math/cudnn/8.0-7.0/default.nix b/pkgs/development/libraries/science/math/cudnn/generic.nix
index e8306098039b..663b741e4748 100644
--- a/pkgs/development/libraries/science/math/cudnn/8.0-7.0/default.nix
+++ b/pkgs/development/libraries/science/math/cudnn/generic.nix
@@ -1,25 +1,28 @@
+{ version
+, srcName
+, sha256
+}:
+
 { stdenv
 , lib
 , requireFile
 , cudatoolkit
-, fetchurl
 }:
 
 stdenv.mkDerivation rec {
-  version = "7.0";
-  cudatoolkit_version = "8.0";
+  name = "cudatoolkit-${cudatoolkit.majorVersion}-cudnn-${version}";
 
-  name = "cudatoolkit-${cudatoolkit_version}-cudnn-${version}";
+  inherit version;
 
   src = requireFile rec {
-    name = "cudnn-${cudatoolkit_version}-linux-x64-v7.tgz";
+    name = srcName;
+    inherit sha256;
     message = ''
       This nix expression requires that ${name} is already part of the store.
       Register yourself to NVIDIA Accelerated Computing Developer Program, retrieve the cuDNN library
       at https://developer.nvidia.com/cudnn, and run the following command in the download directory:
       nix-prefetch-url file://${name}
     '';
-    sha256 = "19yjdslrslwv5ic4vgpzb0fa0mqbgi6a66b7gc66vdc9n9589398";
   };
 
   installPhase = ''
@@ -38,6 +41,11 @@ stdenv.mkDerivation rec {
     cudatoolkit
   ];
 
+  passthru = {
+    inherit cudatoolkit;
+    majorVersion = lib.head (lib.splitString "." version);
+  };
+
   meta = with stdenv.lib; {
     description = "NVIDIA CUDA Deep Neural Network library (cuDNN)";
     homepage = "https://developer.nvidia.com/cudnn";
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index e1adb0b5c3f0..d0be8c9a5476 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1582,21 +1582,12 @@ with pkgs;
 
   cudatoolkit = cudatoolkit9;
 
-  cudnn_cudatoolkit7 = callPackage ../development/libraries/science/math/cudnn/7.0-4.0 {
-    cudatoolkit = cudatoolkit7;
-  };
-
-  cudnn_cudatoolkit75 = callPackage ../development/libraries/science/math/cudnn/7.5-6.0 {
-    cudatoolkit = cudatoolkit75;
-  };
-
-  cudnn_cudatoolkit8 = callPackage ../development/libraries/science/math/cudnn/8.0-7.0 {
-    cudatoolkit = cudatoolkit8;
-  };
-
-  cudnn_cudatoolkit9 = callPackage ../development/libraries/science/math/cudnn/9.0-7.0 {
-    cudatoolkit = cudatoolkit9;
-  };
+  inherit (callPackages ../development/libraries/science/math/cudnn { })
+    cudnn_cudatoolkit7
+    cudnn_cudatoolkit75
+    cudnn6_cudatoolkit8
+    cudnn_cudatoolkit8
+    cudnn_cudatoolkit9;
 
   cudnn = cudnn_cudatoolkit9;