From 0cace1fbd2cf3f25e61051e4b8f9d9768bc628fd Mon Sep 17 00:00:00 2001 From: MERCIER Michael Date: Mon, 27 Nov 2017 17:50:25 +0100 Subject: [PATCH 1/3] simgrid: 3.15 -> 3.17 + clean + add options --- .../science/misc/simgrid/default.nix | 148 +++++++++++------- 1 file changed, 88 insertions(+), 60 deletions(-) diff --git a/pkgs/applications/science/misc/simgrid/default.nix b/pkgs/applications/science/misc/simgrid/default.nix index 8a3645705ab5..7b01d4399e1b 100644 --- a/pkgs/applications/science/misc/simgrid/default.nix +++ b/pkgs/applications/science/misc/simgrid/default.nix @@ -1,75 +1,106 @@ -{ fetchurl, stdenv, cmake, perl, ruby, boost, lua5_3, graphviz, libsigcxx -, libunwind, elfutils, python3, doxygen +{ stdenv, fetchFromGitHub, cmake, elfutils, 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 # Inside elfutils - , libelf, libevent, libdw +, debug ? false +, moreTests ? false }: -stdenv.mkDerivation rec { - version = "3.15"; - name = "simgrid-${version}"; +# helpers for options +let optionals = stdenv.lib.optionals; + optionalString = stdenv.lib.optionalString; + optionOnOff = option: "${if option then "on" else "off"}"; +in - src = fetchurl { - url = "https://gforge.inria.fr/frs/download.php/36621/${name}.tar.gz"; - sha256 = "1s595wc4z8hkvim3ypfdxy16pply6ckjg10v84cc0lx9pz6i3r6i"; +stdenv.mkDerivation rec { + major_version = "3"; + minor_version = "17"; + version = "v${major_version}.${minor_version}"; + tagged_version = "${major_version}_${minor_version}"; + name = "simgrid"; + + src = fetchFromGitHub { + owner = "simgrid"; + repo = "simgrid"; + rev = "v3_17"; + sha256 = "0ffs9w141qhw571jsa9sch1cnr332vs4sgj6dsiij2mc24m6wpb4"; + #rev = "master"; + #sha256 = "0qvh1jzc2lpnp8234kjx1x4g1a5kfdn6kb15vhk160qgvj98nyqm"; }; - buildInputs = [ cmake perl ruby boost lua5_3 graphviz libsigcxx libunwind - elfutils python3 doxygen - ]; + nativeBuildInputs = [ cmake perl elfutils python3 boost valgrind] + ++ optionals fortranSupport [gfortran] + ++ optionals buildJavaBindings [openjdk] + ++ optionals buildDocumentation [transfig ghostscript doxygen] + ++ optionals modelCheckingSupport [libunwind libevent]; + + #buildInputs = optional luaSupport lua5; preConfigure = # Make it so that libsimgrid.so will be found when running programs from # the build dir. - '' export LD_LIBRARY_PATH="$PWD/src/.libs" - export cmakeFlags="-Dprefix=$out" - - export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE - -isystem $(echo "${libsigcxx}/lib/"sigc++*/include) - -isystem $(echo "${libsigcxx}/include"/sigc++* ) - " - export CMAKE_PREFIX_PATH="$CMAKE_PREFIX_PATH:$(echo "${libsigcxx}/lib/"sigc++*)" - - # Enable more functionality. - export cmakeFlags="$cmakeFlags -Denable_tracing=on -Denable_jedule=on - -Denable_latency_bound_tracking=on -Denable_lua=on - -Denable_ns3=off -Denable_gtnets=on - " + '' + export LD_LIBRARY_PATH="$PWD/build/lib" ''; - makeFlags = "VERBOSE=1"; + # 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: + # http://simgrid.gforge.inria.fr/simgrid/latest/doc/install.html#install_cmake_list + 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 = optionalString debug "VERBOSE=1"; preBuild = - /* Work around this: - - [ 20%] Generating _msg_handle_simulator.c, _msg_handle_client.c, _msg_handle_server.c - cd /tmp/nix-build-7yc8ghmf2yb8zi3bsri9b6qadwmfpzhr-simgrid-3.5.drv-0/simgrid-3.5/build/teshsuite/gras/msg_handle && ../../../bin/gras_stub_generator msg_handle /tmp/nix-build-7yc8ghmf2yb8zi3bsri9b6qadwmfpzhr-simgrid-3.5.drv-0/simgrid-3.5/teshsuite/gras/msg_handle/msg_handle.xml - ../../../bin/gras_stub_generator: error while loading shared libraries: libsimgrid.so.3.5: cannot open shared object file: No such file or directory - make[2]: *** [teshsuite/gras/msg_handle/_msg_handle_simulator.c] Error 127 - make[2]: Leaving directory `/tmp/nix-build-7yc8ghmf2yb8zi3bsri9b6qadwmfpzhr-simgrid-3.5.drv-0/simgrid-3.5/build' - - */ - '' export LD_LIBRARY_PATH="$PWD/lib:$LD_LIBRARY_PATH" - echo "\$LD_LIBRARY_PATH is \`$LD_LIBRARY_PATH'" + '' + # Some perl scripts are called to generate test during build which + # is before the fixupPhase of nix, so do this manualy here: + patchShebangs .. ''; - patchPhase = - '' for i in "src/smpi/"* - do - test -f "$i" && - sed -i "$i" -e's|/bin/bash|/bin/sh|g' - done + doCheck = true; + checkPhase = '' + runHook preCheck - for i in $(grep -rl /usr/bin/perl .) - do - sed -i "$i" -e's|/usr/bin/perl|${perl}/bin/perl|g' - done - patchShebangs ./tools/ + ctest --output-on-failure -E smpi-replay-multiple + + runHook postCheck ''; + enableParallelBuilding = true; - # Fixing the few tests that fail is left as an exercise to the reader. - doCheck = false; - - meta = { - description = "Simulator for distributed applications in heterogeneous environments"; - + meta = with stdenv.lib; { + 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 @@ -78,12 +109,9 @@ stdenv.mkDerivation rec { scheduling on distributed computing platforms ranging from simple network of workstations to Computational Grids. ''; - homepage = http://simgrid.gforge.inria.fr/; - - license = stdenv.lib.licenses.lgpl2Plus; - - maintainers = [ ]; - platforms = stdenv.lib.platforms.gnu; # arbitrary choice + maintainers = with maitainers; [ ]; + platforms = platforms.x86_64; + license = licenses.lgpl2Plus; }; } From 8fa00adf1ab50b4fc938d068c0f5193049bc1439 Mon Sep 17 00:00:00 2001 From: MERCIER Michael Date: Mon, 27 Nov 2017 17:58:49 +0100 Subject: [PATCH 2/3] Add myself as maintainer --- lib/maintainers.nix | 1 + pkgs/applications/science/misc/simgrid/default.nix | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 509f2da8a4bc..08f69e7daee6 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -414,6 +414,7 @@ michaelpj = "Michael Peyton Jones "; michalrus = "Michal Rus "; michelk = "Michel Kuhlmann "; + mickours = "Michael Mercier Date: Tue, 28 Nov 2017 13:13:01 +0100 Subject: [PATCH 3/3] Fix typo --- pkgs/applications/science/misc/simgrid/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/science/misc/simgrid/default.nix b/pkgs/applications/science/misc/simgrid/default.nix index 677fbcf8fa5d..34ff510e1d8b 100644 --- a/pkgs/applications/science/misc/simgrid/default.nix +++ b/pkgs/applications/science/misc/simgrid/default.nix @@ -110,7 +110,7 @@ stdenv.mkDerivation rec { network of workstations to Computational Grids. ''; homepage = http://simgrid.gforge.inria.fr/; - maintainers = with maitainers; [ mickours ]; + maintainers = with maintainers; [ mickours ]; platforms = platforms.x86_64; license = licenses.lgpl2Plus; };