Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / cuda-modules / cudnn / fixup.nix
blob26c8ec63f13e808183c265259cfbd644a2661b1a
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.
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   '';
48   passthru.useCudatoolkitRunfile = strings.versionOlder cudaVersion "11.3.999";
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   };