summary refs log tree commit diff
path: root/pkgs/applications/system
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2020-03-26 17:17:48 +0000
committerAlyssa Ross <hi@alyssa.is>2020-03-26 17:36:07 +0000
commit70e58881128ed8170821840138ab08fc5cdd3c11 (patch)
tree1bf0d3d977878df5b58493ea02b2e6c79df3ba22 /pkgs/applications/system
parenta9847c36e6aa003998c1ef5518e5710658ca5770 (diff)
parent90dcc3360327e250536eeeca7fe9d887c9f7a817 (diff)
downloadnixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.gz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.bz2
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.lz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.xz
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.tar.zst
nixpkgs-70e58881128ed8170821840138ab08fc5cdd3c11.zip
Merge remote-tracking branch 'nixpkgs/master' into master
Diffstat (limited to 'pkgs/applications/system')
-rw-r--r--pkgs/applications/system/glances/default.nix58
-rw-r--r--pkgs/applications/system/glances/skip-failing-tests.patch52
2 files changed, 110 insertions, 0 deletions
diff --git a/pkgs/applications/system/glances/default.nix b/pkgs/applications/system/glances/default.nix
new file mode 100644
index 00000000000..3dfec185b57
--- /dev/null
+++ b/pkgs/applications/system/glances/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, fetchpatch, isPyPy, lib
+, future, psutil, setuptools
+# Optional dependencies:
+, bottle, batinfo, pysnmp
+, hddtemp
+, netifaces # IP module
+}:
+
+buildPythonApplication rec {
+  pname = "glances";
+  version = "3.1.4.1";
+  disabled = isPyPy;
+
+  src = fetchFromGitHub {
+    owner = "nicolargo";
+    repo = "glances";
+    rev = "v${version}";
+    sha256 = "04dc3pwj9qbbhxpihf13ckdgwz0qc771c7v7awni4vyzk3a9cdfb";
+  };
+
+  # 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;
+
+  # 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;
+  preCheck = lib.optional stdenv.isDarwin ''
+    export DYLD_FRAMEWORK_PATH=/System/Library/Frameworks
+  '';
+
+  propagatedBuildInputs = [
+    batinfo
+    bottle
+    future
+    netifaces
+    psutil
+    pysnmp
+    setuptools
+  ] ++ 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";
+    changelog = "https://github.com/nicolargo/glances/releases/tag/v${version}";
+    license = licenses.lgpl3;
+    maintainers = with maintainers; [ jonringer primeos koral ];
+  };
+}
diff --git a/pkgs/applications/system/glances/skip-failing-tests.patch b/pkgs/applications/system/glances/skip-failing-tests.patch
new file mode 100644
index 00000000000..f47f1218aea
--- /dev/null
+++ b/pkgs/applications/system/glances/skip-failing-tests.patch
@@ -0,0 +1,52 @@
+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']