From 5257232ac7a59dc3c7598042f0d21dc4ae60ea14 Mon Sep 17 00:00:00 2001 From: Michael Weiss Date: Fri, 22 Sep 2017 21:18:37 +0200 Subject: gns3: "Improve" the packaging This is "a bit" hacky tho... The improvement is that it now covers the stable as well as the preview releases and doesn't require Python 3.4 anymore. --- pkgs/applications/networking/gns3/server.nix | 62 +++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 11 deletions(-) (limited to 'pkgs/applications/networking/gns3/server.nix') diff --git a/pkgs/applications/networking/gns3/server.nix b/pkgs/applications/networking/gns3/server.nix index 7d5d9433bf31..9d7bf6f5a3ab 100644 --- a/pkgs/applications/networking/gns3/server.nix +++ b/pkgs/applications/networking/gns3/server.nix @@ -1,23 +1,63 @@ -{ stdenv, python3Packages, fetchFromGitHub }: +{ stable, branch, version, sha256Hash }: -python3Packages.buildPythonPackage rec { +{ stdenv, python3Packages, fetchFromGitHub, fetchurl }: + +let + pythonPackages = python3Packages; + yarl = if (!stable) then pythonPackages.yarl + else (stdenv.lib.overrideDerivation pythonPackages.yarl (oldAttrs: + rec { + pname = "yarl"; + version = "0.9.8"; + name = "${pname}-${version}"; + src = pythonPackages.fetchPypi { + inherit pname version; + sha256 = "1v2dsmr7bqp0yx51pwhbxyvzza8m2f88prsnbd926mi6ah38p0d7"; + }; + })); + aiohttp = if (!stable) then pythonPackages.aiohttp + else (stdenv.lib.overrideDerivation pythonPackages.aiohttp (oldAttrs: + rec { + pname = "aiohttp"; + version = "1.3.5"; + name = "${pname}-${version}"; + src = pythonPackages.fetchPypi { + inherit pname version; + sha256 = "0hpqdiaifgyfqmxkyzwypwvrnvz5rqzgzylzhihfidc5ldfs856d"; + }; + propagatedBuildInputs = [ yarl ] + ++ (with pythonPackages; [ async-timeout chardet multidict ]); + })); + aiohttp-cors = if (!stable) then pythonPackages.aiohttp-cors + else (stdenv.lib.overrideDerivation pythonPackages.aiohttp-cors (oldAttrs: + rec { + pname = "aiohttp-cors"; + version = "0.5.1"; + name = "${pname}-${version}"; + src = pythonPackages.fetchPypi { + inherit pname version; + sha256 = "0szma27ri25fq4nwwvs36myddggw3jz4pyzmq63yz4xpw0jjdxck"; + }; + propagatedBuildInputs = [ aiohttp ]; + })); +in pythonPackages.buildPythonPackage rec { name = "${pname}-${version}"; pname = "gns3-server"; - version = "2.1.0rc1"; src = fetchFromGitHub { owner = "GNS3"; repo = pname; rev = "v${version}"; - sha256 = "181689fpjxq4hy2lyxk4zciqhgnhj5srvb4xsxdlbf68n89fj2zf"; + sha256 = sha256Hash; }; - propagatedBuildInputs = with python3Packages; [ - aiohttp jinja2 psutil zipstream aiohttp-cors raven jsonschema yarl typing - prompt_toolkit - ]; + propagatedBuildInputs = [ yarl aiohttp aiohttp-cors ] + ++ (with pythonPackages; [ + jinja2 psutil zipstream raven jsonschema typing + prompt_toolkit + ]); - postPatch = '' + postPatch = stdenv.lib.optionalString (!stable) '' sed -i 's/yarl>=0.11,<0.12/yarl/g' requirements.txt ''; @@ -28,13 +68,13 @@ python3Packages.buildPythonPackage rec { rm $out/bin/gns3loopback # For windows only ''; meta = with stdenv.lib; { - description = "Graphical Network Simulator 3 server"; + description = "Graphical Network Simulator 3 server (${branch} release)"; longDescription = '' The GNS3 server manages emulators such as Dynamips, VirtualBox or Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST API. ''; - homepage = "https://www.gns3.com/"; + homepage = https://www.gns3.com/; license = licenses.gpl3Plus; platforms = platforms.linux; maintainers = with maintainers; [ primeos ]; -- cgit 1.4.1