summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Geerinckx-Rice <me@tobias.gr>2019-06-16 03:00:29 +0200
committerTobias Geerinckx-Rice <me@tobias.gr>2019-06-16 19:44:42 +0200
commit10a32973893f5229c963241b6339ecab05b6098e (patch)
treeae6c6a518d2a3af948585d8b35101d679b14aeff
parentfa67073f13a889589b4b0207e83891fe9226f2dc (diff)
gnu: dstat: Add two patches, fix two bugs.
* gnu/packages/admin.scm (dstat)[source]: Add patches. * gnu/packages/patches/dstat-fix-crash-when-specifying-delay.patch, gnu/packages/patches/dstat-skip-devices-without-io.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them.
-rw-r--r--gnu/local.mk2
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/patches/dstat-fix-crash-when-specifying-delay.patch48
-rw-r--r--gnu/packages/patches/dstat-skip-devices-without-io.patch32
4 files changed, 85 insertions, 1 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 5b6dd31b11..da3245ea18 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -753,6 +753,8 @@ dist_patch_DATA = \
%D%/packages/patches/docker-use-fewer-modprobes.patch \
%D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \
%D%/packages/patches/doxygen-test.patch \
+ %D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch \
+ %D%/packages/patches/dstat-skip-devices-without-io.patch \
%D%/packages/patches/dvd+rw-tools-add-include.patch \
%D%/packages/patches/elfutils-tests-ptrace.patch \
%D%/packages/patches/elixir-path-length.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index a897afdc0e..4ae0733fbb 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -2133,7 +2133,9 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
(commit (string-append "v" version))))
(file-name (git-file-name "dstat" version))
(sha256
- (base32 "1qnmkhqmjd1m3if05jj29dvr5hn6kayq9bkkkh881w472c0zhp8v"))))
+ (base32 "1qnmkhqmjd1m3if05jj29dvr5hn6kayq9bkkkh881w472c0zhp8v"))
+ (patches (search-patches "dstat-fix-crash-when-specifying-delay.patch"
+ "dstat-skip-devices-without-io.patch"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no make check
diff --git a/gnu/packages/patches/dstat-fix-crash-when-specifying-delay.patch b/gnu/packages/patches/dstat-fix-crash-when-specifying-delay.patch
new file mode 100644
index 0000000000..0b59387dc9
--- /dev/null
+++ b/gnu/packages/patches/dstat-fix-crash-when-specifying-delay.patch
@@ -0,0 +1,48 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Sun, 16 Jun 2019 02:34:10 +0200
+Subject: [PATCH] gnu: dstat: Fix crash when specifying a delay.
+
+Taken verbatim from a pull request[0] that will never be merged.
+
+[0]: https://github.com/dagwieers/dstat/pull/167
+
+From 220a785321b13b6df92a536080aca6ef1cb644ad Mon Sep 17 00:00:00 2001
+From: Falko Goettsch <falko@uw.edu>
+Date: Mon, 11 Mar 2019 20:12:49 -0700
+Subject: [PATCH] Fixed bug when specifying a delay
+
+The division in the 'loop' calculation in perform() was returning floating point values
+after the migration to Python 3, rather than rounding down. Changed to floor division.
+
+I think the floating point values kept 'loop == 0' from ever being
+true and the variables inside that conditional were never initialized,
+causing the following error when a delay other than 1 was specified:
+
+You did not select any stats, using -cdngy by default.
+Traceback (most recent call last):
+ File "/home/falko/repos/dstat/dstat", line 2825, in <module>
+ main()
+ File "/home/falko/repos/dstat/dstat", line 2684, in main
+ scheduler.run()
+ File "/home/falko/.conda/envs/python3/lib/python3.7/sched.py", line 151, in run
+ action(*argument, **kwargs)
+ File "/home/falko/repos/dstat/dstat", line 2729, in perform
+ oldcols = cols
+NameError: name 'cols' is not defined
+---
+ dstat | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dstat b/dstat
+index 9359965..3b4980f 100755
+--- a/dstat
++++ b/dstat
+@@ -2697,7 +2697,7 @@ def perform(update):
+
+ starttime = time.time()
+
+- loop = (update - 1 + op.delay) / op.delay
++ loop = (update - 1 + op.delay) // op.delay
+ step = ((update - 1) % op.delay) + 1
+
+ ### Get current time (may be different from schedule) for debugging
diff --git a/gnu/packages/patches/dstat-skip-devices-without-io.patch b/gnu/packages/patches/dstat-skip-devices-without-io.patch
new file mode 100644
index 0000000000..eb0910f501
--- /dev/null
+++ b/gnu/packages/patches/dstat-skip-devices-without-io.patch
@@ -0,0 +1,32 @@
+From: Tobias Geerinckx-Rice <me@tobias.gr>
+Date: Sun, 16 Jun 2019 02:36:23 +0200
+Subject: [PATCH] gnu: dstat: Skip devices without I/O.
+
+Taken verbatim from a pull request[0] that will never be merged.
+
+[0]: https://github.com/dagwieers/dstat/pull/164
+
+From 0988589ea4ee092b285bd4049d56add5f61e3f69 Mon Sep 17 00:00:00 2001
+From: Tobias Gruetzmacher <tobias-git@23.gs>
+Date: Fri, 15 Feb 2019 18:46:57 +0100
+Subject: [PATCH] Skip devices without I/O
+
+Linux 4.18+ has added more fields to the diskstats proc file, so the
+original skip condition for devices without I/O didn't apply anymore.
+---
+ dstat | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dstat b/dstat
+index 9359965..5c2fb53 100755
+--- a/dstat
++++ b/dstat
+@@ -763,7 +763,7 @@ class dstat_disk(dstat):
+ ret = []
+ for l in self.splitlines():
+ if len(l) < 13: continue
+- if l[3:] == ['0',] * 11: continue
++ if l[3:] == ['0',] * (len(l) - 3): continue
+ name = l[2]
+ ret.append(name)
+ for item in objlist: ret.append(item)