diff --git a/garlic/apps/ifsker/default.nix b/garlic/apps/ifsker/default.nix new file mode 100644 index 0000000..8a43fa0 --- /dev/null +++ b/garlic/apps/ifsker/default.nix @@ -0,0 +1,50 @@ +{ + stdenv +, mpi +, gfortran +, tampi +, nanos6 +, mcxx +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + name = "ifsker"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/ksala/ifsker.git"; + ref = "master"; + }; + + buildInputs = [ tampi mpi nanos6 mcxx gfortran ]; + + preferLocalBuild = true; + + # Mercurium seems to fail when building with fortran in parallel + enableParallelBuilding = false; + + # FIXME: Patch mcxx to use other directory than $HOME for the lock + # files. + preConfigure = '' + export TAMPI_HOME=${tampi} + + # $HOME is required for the lock files by mcxx to compile fortran. + # So we use the $TMPDIR to store them. + export HOME=$TMPDIR + ''; + + makeFlags = [ + "-f" "Makefile.gcc" + ]; + + + installPhase = '' + mkdir -p $out/bin + cp *.bin $out/bin/ + ''; + + # TODO: Split the app into variants + programPath = "/bin/03.ifsker.mpi.ompss2.tasks.bin"; + +} diff --git a/overlay.nix b/overlay.nix index d40e804..2a3e7eb 100644 --- a/overlay.nix +++ b/overlay.nix @@ -308,6 +308,8 @@ let variant = "ompss-2"; }; + ifsker = callPackage ./garlic/apps/ifsker/default.nix { }; + # heat = callPackage ./garlic/apps/heat/default.nix { # # FIXME: The heat program must be able to compile with gcc9 and newer # stdenv = self.gcc7Stdenv;