glances: move from python-module to application
This commit is contained in:
@@ -1,67 +0,0 @@
|
||||
{ stdenv, buildPythonPackage, fetchFromGitHub, fetchpatch, isPyPy, lib
|
||||
, psutil, setuptools, bottle, batinfo, pysnmp
|
||||
, hddtemp, future
|
||||
# Optional dependencies:
|
||||
, netifaces # IP module
|
||||
# Tests:
|
||||
, unittest2
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "glances";
|
||||
version = "3.1.3";
|
||||
disabled = isPyPy;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nicolargo";
|
||||
repo = "glances";
|
||||
rev = "v${version}";
|
||||
sha256 = "15yz8sbw3k3n0729g2zcwsxc5iyhkyrhqza6fnipxxpsskwgqbwp";
|
||||
};
|
||||
|
||||
# Some tests fail in the sandbox (they e.g. require access to /sys/class/power_supply):
|
||||
patches = lib.optional (doCheck && stdenv.isLinux) ./skip-failing-tests.patch
|
||||
++ [
|
||||
(fetchpatch {
|
||||
# Correct unitest
|
||||
url = "https://github.com/nicolargo/glances/commit/abf64ffde31113f5f46ef286703ff061fc57395f.patch";
|
||||
sha256 = "00krahqq89jvbgrqx2359cndmvq5maffhpj163z10s1n7q80kxp1";
|
||||
})
|
||||
|
||||
(fetchpatch {
|
||||
# Fix IP plugin initialization issue
|
||||
url = "https://github.com/nicolargo/glances/commit/48cb5ef8053d823302e7e53490fb22cec2fabb0f.patch";
|
||||
sha256 = "1590qgcr8w3d9ddpgd9mk5j6q6aq29341vr8bi202yjwwiv2bia9";
|
||||
})
|
||||
];
|
||||
|
||||
# On Darwin this package segfaults due to mismatch of pure and impure
|
||||
# CoreFoundation. This issues was solved for binaries but for interpreted
|
||||
# scripts a workaround below is still required.
|
||||
# Relevant: https://github.com/NixOS/nixpkgs/issues/24693
|
||||
makeWrapperArgs = lib.optionals stdenv.isDarwin [
|
||||
"--set" "DYLD_FRAMEWORK_PATH" "/System/Library/Frameworks"
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
checkInputs = [ unittest2 ];
|
||||
preCheck = lib.optional stdenv.isDarwin ''
|
||||
export DYLD_FRAMEWORK_PATH=/System/Library/Frameworks
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = [ psutil setuptools bottle batinfo pysnmp future
|
||||
netifaces
|
||||
] ++ lib.optional stdenv.isLinux hddtemp;
|
||||
|
||||
preConfigure = ''
|
||||
sed -i 's/data_files\.append((conf_path/data_files.append(("etc\/glances"/' setup.py;
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = https://nicolargo.github.io/glances/;
|
||||
description = "Cross-platform curses-based monitoring tool";
|
||||
license = licenses.lgpl3;
|
||||
maintainers = with maintainers; [ primeos koral ];
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
};
|
||||
}
|
||||
@@ -1,60 +0,0 @@
|
||||
diff --git a/unitest.py b/unitest.py
|
||||
--- a/unitest.py
|
||||
+++ b/unitest.py
|
||||
@@ -59,6 +59,7 @@ class TestGlances(unittest.TestCase):
|
||||
"""The function is called *every time* before test_*."""
|
||||
print('\n' + '=' * 78)
|
||||
|
||||
+ @unittest.skip("Requires access to /etc/mtab")
|
||||
def test_000_update(self):
|
||||
"""Update stats (mandatory step for all the stats).
|
||||
|
||||
@@ -87,6 +88,7 @@ class TestGlances(unittest.TestCase):
|
||||
for plugin in plugins_to_check:
|
||||
self.assertTrue(plugin in plugins_list)
|
||||
|
||||
+ @unittest.skip("Fails on NixOS")
|
||||
def test_002_system(self):
|
||||
"""Check SYSTEM plugin."""
|
||||
stats_to_check = ['hostname', 'os_name']
|
||||
@@ -97,6 +99,7 @@ class TestGlances(unittest.TestCase):
|
||||
self.assertTrue(stat in stats_grab, msg='Cannot find key: %s' % stat)
|
||||
print('INFO: SYSTEM stats: %s' % stats_grab)
|
||||
|
||||
+ @unittest.skip("Fails on NixOS")
|
||||
def test_003_cpu(self):
|
||||
"""Check CPU plugin."""
|
||||
stats_to_check = ['system', 'user', 'idle']
|
||||
@@ -110,7 +113,7 @@ class TestGlances(unittest.TestCase):
|
||||
self.assertLessEqual(stats_grab[stat], 100)
|
||||
print('INFO: CPU stats: %s' % stats_grab)
|
||||
|
||||
- @unittest.skipIf(WINDOWS, "Load average not available on Windows")
|
||||
+ @unittest.skip("Fails on NixOS")
|
||||
def test_004_load(self):
|
||||
"""Check LOAD plugin."""
|
||||
stats_to_check = ['cpucore', 'min1', 'min5', 'min15']
|
||||
@@ -123,6 +126,7 @@ class TestGlances(unittest.TestCase):
|
||||
self.assertGreaterEqual(stats_grab[stat], 0)
|
||||
print('INFO: LOAD stats: %s' % stats_grab)
|
||||
|
||||
+ @unittest.skip("Fails on NixOS")
|
||||
def test_005_mem(self):
|
||||
"""Check MEM plugin."""
|
||||
stats_to_check = ['available', 'used', 'free', 'total']
|
||||
@@ -135,6 +139,7 @@ class TestGlances(unittest.TestCase):
|
||||
self.assertGreaterEqual(stats_grab[stat], 0)
|
||||
print('INFO: MEM stats: %s' % stats_grab)
|
||||
|
||||
+ @unittest.skip("Fails on NixOS")
|
||||
def test_006_swap(self):
|
||||
"""Check MEMSWAP plugin."""
|
||||
stats_to_check = ['used', 'free', 'total']
|
||||
@@ -191,6 +196,7 @@ class TestGlances(unittest.TestCase):
|
||||
self.assertTrue(type(stats_grab) is list, msg='Folders stats is not a list')
|
||||
print('INFO: Folders stats: %s' % stats_grab)
|
||||
|
||||
+ @unittest.skip("Fails on NixOS (TODO)")
|
||||
def test_012_ip(self):
|
||||
"""Check IP plugin."""
|
||||
print('INFO: [TEST_012] Check IP stats')
|
||||
Reference in New Issue
Block a user