diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/science/misc/simgrid')
-rw-r--r-- | nixpkgs/pkgs/applications/science/misc/simgrid/default.nix | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/science/misc/simgrid/default.nix b/nixpkgs/pkgs/applications/science/misc/simgrid/default.nix new file mode 100644 index 000000000000..44b0f5d84b66 --- /dev/null +++ b/nixpkgs/pkgs/applications/science/misc/simgrid/default.nix @@ -0,0 +1,112 @@ +{ stdenv, fetchFromGitLab, cmake, perl, python3, boost, valgrind +# Optional requirements +# Lua 5.3 needed and not available now +#, luaSupport ? false, lua5 +, fortranSupport ? false, gfortran +, buildDocumentation ? false, transfig, ghostscript, doxygen +, buildJavaBindings ? false, openjdk +, modelCheckingSupport ? false, libunwind, libevent, elfutils # Inside elfutils: libelf and libdw +, debug ? false +, moreTests ? false +}: + +with stdenv.lib; + +let + optionOnOff = option: if option then "on" else "off"; +in + +stdenv.mkDerivation rec { + pname = "simgrid"; + version = "3.24"; + + src = fetchFromGitLab { + domain = "framagit.org"; + owner = pname; + repo = pname; + rev = "v${version}"; + sha256 = "1r9zgfx5npjw4mk0ywxx07jyi1m1b1i06j0m60n3dsrz75492x6m"; + }; + + nativeBuildInputs = [ cmake perl python3 boost valgrind ] + ++ optionals fortranSupport [ gfortran ] + ++ optionals buildJavaBindings [ openjdk ] + ++ optionals buildDocumentation [ transfig ghostscript doxygen ] + ++ optionals modelCheckingSupport [ libunwind libevent elfutils ]; + + #buildInputs = optional luaSupport lua5; + + # Make it so that libsimgrid.so will be found when running programs from + # the build dir. + preConfigure = '' + export LD_LIBRARY_PATH="$PWD/build/lib" + ''; + + # Release mode is not supported in SimGrid + cmakeBuildType = "Debug"; + + # Disable/Enable functionality + # Note: those packages are not packaged in Nixpkgs yet so some options + # are disabled: + # - papi: for enable_smpi_papi + # - ns3: for enable_ns3 + # - lua53: for enable_lua + # + # For more information see: + # https://simgrid.org/doc/3.22/Installing_SimGrid.html#simgrid-compilation-options) + cmakeFlags = [ + "-Denable_documentation=${optionOnOff buildDocumentation}" + "-Denable_java=${optionOnOff buildJavaBindings}" + "-Denable_fortran=${optionOnOff fortranSupport}" + "-Denable_model-checking=${optionOnOff modelCheckingSupport}" + "-Denable_ns3=off" + "-Denable_lua=off" + "-Denable_lib_in_jar=off" + "-Denable_maintainer_mode=off" + "-Denable_mallocators=on" + "-Denable_debug=on" + "-Denable_smpi=on" + "-Denable_smpi_ISP_testsuite=${optionOnOff moreTests}" + "-Denable_smpi_MPICH3_testsuite=${optionOnOff moreTests}" + "-Denable_compile_warnings=${optionOnOff debug}" + "-Denable_compile_optimizations=${optionOnOff (!debug)}" + "-Denable_lto=${optionOnOff (!debug)}" + # "-Denable_lua=${optionOnOff luaSupport}" + # "-Denable_smpi_papi=${optionOnOff moreTests}" + ]; + + makeFlags = optional debug "VERBOSE=1"; + + # Some Perl scripts are called to generate test during build which + # is before the fixupPhase, so do this manualy here: + preBuild = '' + patchShebangs .. + ''; + + doCheck = true; + + # Prevent the execution of tests known to fail. + preCheck = '' + cat <<EOW >CTestCustom.cmake + SET(CTEST_CUSTOM_TESTS_IGNORE smpi-replay-multiple) + EOW + ''; + + enableParallelBuilding = true; + + meta = { + description = "Framework for the simulation of distributed applications"; + longDescription = '' + SimGrid is a toolkit that provides core functionalities for the + simulation of distributed applications in heterogeneous distributed + environments. The specific goal of the project is to facilitate + research in the area of distributed and parallel application + scheduling on distributed computing platforms ranging from simple + network of workstations to Computational Grids. + ''; + homepage = https://simgrid.org/; + license = licenses.lgpl2Plus; + maintainers = with maintainers; [ mickours mpoquet ]; + platforms = ["x86_64-linux"]; + }; +} |