NixOS configuration for HPC cluster https://docs.hpc.informatik.hs-fulda.de/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

110 lines
2.0 KiB

{ lib
, stdenv
, fetchFromGitHub
, git
, autoconf
, automake
, gfortran
, perl
, python3
, flex
, libnl
, rdma-core
, zlib
, numactl
, libevent
, hwloc
, libpsm2
, libfabric
, libtool
, libbfd
, libiberty
, pmix
, ucx
, postgresql
, ...
}:
stdenv.mkDerivation {
pname = "edumpi";
version = "407386";
src = fetchFromGitHub {
owner = "AnnaLena77";
repo = "EduMPI";
rev = "40738625c769b1233bc8f61806becda9061b1301";
hash = "sha256-iqOagYduKxxyf/rflv+UZnYfWmjSEjmQPk2owLEQeDQ=";
fetchSubmodules = true;
};
postPatch = ''
patchShebangs ./
'';
nativeBuildInputs = [
autoconf
automake
perl
python3
gfortran
git
flex
];
buildInputs = [
zlib
libnl
numactl
pmix
ucx
libevent
hwloc
rdma-core
libpsm2
libfabric
libtool
libbfd
libiberty
postgresql
];
LIBS = "-lpq";
CFLAGS = "-DENABLE_ANALYSIS=1";
preConfigure = ''
./autogen.pl
'';
configureFlags = [
"--disable-mca-dso"
"--with-libnl=${lib.getDev libnl}"
"--with-pmix=${lib.getDev pmix}"
"--with-pmix-libdir=${pmix}/lib"
"--with-psm2=${lib.getDev libpsm2}"
"--with-libfabric=${lib.getDev libfabric}"
"--with-libfabric-libdir=${libfabric}/lib"
];
enableParallelBuilding = true;
postInstall = ''
find $out/lib/ -name "*.la" -exec rm -f \{} \;
'';
#postFixup = ''
# sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \
# $out/share/openmpi/mpicc-wrapper-data.txt
# sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}cc:' \
# $out/share/openmpi/ortecc-wrapper-data.txt
# sed -i 's:compiler=.*:compiler=${targetPackages.stdenv.cc}/bin/${targetPackages.stdenv.cc.targetPrefix}c++:' \
# $out/share/openmpi/mpic++-wrapper-data.txt
# sed -i 's:compiler=.*:compiler=${gfortran}/bin/${gfortran.targetPrefix}gfortran:' \
# $out/share/openmpi/mpifort-wrapper-data.txt
#'';
doCheck = true;
}