diff options
author | Matthieu Coudron <mattator@gmail.com> | 2017-11-07 20:58:08 +0900 |
---|---|---|
committer | Matthieu Coudron <mattator@gmail.com> | 2018-04-06 13:54:20 +0900 |
commit | 863c2908f2a80eaa87357f4e6214aa71f797a11c (patch) | |
tree | e675c0a31c456253d36584076ae8389a5abf59d9 /pkgs/development/libraries/science | |
parent | d307ab5ca3bff5609db8c942a40961278371bea4 (diff) | |
download | nixlib-863c2908f2a80eaa87357f4e6214aa71f797a11c.tar nixlib-863c2908f2a80eaa87357f4e6214aa71f797a11c.tar.gz nixlib-863c2908f2a80eaa87357f4e6214aa71f797a11c.tar.bz2 nixlib-863c2908f2a80eaa87357f4e6214aa71f797a11c.tar.lz nixlib-863c2908f2a80eaa87357f4e6214aa71f797a11c.tar.xz nixlib-863c2908f2a80eaa87357f4e6214aa71f797a11c.tar.zst nixlib-863c2908f2a80eaa87357f4e6214aa71f797a11c.zip |
ns-3: init at 28.0
ns-3 is a discrete event C++ network simulator developed at www.nsnam.org . Python bindings & manual building are disabled by default but you can override it.
Diffstat (limited to 'pkgs/development/libraries/science')
-rw-r--r-- | pkgs/development/libraries/science/networking/ns3/default.nix | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/pkgs/development/libraries/science/networking/ns3/default.nix b/pkgs/development/libraries/science/networking/ns3/default.nix new file mode 100644 index 000000000000..9fc72f18e5d7 --- /dev/null +++ b/pkgs/development/libraries/science/networking/ns3/default.nix @@ -0,0 +1,98 @@ +{ stdenv +, fetchFromGitHub, fetchurl +, python + +# for binding generation +, castxml ? null + +# can take a long time, generates > 30000 images/graphs +, enableDoxygen ? false + +# e.g. "optimized" or "debug". If not set, use default one +, build_profile ? null + +# --enable-examples +, withExamples ? false + +# very long +, withManual ? false, doxygen ? null, graphviz ? null, imagemagick ? null +# for manual, tetex is used to get the eps2pdf binary +# texlive to get latexmk. building manual still fails though +, dia, tetex ? null, ghostscript ? null, texlive ? null + +# generates python bindings +, generateBindings ? false, ncurses ? null + +# All modules can be enabled by choosing 'all_modules'. +# we include here the DCE mandatory ones +, modules ? [ "core" "network" "internet" "point-to-point" "fd-net-device" "netanim"] +, gcc6 +, lib +}: + +let + pythonEnv = python.withPackages(ps: + stdenv.lib.optional withManual ps.sphinx + ++ stdenv.lib.optionals generateBindings (with ps;[ pybindgen pygccxml ]) + ); +in +stdenv.mkDerivation rec { + + name = "ns-3.${version}"; + version = "28"; + + # the all in one https://www.nsnam.org/release/ns-allinone-3.27.tar.bz2; + # fetches everything (netanim, etc), this package focuses on ns3-core + src = fetchFromGitHub { + owner = "nsnam"; + repo = "ns-3-dev-git"; + rev = name; + sha256 = "17kzfjpgw2mvyx1c9bxccnvw67jpk09fxmcnlkqx9xisk10qnhng"; + }; + + # ncurses is a hidden dependency of waf when checking python + buildInputs = lib.optionals generateBindings [ castxml ncurses ] + ++ stdenv.lib.optional enableDoxygen [ doxygen graphviz imagemagick ] + ++ stdenv.lib.optional withManual [ dia tetex ghostscript texlive.combined.scheme-medium ]; + + propagatedBuildInputs = [ gcc6 pythonEnv ]; + + postPatch = '' + patchShebangs ./waf + patchShebangs doc/ns3_html_theme/get_version.sh + ''; + + configureScript = "${python.interpreter} ./waf configure"; + + configureFlags = with stdenv.lib; [ + "--enable-modules=${stdenv.lib.concatStringsSep "," modules}" + "--with-python=${pythonEnv.interpreter}" + ] + ++ optional (build_profile != null) "--build-profile=${build_profile}" + ++ optional generateBindings [ ] + ++ optional withExamples " --enable-examples " + ++ optional doCheck " --enable-tests " + ; + + postBuild = with stdenv.lib; let flags = concatStringsSep ";" ( + optional enableDoxygen "./waf doxygen" + ++ optional withManual "./waf sphinx" + ); + in "${flags}" + ; + + doCheck = true; + + # we need to specify the proper interpreter else ns3 can check against a + # different version even though we + checkPhase = '' + ${pythonEnv.interpreter} ./test.py + ''; + + meta = { + homepage = http://www.nsnam.org; + license = stdenv.lib.licenses.gpl3; + description = "A discrete time event network simulator"; + platforms = with stdenv.lib.platforms; unix; + }; +} |