From a90c9e5ee3706c3c6c81abe80a70e0a6956e8eef Mon Sep 17 00:00:00 2001 From: Tyson Whitehead Date: Thu, 27 Oct 2016 10:57:04 -0400 Subject: [PATCH] openfoam: Add *-mpi wrappers for all bins that use libPstream.so * Ensure correct mpirun is used and right number of processes --- openfoam.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/openfoam.nix b/openfoam.nix index f54b763..9104495 100644 --- a/openfoam.nix +++ b/openfoam.nix @@ -34,7 +34,8 @@ stdenv.mkDerivation rec { ''; # stick etc, bin, and platforms under lib/OpenFOAM-${version} - # fill bin proper up with wrappers to everything in platform/$WM_OPTIONS/bin that source etc/bashrc + # fill bin proper up with wrappers that source etc/bashrc for everything in platform/$WM_OPTIONS/bin + # add -mpi suffixed versions that calls proper mpirun for those with libPstream.so depencies too installPhase = '' echo "copying etc, bin, and platforms directories to $out/lib/OpenFOAM-${version}" mkdir -p "$out/lib/OpenFOAM-${version}" @@ -43,6 +44,12 @@ stdenv.mkDerivation rec { for program in "$out/lib/OpenFOAM-${version}/platforms/$WM_OPTIONS/bin/"*; do makeWrapper "$program" "$out/bin/''${program##*/}" \ --run "source \"$out/lib/OpenFOAM-${version}/etc/bashrc\"" + if readelf -d "$program" | fgrep -q libPstream.so; then + makeWrapper "${openmpi}/bin/mpirun" "$out/bin/''${program##*/}-mpi" \ + --run "[ -r processor0 ] || { echo \"Case is not currently decomposed, see decomposePar documentation\"; exit 1; }" \ + --run "extraFlagsArray+=(-n \"\$(ls -d processor* | wc -l)\" \"$out/bin/''${program##*/}\" -parallel)" \ + --run "source \"$out/lib/OpenFOAM-${version}/etc/bashrc\"" + fi done '';