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
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 ];

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

View File

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