datalad: fix changed hash from upstream (#364015)
[NixPkgs.git] / pkgs / development / cuda-modules / cudnn / fixup.nix
blob183f38cfd4cf3f3e4f52882733c68ee656933a14
2   cudaVersion,
3   fetchurl,
4   final,
5   lib,
6   package,
7   patchelf,
8   zlib,
9   ...
11 let
12   inherit (lib)
13     lists
14     maintainers
15     meta
16     strings
17     ;
19 finalAttrs: prevAttrs: {
20   src = fetchurl { inherit (package) url hash; };
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     };
35   buildInputs =
36     prevAttrs.buildInputs
37     ++ [ zlib ]
38     ++ lists.optionals finalAttrs.passthru.useCudatoolkitRunfile [ final.cudatoolkit ]
39     ++ lists.optionals (!finalAttrs.passthru.useCudatoolkitRunfile) [ final.libcublas.lib ];
41   # Tell autoPatchelf about runtime dependencies. *_infer* libraries only
42   # exist in CuDNN 8.
43   # NOTE: Versions from CUDNN releases have four components.
44   postFixup =
45     strings.optionalString
46       (
47         strings.versionAtLeast finalAttrs.version "8.0.5.0"
48         && strings.versionOlder finalAttrs.version "9.0.0.0"
49       )
50       ''
51         ${meta.getExe patchelf} $lib/lib/libcudnn.so --add-needed libcudnn_cnn_infer.so
52         ${meta.getExe patchelf} $lib/lib/libcudnn_ops_infer.so --add-needed libcublas.so --add-needed libcublasLt.so
53       '';
55   passthru.useCudatoolkitRunfile = strings.versionOlder cudaVersion "11.3.999";
57   meta = prevAttrs.meta // {
58     homepage = "https://developer.nvidia.com/cudnn";
59     maintainers =
60       prevAttrs.meta.maintainers
61       ++ (with maintainers; [
62         mdaiter
63         samuela
64         connorbaker
65       ]);
66     license = {
67       shortName = "cuDNN EULA";
68       fullName = "NVIDIA cuDNN Software License Agreement (EULA)";
69       url = "https://docs.nvidia.com/deeplearning/sdk/cudnn-sla/index.html#supplement";
70       free = false;
71       redistributable = !finalAttrs.passthru.useCudatoolkitRunfile;
72     };
73   };