nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at fix-function-merge 67 lines 1.9 kB view raw
1{ 2 cudaVersion, 3 fetchurl, 4 final, 5 lib, 6 package, 7 patchelf, 8 zlib, 9 ... 10}: 11let 12 inherit (lib) 13 lists 14 maintainers 15 meta 16 strings 17 ; 18in 19finalAttrs: prevAttrs: { 20 src = fetchurl { inherit (package) url hash; }; 21 22 # Useful for inspecting why something went wrong. 23 brokenConditions = 24 let 25 cudaTooOld = strings.versionOlder cudaVersion package.minCudaVersion; 26 cudaTooNew = 27 (package.maxCudaVersion != null) && strings.versionOlder package.maxCudaVersion cudaVersion; 28 in 29 prevAttrs.brokenConditions 30 // { 31 "CUDA version is too old" = cudaTooOld; 32 "CUDA version is too new" = cudaTooNew; 33 }; 34 35 buildInputs = 36 prevAttrs.buildInputs 37 ++ [ zlib ] 38 ++ lists.optionals finalAttrs.passthru.useCudatoolkitRunfile [ final.cudatoolkit ] 39 ++ lists.optionals (!finalAttrs.passthru.useCudatoolkitRunfile) [ final.libcublas.lib ]; 40 41 # Tell autoPatchelf about runtime dependencies. 42 # NOTE: Versions from CUDNN releases have four components. 43 postFixup = strings.optionalString (strings.versionAtLeast finalAttrs.version "8.0.5.0") '' 44 ${meta.getExe' patchelf "patchelf"} $lib/lib/libcudnn.so --add-needed libcudnn_cnn_infer.so 45 ${meta.getExe' patchelf "patchelf"} $lib/lib/libcudnn_ops_infer.so --add-needed libcublas.so --add-needed libcublasLt.so 46 ''; 47 48 passthru.useCudatoolkitRunfile = strings.versionOlder cudaVersion "11.3.999"; 49 50 meta = prevAttrs.meta // { 51 homepage = "https://developer.nvidia.com/cudnn"; 52 maintainers = 53 prevAttrs.meta.maintainers 54 ++ (with maintainers; [ 55 mdaiter 56 samuela 57 connorbaker 58 ]); 59 license = { 60 shortName = "cuDNN EULA"; 61 fullName = "NVIDIA cuDNN Software License Agreement (EULA)"; 62 url = "https://docs.nvidia.com/deeplearning/sdk/cudnn-sla/index.html#supplement"; 63 free = false; 64 redistributable = !finalAttrs.passthru.useCudatoolkitRunfile; 65 }; 66 }; 67}