diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/mpich')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/mpich/default.nix | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/nixpkgs/pkgs/development/libraries/mpich/default.nix b/nixpkgs/pkgs/development/libraries/mpich/default.nix index 622ee233f9c4..f53a3268b739 100644 --- a/nixpkgs/pkgs/development/libraries/mpich/default.nix +++ b/nixpkgs/pkgs/development/libraries/mpich/default.nix @@ -3,10 +3,19 @@ # either libfabric or ucx work for ch4backend on linux. On darwin, neither of # these libraries currently build so this argument is ignored on Darwin. , ch4backend -# Process manager to build -, withPm ? "hydra:gforker" +# Process managers to build (`--with-pm`), +# cf. https://github.com/pmodels/mpich/blob/b80a6d7c24defe7cdf6c57c52430f8075a0a41d6/README.vin#L562-L586 +, withPm ? [ "hydra" "gforker" ] +, pmix +# PMIX support is likely incompatible with process managers (`--with-pm`) +# https://github.com/NixOS/nixpkgs/pull/274804#discussion_r1432601476 +, pmixSupport ? false } : +let + withPmStr = if withPm != [ ] then builtins.concatStringsSep ":" withPm else "no"; +in + assert (ch4backend.pname == "ucx" || ch4backend.pname == "libfabric"); stdenv.mkDerivation rec { @@ -22,11 +31,12 @@ stdenv.mkDerivation rec { configureFlags = [ "--enable-shared" - "--enable-sharedlib" - "--with-pm=${withPm}" + "--with-pm=${withPmStr}" ] ++ lib.optionals (lib.versionAtLeast gfortran.version "10") [ "FFLAGS=-fallow-argument-mismatch" # https://github.com/pmodels/mpich/issues/4300 "FCFLAGS=-fallow-argument-mismatch" + ] ++ lib.optionals pmixSupport [ + "--with-pmix=${lib.getDev pmix}" ]; enableParallelBuilding = true; @@ -45,6 +55,9 @@ stdenv.mkDerivation rec { ''; meta = with lib; { + # As far as we know, --with-pmix silently disables all of `--with-pm` + broken = pmixSupport && withPm != [ ]; + description = "Implementation of the Message Passing Interface (MPI) standard"; longDescription = '' |