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:
parent
1acf6716aa
commit
5257232ac7
30
pkgs/applications/networking/gns3/default.nix
Normal file
30
pkgs/applications/networking/gns3/default.nix
Normal 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";
|
||||
};
|
||||
}
|
@ -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 ];
|
||||
|
@ -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 ];
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user