From 10a32973893f5229c963241b6339ecab05b6098e Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 16 Jun 2019 03:00:29 +0200 Subject: 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. --- gnu/local.mk | 2 + gnu/packages/admin.scm | 4 +- .../dstat-fix-crash-when-specifying-delay.patch | 48 ++++++++++++++++++++++ .../patches/dstat-skip-devices-without-io.patch | 32 +++++++++++++++ 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/dstat-fix-crash-when-specifying-delay.patch create mode 100644 gnu/packages/patches/dstat-skip-devices-without-io.patch 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 +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 +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 + 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 +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 +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) -- cgit v1.2.3