evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / mi / mininet / package.nix
bloba04859cc10894979c8976a0955eefb7ab3aeba0e
1 { stdenv, lib, fetchFromGitHub
2 , runCommand
3 , which
4 , python3
5 , help2man
6 , makeWrapper
7 , ethtool
8 , inetutils
9 , iperf
10 , iproute2
11 , nettools
12 , socat
15 let
16   pyEnv = python3.withPackages(ps: [
17     ps.setuptools
18     ps.packaging
19     ps.distutils
20   ]);
22   telnet = runCommand "inetutils-telnet"
23     { }
24     ''
25       mkdir -p "$out/bin"
26       ln -s "${inetutils}"/bin/telnet "$out/bin"
27     '';
29   generatedPath = lib.makeSearchPath "bin" [
30     iperf
31     ethtool
32     iproute2
33     socat
34     # mn errors out without a telnet binary
35     # pkgs.inetutils brings an undesired ifconfig into PATH see #43105
36     nettools
37     telnet
38   ];
41 stdenv.mkDerivation rec {
42   pname = "mininet";
43   version = "2.3.1b4";
45   outputs = [ "out" "py" ];
47   src = fetchFromGitHub {
48     owner = "mininet";
49     repo = "mininet";
50     rev = version;
51     hash = "sha256-Z7Vbfu0EJ4+rCpckXrt3hgxeB9N2nnyPIXgPBnpV4uw=";
52   };
54   buildFlags = [ "mnexec" ];
55   makeFlags = [ "PREFIX=$(out)" ];
57   pythonPath = [ python3.pkgs.setuptools ];
58   nativeBuildInputs = [ help2man makeWrapper python3.pkgs.wrapPython ];
60   propagatedBuildInputs = [ pyEnv which ];
62   installTargets = [ "install-mnexec" "install-manpages" ];
64   preInstall = ''
65     mkdir -p $out $py
66     # without --root, install fails
67     "${pyEnv.interpreter}" setup.py install \
68       --root="/" \
69       --prefix="$py" \
70       --install-scripts="$out/bin"
71   '';
73   postFixup = ''
74     wrapPythonProgramsIn "$out/bin" "$py $pythonPath"
75     wrapProgram "$out/bin/mnexec" \
76       --prefix PATH : "${generatedPath}"
77     wrapProgram "$out/bin/mn" \
78       --prefix PATH : "${generatedPath}"
79   '';
81   doCheck = false;
84   meta = with lib; {
85     description = "Emulator for rapid prototyping of Software Defined Networks";
86     license = licenses.bsd3;
87     platforms = platforms.linux;
88     homepage = "https://github.com/mininet/mininet";
89     maintainers = with maintainers; [ teto ];
90     mainProgram = "mnexec";
91   };