git-nomad: 0.7.1 -> 0.8.0 (#365279)
[NixPkgs.git] / pkgs / applications / networking / gns3 / server.nix
blobba36823fb938658a90b217b2d7dceac62fab57b1
2   channel,
3   version,
4   hash,
5 }:
8   fetchFromGitHub,
9   gns3-server,
10   lib,
11   nixosTests,
12   pkgsStatic,
13   python3Packages,
14   stdenv,
15   testers,
16   util-linux,
19 python3Packages.buildPythonApplication {
20   pname = "gns3-server";
21   inherit version;
23   src = fetchFromGitHub {
24     inherit hash;
25     owner = "GNS3";
26     repo = "gns3-server";
27     rev = "refs/tags/v${version}";
28   };
30   # GNS3 2.3.26 requires a static BusyBox for the Docker integration
31   prePatch = ''
32     cp ${pkgsStatic.busybox}/bin/busybox gns3server/compute/docker/resources/bin/busybox
33   '';
35   build-system = with python3Packages; [ setuptools ];
37   dependencies =
38     with python3Packages;
39     [
40       aiofiles
41       aiohttp
42       aiohttp-cors
43       async-generator
44       distro
45       jinja2
46       jsonschema
47       multidict
48       platformdirs
49       prompt-toolkit
50       psutil
51       py-cpuinfo
52       sentry-sdk
53       truststore
54       yarl
55     ]
56     ++ lib.optionals (pythonOlder "3.9") [
57       importlib-resources
58     ];
60   postInstall = lib.optionalString (!stdenv.hostPlatform.isWindows) ''
61     rm $out/bin/gns3loopback
62   '';
64   # util-linux (script program) is required for Docker support
65   makeWrapperArgs = [ "--suffix PATH : ${lib.makeBinPath [ util-linux ]}" ];
67   doCheck = true;
69   # Otherwise tests will fail to create directory
70   # Permission denied: '/homeless-shelter'
71   preCheck = ''
72     export HOME=$(mktemp -d)
73   '';
75   checkInputs = with python3Packages; [
76     pytest-aiohttp
77     pytest-rerunfailures
78     pytestCheckHook
79   ];
81   pytestFlagsArray = [
82     # fails on ofborg because of lack of cpu vendor information
83     "--deselect=tests/controller/gns3vm/test_virtualbox_gns3_vm.py::test_cpu_vendor_id"
84     # Rerun failed tests up to three times (flaky tests)
85     "--reruns 3"
86   ];
88   passthru.tests = {
89     inherit (nixosTests) gns3-server;
90     version = testers.testVersion {
91       package = gns3-server;
92       command = "${lib.getExe gns3-server} --version";
93     };
94   };
96   meta = {
97     description = "Graphical Network Simulator 3 server (${channel} release)";
98     longDescription = ''
99       The GNS3 server manages emulators such as Dynamips, VirtualBox or
100       Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST
101       API.
102     '';
103     homepage = "https://www.gns3.com/";
104     changelog = "https://github.com/GNS3/gns3-server/releases/tag/v${version}";
105     license = lib.licenses.gpl3Plus;
106     platforms = lib.platforms.linux;
107     maintainers = with lib.maintainers; [ anthonyroussel ];
108     mainProgram = "gns3server";
109   };