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.
This commit is contained in:
Michael Weiss 2017-09-22 21:18:37 +02:00
parent 1acf6716aa
commit 5257232ac7
4 changed files with 100 additions and 24 deletions

View File

@ -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";
};
}

View File

@ -1,19 +1,22 @@
{ stdenv, python34Packages, fetchFromGitHub }: { stable, branch, version, sha256Hash }:
# TODO: Python 3.6 was failing { stdenv, python3Packages, fetchFromGitHub }:
python34Packages.buildPythonPackage rec {
let
pythonPackages = python3Packages;
in pythonPackages.buildPythonPackage rec {
name = "${pname}-${version}"; name = "${pname}-${version}";
pname = "gns3-gui"; pname = "gns3-gui";
version = "2.0.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "GNS3"; owner = "GNS3";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "10qp6430md8d0h2wamgfaq7pai59mqmcw6sw3i1gvb20m0avvsvb"; sha256 = sha256Hash;
}; };
propagatedBuildInputs = with python34Packages; [ propagatedBuildInputs = with pythonPackages; [
raven psutil jsonschema # tox for check raven psutil jsonschema # tox for check
# Runtime dependencies # Runtime dependencies
sip pyqt5 sip pyqt5
@ -22,11 +25,13 @@ python34Packages.buildPythonPackage rec {
doCheck = false; # Failing doCheck = false; # Failing
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Graphical Network Simulator"; description = "Graphical Network Simulator 3 GUI (${branch} release)";
#longDescription = '' longDescription = ''
# ... Graphical user interface for controlling the GNS3 network simulator. This
#''; requires access to a local or remote GNS3 server (it's recommended to
homepage = "https://www.gns3.com/"; download the official GNS3 VM).
'';
homepage = https://www.gns3.com/;
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ primeos ]; maintainers = with maintainers; [ primeos ];

View File

@ -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}"; name = "${pname}-${version}";
pname = "gns3-server"; pname = "gns3-server";
version = "2.1.0rc1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "GNS3"; owner = "GNS3";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "181689fpjxq4hy2lyxk4zciqhgnhj5srvb4xsxdlbf68n89fj2zf"; sha256 = sha256Hash;
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = [ yarl aiohttp aiohttp-cors ]
aiohttp jinja2 psutil zipstream aiohttp-cors raven jsonschema yarl typing ++ (with pythonPackages; [
jinja2 psutil zipstream raven jsonschema typing
prompt_toolkit prompt_toolkit
]; ]);
postPatch = '' postPatch = stdenv.lib.optionalString (!stable) ''
sed -i 's/yarl>=0.11,<0.12/yarl/g' requirements.txt 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 rm $out/bin/gns3loopback # For windows only
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Graphical Network Simulator 3 server"; description = "Graphical Network Simulator 3 server (${branch} release)";
longDescription = '' longDescription = ''
The GNS3 server manages emulators such as Dynamips, VirtualBox or The GNS3 server manages emulators such as Dynamips, VirtualBox or
Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST
API. API.
''; '';
homepage = "https://www.gns3.com/"; homepage = https://www.gns3.com/;
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ primeos ]; maintainers = with maintainers; [ primeos ];

View File

@ -8256,8 +8256,9 @@ with pkgs;
# A GMP fork # A GMP fork
mpir = callPackage ../development/libraries/mpir {}; mpir = callPackage ../development/libraries/mpir {};
gns3-gui = callPackage ../applications/networking/gns3/gui.nix { }; gns3Packages = callPackage ../applications/networking/gns3 { };
gns3-server = callPackage ../applications/networking/gns3/server.nix { }; gns3-gui = gns3Packages.guiStable;
gns3-server = gns3Packages.serverStable;
gobjectIntrospection = callPackage ../development/libraries/gobject-introspection { gobjectIntrospection = callPackage ../development/libraries/gobject-introspection {
nixStoreDir = config.nix.storeDir or builtins.storeDir; nixStoreDir = config.nix.storeDir or builtins.storeDir;