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