summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorMichael Weiss <dev.primeos@gmail.com>2017-09-22 21:18:37 +0200
committerMichael Weiss <dev.primeos@gmail.com>2017-09-22 21:30:38 +0200
commit5257232ac7a59dc3c7598042f0d21dc4ae60ea14 (patch)
treeafa5fc5f76dc061f6e2fdc5e70424b5688c66155 /pkgs
parent1acf6716aafc863ce33e3b7b431c1defbbd88275 (diff)
downloadnixpkgs-5257232ac7a59dc3c7598042f0d21dc4ae60ea14.tar
nixpkgs-5257232ac7a59dc3c7598042f0d21dc4ae60ea14.tar.gz
nixpkgs-5257232ac7a59dc3c7598042f0d21dc4ae60ea14.tar.bz2
nixpkgs-5257232ac7a59dc3c7598042f0d21dc4ae60ea14.tar.lz
nixpkgs-5257232ac7a59dc3c7598042f0d21dc4ae60ea14.tar.xz
nixpkgs-5257232ac7a59dc3c7598042f0d21dc4ae60ea14.tar.zst
nixpkgs-5257232ac7a59dc3c7598042f0d21dc4ae60ea14.zip
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.
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/networking/gns3/default.nix30
-rw-r--r--pkgs/applications/networking/gns3/gui.nix27
-rw-r--r--pkgs/applications/networking/gns3/server.nix62
-rw-r--r--pkgs/top-level/all-packages.nix5
4 files changed, 100 insertions, 24 deletions
diff --git a/pkgs/applications/networking/gns3/default.nix b/pkgs/applications/networking/gns3/default.nix
new file mode 100644
index 00000000000..bec700367da
--- /dev/null
+++ b/pkgs/applications/networking/gns3/default.nix
@@ -0,0 +1,30 @@
+{ callPackage, stdenv }:
+
+let
+  stableVersion = "2.0.3";
+  previewVersion = "2.1.0rc1";
+  addVersion = args:
+    let version = if args.stable then stableVersion else previewVersion;
+        branch = if args.stable then "stable" else "preview";
+    in args // { inherit version branch; };
+  mkGui = args: callPackage (import ./gui.nix (addVersion args)) { };
+  mkServer = args: callPackage (import ./server.nix (addVersion args)) { };
+in {
+  guiStable = mkGui {
+    stable = true;
+    sha256Hash = "10qp6430md8d0h2wamgfaq7pai59mqmcw6sw3i1gvb20m0avvsvb";
+  };
+  guiPreview = mkGui {
+    stable = false;
+    sha256Hash = "0rmvanzc0fjw9giqwnf98yc49cxaz637w8b865dv08lcf1fg9j8l";
+  };
+
+  serverStable = mkServer {
+    stable = true;
+    sha256Hash = "1c7mzj1r2zh90a7vs3s17jakfp9s43b8nnj29rpamqxvl3qhbdy7";
+  };
+  serverPreview = mkServer {
+    stable = false;
+    sha256Hash = "181689fpjxq4hy2lyxk4zciqhgnhj5srvb4xsxdlbf68n89fj2zf";
+  };
+}
diff --git a/pkgs/applications/networking/gns3/gui.nix b/pkgs/applications/networking/gns3/gui.nix
index 284c4f8cee1..1352774953d 100644
--- a/pkgs/applications/networking/gns3/gui.nix
+++ b/pkgs/applications/networking/gns3/gui.nix
@@ -1,19 +1,22 @@
-{ stdenv, python34Packages, fetchFromGitHub }:
+{ stable, branch, version, sha256Hash }:
 
-# TODO: Python 3.6 was failing
-python34Packages.buildPythonPackage rec {
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+let
+  pythonPackages = python3Packages;
+
+in pythonPackages.buildPythonPackage rec {
   name = "${pname}-${version}";
   pname = "gns3-gui";
-  version = "2.0.3";
 
   src = fetchFromGitHub {
     owner = "GNS3";
     repo = pname;
     rev = "v${version}";
-    sha256 = "10qp6430md8d0h2wamgfaq7pai59mqmcw6sw3i1gvb20m0avvsvb";
+    sha256 = sha256Hash;
   };
 
-  propagatedBuildInputs = with python34Packages; [
+  propagatedBuildInputs = with pythonPackages; [
     raven psutil jsonschema # tox for check
     # Runtime dependencies
     sip pyqt5
@@ -22,11 +25,13 @@ python34Packages.buildPythonPackage rec {
   doCheck = false; # Failing
 
   meta = with stdenv.lib; {
-    description = "Graphical Network Simulator";
-    #longDescription = ''
-    #  ...
-    #'';
-    homepage = "https://www.gns3.com/";
+    description = "Graphical Network Simulator 3 GUI (${branch} release)";
+    longDescription = ''
+      Graphical user interface for controlling the GNS3 network simulator. This
+      requires access to a local or remote GNS3 server (it's recommended to
+      download the official GNS3 VM).
+    '';
+    homepage = https://www.gns3.com/;
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ primeos ];
diff --git a/pkgs/applications/networking/gns3/server.nix b/pkgs/applications/networking/gns3/server.nix
index 7d5d9433bf3..9d7bf6f5a3a 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 ];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 374dc8e81c7..0798cb204e0 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8256,8 +8256,9 @@ with pkgs;
   # A GMP fork
   mpir = callPackage ../development/libraries/mpir {};
 
-  gns3-gui = callPackage ../applications/networking/gns3/gui.nix { };
-  gns3-server = callPackage ../applications/networking/gns3/server.nix { };
+  gns3Packages = callPackage ../applications/networking/gns3 { };
+  gns3-gui = gns3Packages.guiStable;
+  gns3-server = gns3Packages.serverStable;
 
   gobjectIntrospection = callPackage ../development/libraries/gobject-introspection {
     nixStoreDir = config.nix.storeDir or builtins.storeDir;