Unverified Commit 23b9ffb1 authored by Markus Kowalewski's avatar Markus Kowalewski Committed by GitHub
Browse files

gromacs: 2024.5 -> 2025.0 (#382385)

parents ba752ffe 8bad41cc
Loading
Loading
Loading
Loading
+99 −72
Original line number Diff line number Diff line
{ lib
, stdenv
, fetchurl
, cmake
, hwloc
, fftw
, perl
, blas
, lapack
, llvmPackages
, mpi
, cudaPackages
, plumed
, singlePrec ? true
, config
, enableCuda ? config.cudaSupport
, enableMpi ? false
, enablePlumed ? false
, cpuAcceleration ? null
{
  lib,
  stdenv,
  fetchurl,
  cmake,
  hwloc,
  fftw,
  perl,
  blas,
  lapack,
  llvmPackages,
  mpi,
  cudaPackages,
  plumed,
  singlePrec ? true,
  config,
  enableCuda ? config.cudaSupport,
  enableMpi ? false,
  enablePlumed ? false,
  cpuAcceleration ? null,
}:


# CUDA is only implemented for single precission
assert enableCuda -> singlePrec;

@@ -30,11 +30,19 @@ let
  # The possible values are defined in CMakeLists.txt:
  # AUTO None SSE2 SSE4.1 AVX_128_FMA AVX_256 AVX2_256
  # AVX2_128 AVX_512 AVX_512_KNL MIC ARM_NEON ARM_NEON_ASIMD
  SIMD = x: if (cpuAcceleration != null) then x else
    if stdenv.hostPlatform.system == "i686-linux" then "SSE2" else
    if stdenv.hostPlatform.system == "x86_64-linux" then "SSE4.1" else
    if stdenv.hostPlatform.system == "x86_64-darwin" then "SSE4.1" else
    if stdenv.hostPlatform.system == "aarch64-linux" then "ARM_NEON_ASIMD" else
  SIMD =
    x:
    if (cpuAcceleration != null) then
      x
    else if stdenv.hostPlatform.system == "i686-linux" then
      "SSE2"
    else if stdenv.hostPlatform.system == "x86_64-linux" then
      "SSE4.1"
    else if stdenv.hostPlatform.system == "x86_64-darwin" then
      "SSE4.1"
    else if stdenv.hostPlatform.system == "aarch64-linux" then
      "ARM_NEON_ASIMD"
    else
      "None";

  source =
@@ -45,11 +53,12 @@ let
      }
    else
      {
        version = "2024.5";
        hash = "sha256-/s8GsYbN25Qs+0LujaXz6yuZk+aswKLxjRSsCwFEJPM=";
        version = "2025.0";
        hash = "sha256-onrTWmRilbvsEpq+aE2dA9Hi4L12sNYl6QVXRqrvroI=";
      };

in stdenv.mkDerivation rec {
in
stdenv.mkDerivation rec {
  pname = "gromacs";
  version = source.version;

@@ -58,58 +67,73 @@ in stdenv.mkDerivation rec {
    inherit (source) hash;
  };

  patches = [ ./pkgconfig.patch ];
  patches = [ (if enablePlumed then ./pkgconfig-2024.patch else ./pkgconfig-2025.patch) ];

  postPatch = lib.optionalString enablePlumed ''
    plumed patch -p -e gromacs-${source.version}
  '';

  outputs = [ "out" "dev" "man" ];
  outputs = [
    "out"
    "dev"
    "man"
  ];

  nativeBuildInputs =
    [ cmake ]
    ++ lib.optional enablePlumed plumed
    ++ lib.optionals enableCuda [ cudaPackages.cuda_nvcc ];

  buildInputs = [
  buildInputs =
    [
      fftw
      perl
      hwloc
      blas
      lapack
  ] ++ lib.optional enableMpi mpi
    ]
    ++ lib.optional enableMpi mpi
    ++ lib.optionals enableCuda [
      cudaPackages.cuda_cccl
      cudaPackages.cuda_cudart
      cudaPackages.libcufft
      cudaPackages.cuda_profiler_api
  ] ++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp;
    ]
    ++ lib.optional stdenv.hostPlatform.isDarwin llvmPackages.openmp;

  propagatedBuildInputs = lib.optional enableMpi mpi;
  propagatedUserEnvPkgs = lib.optional enableMpi mpi;

  cmakeFlags = [
  cmakeFlags =
    [
      (lib.cmakeBool "GMX_HWLOC" true)
      "-DGMX_SIMD:STRING=${SIMD cpuAcceleration}"
      "-DGMX_OPENMP:BOOL=TRUE"
      "-DBUILD_SHARED_LIBS=ON"
  ] ++ (
    if singlePrec then [
    ]
    ++ (
      if singlePrec then
        [
          "-DGMX_DOUBLE=OFF"
    ] else [
        ]
      else
        [
          "-DGMX_DOUBLE=ON"
          "-DGMX_DEFAULT_SUFFIX=OFF"
        ]
  ) ++ (
    if enableMpi
      then [
    )
    ++ (
      if enableMpi then
        [
          "-DGMX_MPI:BOOL=TRUE"
          "-DGMX_THREAD_MPI:BOOL=FALSE"
        ]
     else [
      else
        [
          "-DGMX_MPI:BOOL=FALSE"
        ]
  ) ++ lib.optionals enableCuda [
    )
    ++ lib.optionals enableCuda [
      "-DGMX_GPU=CUDA"
      (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cmakeCudaArchitecturesString)

@@ -145,6 +169,9 @@ in stdenv.mkDerivation rec {
      See: https://www.gromacs.org/about.html for details.
    '';
    platforms = platforms.unix;
    maintainers = with maintainers; [ sheepforce markuskowa ];
    maintainers = with maintainers; [
      sheepforce
      markuskowa
    ];
  };
}
+36 −0
Original line number Diff line number Diff line
diff --git a/src/external/muparser/muparser.pc.in b/src/external/muparser/muparser.pc.in
index 646787cb53..d26e84de8f 100644
--- a/src/external/muparser/muparser.pc.in
+++ b/src/external/muparser/muparser.pc.in
@@ -1,11 +1,9 @@
-prefix=@CMAKE_INSTALL_PREFIX@
-exec_prefix=${prefix}
-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
-
-Name: @PACKAGE_NAME@
-Description: Mathematical expressions parser library
-Version: @MUPARSER_VERSION@
-Requires:
-Libs: -L${libdir} -lmuparser
-Cflags: -I${includedir} @PKG_CONFIG_FLAGS@
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+
+Name: @PACKAGE_NAME@
+Description: Mathematical expressions parser library
+Version: @MUPARSER_VERSION@
+Requires:
+Libs: -L${libdir} -lmuparser
+Cflags: -I${includedir} @PKG_CONFIG_FLAGS@
diff --git a/src/gromacs/libgromacs.pc.cmakein b/src/gromacs/libgromacs.pc.cmakein
index af9b5a6dc0..5f58d549bf 100644
--- a/src/gromacs/libgromacs.pc.cmakein
+++ b/src/gromacs/libgromacs.pc.cmakein
@@ -1,5 +1,4 @@
-prefix=@CMAKE_INSTALL_PREFIX@
-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
+libdir=@CMAKE_INSTALL_FULL_LIBDIR
 
 Name: libgromacs@GMX_LIBS_SUFFIX@
 Description: Gromacs library