gromacs: 2024.5 -> 2025.0 (#382385)

authored by Markus Kowalewski and committed by GitHub 23b9ffb1 ba752ffe

+134 -71
+98 -71
pkgs/applications/science/molecular-dynamics/gromacs/default.nix
··· 1 - { lib 2 - , stdenv 3 - , fetchurl 4 - , cmake 5 - , hwloc 6 - , fftw 7 - , perl 8 - , blas 9 - , lapack 10 - , llvmPackages 11 - , mpi 12 - , cudaPackages 13 - , plumed 14 - , singlePrec ? true 15 - , config 16 - , enableCuda ? config.cudaSupport 17 - , enableMpi ? false 18 - , enablePlumed ? false 19 - , cpuAcceleration ? null 20 }: 21 - 22 23 # CUDA is only implemented for single precission 24 assert enableCuda -> singlePrec; ··· 30 # The possible values are defined in CMakeLists.txt: 31 # AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256 32 # AVX2_128 AVX_512 AVX_512_KNL MIC ARM_NEON ARM_NEON_ASIMD 33 - SIMD = x: if (cpuAcceleration != null) then x else 34 - if stdenv.hostPlatform.system == "i686-linux" then "SSE2" else 35 - if stdenv.hostPlatform.system == "x86_64-linux" then "SSE4.1" else 36 - if stdenv.hostPlatform.system == "x86_64-darwin" then "SSE4.1" else 37 - if stdenv.hostPlatform.system == "aarch64-linux" then "ARM_NEON_ASIMD" else 38 - "None"; 39 40 source = 41 if enablePlumed then ··· 45 } 46 else 47 { 48 - version = "2024.5"; 49 - hash = "sha256-/s8GsYbN25Qs+0LujaXz6yuZk+aswKLxjRSsCwFEJPM="; 50 }; 51 52 - in stdenv.mkDerivation rec { 53 pname = "gromacs"; 54 version = source.version; 55 ··· 58 inherit (source) hash; 59 }; 60 61 - patches = [ ./pkgconfig.patch ]; 62 63 postPatch = lib.optionalString enablePlumed '' 64 plumed patch -p -e gromacs-${source.version} 65 ''; 66 67 - outputs = [ "out" "dev" "man" ]; 68 69 nativeBuildInputs = 70 [ cmake ] 71 ++ lib.optional enablePlumed plumed 72 ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ]; 73 74 - buildInputs = [ 75 - fftw 76 - perl 77 - hwloc 78 - blas 79 - lapack 80 - ] ++ lib.optional enableMpi mpi 81 - ++ lib.optionals enableCuda [ 82 - cudaPackages.cuda_cccl 83 - cudaPackages.cuda_cudart 84 - cudaPackages.libcufft 85 - cudaPackages.cuda_profiler_api 86 - ] ++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp; 87 88 propagatedBuildInputs = lib.optional enableMpi mpi; 89 propagatedUserEnvPkgs = lib.optional enableMpi mpi; 90 91 - cmakeFlags = [ 92 - (lib.cmakeBool "GMX_HWLOC" true) 93 - "-DGMX_SIMD:STRING=${SIMD cpuAcceleration}" 94 - "-DGMX_OPENMP:BOOL=TRUE" 95 - "-DBUILD_SHARED_LIBS=ON" 96 - ] ++ ( 97 - if singlePrec then [ 98 - "-DGMX_DOUBLE=OFF" 99 - ] else [ 100 - "-DGMX_DOUBLE=ON" 101 - "-DGMX_DEFAULT_SUFFIX=OFF" 102 ] 103 - ) ++ ( 104 - if enableMpi 105 - then [ 106 - "-DGMX_MPI:BOOL=TRUE" 107 - "-DGMX_THREAD_MPI:BOOL=FALSE" 108 - ] 109 - else [ 110 - "-DGMX_MPI:BOOL=FALSE" 111 - ] 112 - ) ++ lib.optionals enableCuda [ 113 - "-DGMX_GPU=CUDA" 114 - (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cmakeCudaArchitecturesString) 115 116 - # Gromacs seems to ignore and override the normal variables, so we add this ad hoc: 117 - (lib.cmakeFeature "GMX_CUDA_TARGET_COMPUTE" cmakeCudaArchitecturesString) 118 - ]; 119 120 postInstall = '' 121 moveToOutput share/cmake $dev ··· 145 See: https://www.gromacs.org/about.html for details. 146 ''; 147 platforms = platforms.unix; 148 - maintainers = with maintainers; [ sheepforce markuskowa ]; 149 }; 150 }
··· 1 + { 2 + lib, 3 + stdenv, 4 + fetchurl, 5 + cmake, 6 + hwloc, 7 + fftw, 8 + perl, 9 + blas, 10 + lapack, 11 + llvmPackages, 12 + mpi, 13 + cudaPackages, 14 + plumed, 15 + singlePrec ? true, 16 + config, 17 + enableCuda ? config.cudaSupport, 18 + enableMpi ? false, 19 + enablePlumed ? false, 20 + cpuAcceleration ? null, 21 }: 22 23 # CUDA is only implemented for single precission 24 assert enableCuda -> singlePrec; ··· 30 # The possible values are defined in CMakeLists.txt: 31 # AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256 32 # AVX2_128 AVX_512 AVX_512_KNL MIC ARM_NEON ARM_NEON_ASIMD 33 + SIMD = 34 + x: 35 + if (cpuAcceleration != null) then 36 + x 37 + else if stdenv.hostPlatform.system == "i686-linux" then 38 + "SSE2" 39 + else if stdenv.hostPlatform.system == "x86_64-linux" then 40 + "SSE4.1" 41 + else if stdenv.hostPlatform.system == "x86_64-darwin" then 42 + "SSE4.1" 43 + else if stdenv.hostPlatform.system == "aarch64-linux" then 44 + "ARM_NEON_ASIMD" 45 + else 46 + "None"; 47 48 source = 49 if enablePlumed then ··· 53 } 54 else 55 { 56 + version = "2025.0"; 57 + hash = "sha256-onrTWmRilbvsEpq+aE2dA9Hi4L12sNYl6QVXRqrvroI="; 58 }; 59 60 + in 61 + stdenv.mkDerivation rec { 62 pname = "gromacs"; 63 version = source.version; 64 ··· 67 inherit (source) hash; 68 }; 69 70 + patches = [ (if enablePlumed then ./pkgconfig-2024.patch else ./pkgconfig-2025.patch) ]; 71 72 postPatch = lib.optionalString enablePlumed '' 73 plumed patch -p -e gromacs-${source.version} 74 ''; 75 76 + outputs = [ 77 + "out" 78 + "dev" 79 + "man" 80 + ]; 81 82 nativeBuildInputs = 83 [ cmake ] 84 ++ lib.optional enablePlumed plumed 85 ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ]; 86 87 + buildInputs = 88 + [ 89 + fftw 90 + perl 91 + hwloc 92 + blas 93 + lapack 94 + ] 95 + ++ lib.optional enableMpi mpi 96 + ++ lib.optionals enableCuda [ 97 + cudaPackages.cuda_cccl 98 + cudaPackages.cuda_cudart 99 + cudaPackages.libcufft 100 + cudaPackages.cuda_profiler_api 101 + ] 102 + ++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp; 103 104 propagatedBuildInputs = lib.optional enableMpi mpi; 105 propagatedUserEnvPkgs = lib.optional enableMpi mpi; 106 107 + cmakeFlags = 108 + [ 109 + (lib.cmakeBool "GMX_HWLOC" true) 110 + "-DGMX_SIMD:STRING=${SIMD cpuAcceleration}" 111 + "-DGMX_OPENMP:BOOL=TRUE" 112 + "-DBUILD_SHARED_LIBS=ON" 113 ] 114 + ++ ( 115 + if singlePrec then 116 + [ 117 + "-DGMX_DOUBLE=OFF" 118 + ] 119 + else 120 + [ 121 + "-DGMX_DOUBLE=ON" 122 + "-DGMX_DEFAULT_SUFFIX=OFF" 123 + ] 124 + ) 125 + ++ ( 126 + if enableMpi then 127 + [ 128 + "-DGMX_MPI:BOOL=TRUE" 129 + "-DGMX_THREAD_MPI:BOOL=FALSE" 130 + ] 131 + else 132 + [ 133 + "-DGMX_MPI:BOOL=FALSE" 134 + ] 135 + ) 136 + ++ lib.optionals enableCuda [ 137 + "-DGMX_GPU=CUDA" 138 + (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cmakeCudaArchitecturesString) 139 140 + # Gromacs seems to ignore and override the normal variables, so we add this ad hoc: 141 + (lib.cmakeFeature "GMX_CUDA_TARGET_COMPUTE" cmakeCudaArchitecturesString) 142 + ]; 143 144 postInstall = '' 145 moveToOutput share/cmake $dev ··· 169 See: https://www.gromacs.org/about.html for details. 170 ''; 171 platforms = platforms.unix; 172 + maintainers = with maintainers; [ 173 + sheepforce 174 + markuskowa 175 + ]; 176 }; 177 }
+36
pkgs/applications/science/molecular-dynamics/gromacs/pkgconfig-2025.patch
···
··· 1 + diff --git a/src/external/muparser/muparser.pc.in b/src/external/muparser/muparser.pc.in 2 + index 646787cb53..d26e84de8f 100644 3 + --- a/src/external/muparser/muparser.pc.in 4 + +++ b/src/external/muparser/muparser.pc.in 5 + @@ -1,11 +1,9 @@ 6 + -prefix=@CMAKE_INSTALL_PREFIX@ 7 + -exec_prefix=${prefix} 8 + -libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ 9 + -includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ 10 + - 11 + -Name: @PACKAGE_NAME@ 12 + -Description: Mathematical expressions parser library 13 + -Version: @MUPARSER_VERSION@ 14 + -Requires: 15 + -Libs: -L${libdir} -lmuparser 16 + -Cflags: -I${includedir} @PKG_CONFIG_FLAGS@ 17 + +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ 18 + +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ 19 + + 20 + +Name: @PACKAGE_NAME@ 21 + +Description: Mathematical expressions parser library 22 + +Version: @MUPARSER_VERSION@ 23 + +Requires: 24 + +Libs: -L${libdir} -lmuparser 25 + +Cflags: -I${includedir} @PKG_CONFIG_FLAGS@ 26 + diff --git a/src/gromacs/libgromacs.pc.cmakein b/src/gromacs/libgromacs.pc.cmakein 27 + index af9b5a6dc0..5f58d549bf 100644 28 + --- a/src/gromacs/libgromacs.pc.cmakein 29 + +++ b/src/gromacs/libgromacs.pc.cmakein 30 + @@ -1,5 +1,4 @@ 31 + -prefix=@CMAKE_INSTALL_PREFIX@ 32 + -libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ 33 + +libdir=@CMAKE_INSTALL_FULL_LIBDIR 34 + 35 + Name: libgromacs@GMX_LIBS_SUFFIX@ 36 + Description: Gromacs library
pkgs/applications/science/molecular-dynamics/gromacs/pkgconfig.patch pkgs/applications/science/molecular-dynamics/gromacs/pkgconfig-2024.patch