diff --git a/pkgs/development/libraries/science/math/cudnn/generic.nix b/pkgs/development/libraries/science/math/cudnn/generic.nix index 566a17c61472..d9c19e6790c6 100644 --- a/pkgs/development/libraries/science/math/cudnn/generic.nix +++ b/pkgs/development/libraries/science/math/cudnn/generic.nix @@ -8,6 +8,14 @@ , cudatoolkit , fetchurl , addOpenGLRunpath +, # The distributed version of CUDNN includes both dynamically liked .so files, + # as well as statically linked .a files. However, CUDNN is quite large + # (multiple gigabytes), so you can save some space in your nix store by + # removing the statically linked libraries if you are not using them. + # + # Setting this to true removes the statically linked .a files. + # Setting this to false keeps these statically linked .a files. + removeStatic ? false }: stdenv.mkDerivation { @@ -23,6 +31,8 @@ stdenv.mkDerivation { nativeBuildInputs = [ addOpenGLRunpath ]; installPhase = '' + runHook preInstall + function fixRunPath { p=$(patchelf --print-rpath $1) patchelf --set-rpath "''${p:+$p:}${lib.makeLibraryPath [ stdenv.cc.cc ]}:\$ORIGIN/" $1 @@ -35,6 +45,10 @@ stdenv.mkDerivation { mkdir -p $out cp -a include $out/include cp -a lib64 $out/lib64 + '' + lib.optionalString removeStatic '' + rm -f $out/lib64/*.a + '' + '' + runHook postInstall ''; # Set RUNPATH so that libcuda in /run/opengl-driver(-32)/lib can be found.