Auto sync2gitlab import of iotop-0.6-17.el8.src.rpm

This commit is contained in:
James Antill 2022-05-26 09:49:47 -04:00
parent c2aa0242ca
commit 1b8ccf8418
12 changed files with 472 additions and 1 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/iotop-0.6.tar.bz2

1
EMPTY
View File

@ -1 +0,0 @@

View File

@ -0,0 +1,12 @@
diff -up iotop-0.6/iotop/ui.py.batchprintutf8 iotop-0.6/iotop/ui.py
--- iotop-0.6/iotop/ui.py.batchprintutf8 2016-11-14 11:21:23.690185257 +0100
+++ iotop-0.6/iotop/ui.py 2016-11-14 11:23:26.511040007 +0100
@@ -444,7 +444,7 @@ class IOTopUI(object):
if self.options.quiet <= int(first_time):
print(''.join(titles))
for l in lines:
- print(l)
+ print(l.encode('utf-8'))
sys.stdout.flush()
else:
self.win.erase()

View File

@ -0,0 +1,41 @@
diff -up iotop-0.6/iotop/data.py.delayacctmsg iotop-0.6/iotop/data.py
--- iotop-0.6/iotop/data.py.delayacctmsg 2022-02-15 21:52:27.206378348 +0100
+++ iotop-0.6/iotop/data.py 2022-02-15 21:52:27.208378321 +0100
@@ -32,7 +32,6 @@ import time
# Check for requirements:
# o Linux >= 2.6.20 with I/O accounting and VM event counters
#
-
ioaccounting = os.path.exists('/proc/self/io')
try:
@@ -77,7 +76,7 @@ class Stats(DumpableObject):
('cancelled_write_bytes', 264)
]
- has_blkio_delay_total = False
+ has_blkio_delay_total = None
def __init__(self, task_stats_buffer):
sd = self.__dict__
@@ -88,7 +87,7 @@ class Stats(DumpableObject):
# This is a heuristic to detect if CONFIG_TASK_DELAY_ACCT is enabled in
# the kernel.
if not Stats.has_blkio_delay_total:
- Stats.has_blkio_delay_total = self.blkio_delay_total != 0
+ Stats.has_blkio_delay_total = sysctl_task_delayacct()
def accumulate(self, other_stats, destination, coeff=1):
"""Update destination from operator(self, other_stats)"""
diff -up iotop-0.6/iotop/ui.py.delayacctmsg iotop-0.6/iotop/ui.py
--- iotop-0.6/iotop/ui.py.delayacctmsg 2022-02-15 21:52:27.208378321 +0100
+++ iotop-0.6/iotop/ui.py 2022-02-15 21:52:54.607013860 +0100
@@ -489,7 +489,7 @@ class IOTopUI(object):
title = title[:remaining_cols]
remaining_cols -= len(title)
self.win.addstr(title, attr)
- if self.has_swapin_io:
+ if self.has_swapin_io is not False:
status_msg = None
else:
status_msg = ('CONFIG_TASK_DELAY_ACCT '

View File

@ -0,0 +1,63 @@
diff -up iotop-0.6/iotop/ui.py.git9c49d59 iotop-0.6/iotop/ui.py
--- iotop-0.6/iotop/ui.py.git9c49d59 2022-02-15 21:35:33.983889767 +0100
+++ iotop-0.6/iotop/ui.py 2022-02-15 21:39:22.508839448 +0100
@@ -184,6 +184,12 @@ class IOTopUI(object):
self.sorting_key += delta
self.sorting_key = max(0, self.sorting_key)
self.sorting_key = min(len(IOTopUI.sorting_keys) - 1, self.sorting_key)
+ if not self.has_swapin_io:
+ if self.sorting_key in (5, 6):
+ if delta <= 0:
+ self.sorting_key = 4
+ elif delta > 0:
+ self.sorting_key = 7
if orig_sorting_key != self.sorting_key:
self.sorting_reverse = IOTopUI.sorting_keys[self.sorting_key][1]
@@ -377,14 +383,22 @@ class IOTopUI(object):
def format(p):
stats = format_stats(self.options, p, self.process_list.duration)
io_delay, swapin_delay, read_bytes, write_bytes = stats
+ format = '%%%dd' % MAX_PID_WIDTH
+ params = p.pid,
+ format += ' %4s'
+ params += p.get_ioprio(),
+ format += ' %-8s'
+ params += p.get_user()[:8],
+ format += ' %11s %11s'
+ params += read_bytes, write_bytes
if self.has_swapin_io:
- delay_stats = '%7s %7s ' % (swapin_delay, io_delay)
- else:
- delay_stats = ' ?unavailable? '
- pid_format = '%%%dd' % MAX_PID_WIDTH
- line = (pid_format + ' %4s %-8s %11s %11s %s') % (
- p.pid, p.get_ioprio(), p.get_user()[:8], read_bytes,
- write_bytes, delay_stats)
+ format += ' %7s %7s'
+ params += swapin_delay, io_delay
+ elif self.options.batch:
+ format += ' %s '
+ params += '?unavailable?',
+ format += ' '
+ line = format % (params)
cmdline = p.get_cmdline()
if not self.options.batch:
remaining_length = self.width - len(line)
@@ -439,6 +453,7 @@ class IOTopUI(object):
# and iotop then uses the sysctl value instead.
if sysctl_task_delayacct() == False:
self.has_swapin_io = False
+ self.adjust_sorting_key(0)
lines = self.get_data()
if self.options.time:
titles = [' TIME'] + titles
@@ -462,6 +477,8 @@ class IOTopUI(object):
self.width)
remaining_cols = self.width
for i in range(len(titles)):
+ if not self.has_swapin_io and i in (5, 6):
+ continue
attr = curses.A_REVERSE
title = titles[i]
if i == self.sorting_key:

View File

@ -0,0 +1,60 @@
diff -up iotop-0.6/iotop/data.py.gitab35334d iotop-0.6/iotop/data.py
--- iotop-0.6/iotop/data.py.gitab35334d 2022-02-15 21:51:20.828263067 +0100
+++ iotop-0.6/iotop/data.py 2022-02-15 21:51:20.830263041 +0100
@@ -453,3 +453,11 @@ class ProcessList(DumpableObject):
def clear(self):
self.processes = {}
+
+
+def sysctl_task_delayacct():
+ try:
+ with open('/proc/sys/kernel/task_delayacct') as f:
+ return bool(int(f.read().strip()))
+ except FileNotFoundError:
+ return None
diff -up iotop-0.6/iotop/ui.py.gitab35334d iotop-0.6/iotop/ui.py
--- iotop-0.6/iotop/ui.py.gitab35334d 2022-02-15 21:51:20.828263067 +0100
+++ iotop-0.6/iotop/ui.py 2022-02-15 21:51:56.415788740 +0100
@@ -30,7 +30,7 @@ import signal
import sys
import time
-from iotop.data import find_uids, TaskStatsNetlink, ProcessList, Stats
+from iotop.data import find_uids, TaskStatsNetlink, ProcessList, Stats, sysctl_task_delayacct
from iotop.data import ThreadInfo
from iotop.version import VERSION
from iotop import ioprio
@@ -377,7 +377,7 @@ class IOTopUI(object):
def format(p):
stats = format_stats(self.options, p, self.process_list.duration)
io_delay, swapin_delay, read_bytes, write_bytes = stats
- if Stats.has_blkio_delay_total:
+ if self.has_swapin_io:
delay_stats = '%7s %7s ' % (swapin_delay, io_delay)
else:
delay_stats = ' ?unavailable? '
@@ -431,6 +431,14 @@ class IOTopUI(object):
pid += 'TID'
titles = [pid, ' PRIO', ' USER', ' DISK READ', ' DISK WRITE',
' SWAPIN', ' IO', ' COMMAND']
+ self.has_swapin_io = Stats.has_blkio_delay_total
+ if self.has_swapin_io:
+ # Linux kernels without the sysctl return None and
+ # iotop just uses the heuristic for those versions.
+ # Linux kernels with the sysctl return True or False
+ # and iotop then uses the sysctl value instead.
+ if sysctl_task_delayacct() == False:
+ self.has_swapin_io = False
lines = self.get_data()
if self.options.time:
titles = [' TIME'] + titles
@@ -464,7 +472,7 @@ class IOTopUI(object):
title = title[:remaining_cols]
remaining_cols -= len(title)
self.win.addstr(title, attr)
- if Stats.has_blkio_delay_total:
+ if self.has_swapin_io:
status_msg = None
else:
status_msg = ('CONFIG_TASK_DELAY_ACCT '

View File

@ -0,0 +1,52 @@
diff -up iotop-0.6/iotop.8.gitdd4fcc71 iotop-0.6/iotop.8
--- iotop-0.6/iotop.8.gitdd4fcc71 2013-05-27 00:44:18.000000000 +0200
+++ iotop-0.6/iotop.8 2022-02-15 21:48:24.738610077 +0100
@@ -10,7 +10,8 @@ iotop watches I/O usage information outp
2.6.20 or later) and displays a table of current I/O usage by processes
or threads on the system. At least the CONFIG_TASK_DELAY_ACCT,
CONFIG_TASK_IO_ACCOUNTING, CONFIG_TASKSTATS and CONFIG_VM_EVENT_COUNTERS
-options need to be enabled in your Linux kernel build configuration.
+options need to be enabled in your Linux kernel build configuration and
+since Linux kernel 5.14, the kernel.task_delayacct sysctl enabled.
.PP
iotop displays columns for the I/O bandwidth read and written by each
process/thread during the sampling period. It also displays the percentage
diff -up iotop-0.6/iotop/data.py.gitdd4fcc71 iotop-0.6/iotop/data.py
--- iotop-0.6/iotop/data.py.gitdd4fcc71 2013-05-27 00:44:18.000000000 +0200
+++ iotop-0.6/iotop/data.py 2022-02-15 21:48:24.738610077 +0100
@@ -49,7 +49,7 @@ if not ioaccounting or not vm_event_coun
if not ioaccounting:
print(' - I/O accounting support ' \
'(CONFIG_TASKSTATS, CONFIG_TASK_DELAY_ACCT, ' \
- 'CONFIG_TASK_IO_ACCOUNTING)')
+ 'CONFIG_TASK_IO_ACCOUNTING, kernel.task_delayacct sysctl)')
if not vm_event_counters:
print(' - VM event counters (CONFIG_VM_EVENT_COUNTERS)')
sys.exit(1)
diff -up iotop-0.6/iotop/ui.py.gitdd4fcc71 iotop-0.6/iotop/ui.py
--- iotop-0.6/iotop/ui.py.gitdd4fcc71 2022-02-15 21:48:24.738610077 +0100
+++ iotop-0.6/iotop/ui.py 2022-02-15 21:50:55.382602220 +0100
@@ -467,7 +467,9 @@ class IOTopUI(object):
if Stats.has_blkio_delay_total:
status_msg = None
else:
- status_msg = ('CONFIG_TASK_DELAY_ACCT not enabled in kernel, '
+ status_msg = ('CONFIG_TASK_DELAY_ACCT '
+ 'and kernel.task_delayacct sysctl '
+ 'not enabled in kernel, '
'cannot determine SWAPIN and IO %')
num_lines = min(len(lines), self.height - 2 - int(bool(status_msg)))
for i in range(num_lines):
diff -up iotop-0.6/README.gitdd4fcc71 iotop-0.6/README
--- iotop-0.6/README.gitdd4fcc71 2013-05-27 00:44:18.000000000 +0200
+++ iotop-0.6/README 2022-02-15 21:48:24.738610077 +0100
@@ -1,7 +1,8 @@
Iotop is a Python program with a top like UI used to show of behalf of which
process is the I/O going on. It requires Python >= 2.7 and a Linux kernel >=
2.6.20 with the CONFIG_TASK_DELAY_ACCT CONFIG_TASKSTATS,
-CONFIG_TASK_IO_ACCOUNTING and CONFIG_VM_EVENT_COUNTERS options on.
+CONFIG_TASK_IO_ACCOUNTING and CONFIG_VM_EVENT_COUNTERS build options on
+and for Linux kernels since 5.14, the kernel.task_delayacct sysctl enabled.
To run a local version of iotop:

View File

@ -0,0 +1,21 @@
diff -up iotop-0.6/iotop/ui.py.noendcurses iotop-0.6/iotop/ui.py
--- iotop-0.6/iotop/ui.py.noendcurses 2014-12-03 17:50:38.941430261 +0100
+++ iotop-0.6/iotop/ui.py 2014-12-03 17:51:40.108064465 +0100
@@ -520,6 +525,17 @@ Please do not file bugs on iotop about t
sys.exit(1)
else:
raise
+ except curses.error as e:
+ stre = str(e)
+ if stre.find('ERR')>=0 and (
+ stre.find('nocbreak()')>=0 or stre.find('endwin()')>=0
+ ):
+ pass
+ # endwin and nocbreak can cause error (and raise hard to catch
+ # exception) if iotop was running in the terminal and that
+ # terminal got closed while iotop was still running
+ else:
+ raise
#
# Profiling

9
iotop-0.6-python3.patch Normal file
View File

@ -0,0 +1,9 @@
diff -ru iotop-0.6.orign/sbin/iotop iotop-0.6/sbin/iotop
--- iotop-0.6.orign/sbin/iotop 2013-05-27 00:44:18.000000000 +0200
+++ iotop-0.6/sbin/iotop 2015-11-15 22:47:24.468058681 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
# iotop: Display I/O usage of processes in a top like UI
# Copyright (c) 2007, 2008 Guillaume Chazarain <guichaz@gmail.com>, GPLv2
# See iotop --help for some help

32
iotop-python3build.patch Normal file
View File

@ -0,0 +1,32 @@
From 99c8d7cedce81f17b851954d94bfa73787300599 Mon Sep 17 00:00:00 2001
From: Christophe Vu-Brugier <cvubrugier@fastmail.fm>
Date: Fri, 17 Oct 2014 13:49:31 +0200
Subject: [PATCH] Fix build error with Python 3 caused by itervalues() in
setup.py
The itervalues() method is not available in Python 3. As a
consequence, this patch replaces the call to itervalues() in setup.py
with a call to values() which works on both Python 2 and Python 3.
Signed-off-by: Christophe Vu-Brugier <cvubrugier@fastmail.fm>
Signed-off-by: Paul Wise <pabs3@bonedaddy.net>
---
setup.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/setup.py b/setup.py
index 7150102..9de6068 100755
--- a/setup.py
+++ b/setup.py
@@ -7,7 +7,7 @@ from iotop.version import VERSION
# Dirty hack to make setup.py install the iotop script to sbin/ instead of bin/
# while still honoring the choice of installing into local/ or not.
if hasattr(distutils_install, 'INSTALL_SCHEMES'):
- for d in distutils_install.INSTALL_SCHEMES.itervalues():
+ for d in distutils_install.INSTALL_SCHEMES.values():
if d.get('scripts', '').endswith('/bin'):
d['scripts'] = d['scripts'][:-len('/bin')] + '/sbin'
--
2.4.10.GIT

180
iotop.spec Normal file
View File

@ -0,0 +1,180 @@
Name: iotop
Version: 0.6
Release: 17%{?dist}
Summary: Top like utility for I/O
License: GPLv2+
URL: http://guichaz.free.fr/iotop/
Source0: http://guichaz.free.fr/iotop/files/%{name}-%{version}.tar.bz2
# rhbz#1035503
Patch0: iotop-0.6-noendcurses.patch
Patch1: iotop-0.6-python3.patch
# Fix build error with Python 3 caused by itervalues() in setup.py
# http://repo.or.cz/iotop.git/commit/99c8d7cedce81f17b851954d94bfa73787300599
Patch2: iotop-python3build.patch
# sent upstream, iotop <= 0.6, rhbz#1285088
Patch3: iotop-0.3.2-batchprintutf8.patch
# 3x from upstream, iotop <= 0.6, prerequisities for rhbz#1679201
Patch4: iotop-0.6-gitdd4fcc71.patch
Patch5: iotop-0.6-gitab35334d.patch
Patch6: iotop-0.6-git9c49d59.patch
# rhbz#1679201
Patch7: iotop-0.6-delayacctmsg.patch
BuildArch: noarch
BuildRequires: python3-devel
%description
Linux has always been able to show how much I/O was going on
(the bi and bo columns of the vmstat 1 command).
iotop is a Python program with a top like UI used to
show of behalf of which process is the I/O going on.
%prep
%setup -n %{name}-%{version}
%patch0 -p1 -b .noendcurses
%patch1 -p1 -b .python3
%patch2 -p1
%patch3 -p1 -b .batchprintutf8
%patch4 -p1 -b .gitdd4fcc71
%patch5 -p1 -b .gitab35334d
%patch6 -p1 -b .git9c49d59
%patch7 -p1 -b .delayacctmsg
%build
%py3_build
%install
%py3_install
%files -n %{name}
%doc NEWS THANKS README ChangeLog
%license COPYING
%{python3_sitelib}/*
%{_sbindir}/iotop
%{_mandir}/man8/iotop.*
%changelog
* Mon Feb 14 2022 Michal Hlavinka <mhlavink@redhat.com> - 0.6-17
- do not show DELAY_ACCT error for non-existent pids(#1679201)
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.6-16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6-15
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.6-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Mon Dec 19 2016 Miro Hrončok <mhroncok@redhat.com> - 0.6-13
- Rebuild for Python 3.6
* Mon Nov 14 2016 Michal Hlavinka <mhlavink@redhat.com> - 0.6-12
- fix printing unicode strings in batch mode (#1285088)
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6-11
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
* Mon Feb 29 2016 Charalampos Stratakis <cstratak@redhat.com> - 0.6-10
- SPEC file cleanup
- Added licence tag
- Removal of old and unneeded macros
- Use of newest python macros
- Removed Python 2 dependency
- Added patch for Python 3 build
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.6-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Sun Nov 15 2015 Adel Gadllah <adel.gadllah@gmail.com> - 0.6-8
- Fix python3 patch
* Sun Nov 15 2015 Adel Gadllah <adel.gadllah@gmail.com> - 0.6-7
- Rebuilt with python3 - RH#1282262
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Fri Jan 30 2015 Michal Hlavinka <mhlavink@redhat.com> - 0.6-5
- always ignore nocbreak errors, there is way too many false positives (#1035503)
* Wed Dec 03 2014 Michal Hlavinka <mhlavink@redhat.com> - 0.6-4
- ignore curses failures during termination (#1035503)
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.6-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Wed May 29 2013 Michal Hlavinka <mhlavink@redhat.com> - 0.6-1
- iotop updated to 0.6
* Tue Feb 05 2013 Michal Hlavinka <mhlavink@redhat.com> - 0.5-1
- iotop updated to 0.5
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Wed Nov 16 2011 Michal Hlavinka <mhlavink@redhat.com> - 0.4.4-1
- iotop updated to 0.4.4
* Fri Oct 14 2011 Michal Hlavinka <mhlavink@redhat.com> 0.4.3-3
- fix typo in last patch
* Thu Oct 13 2011 Michal Hlavinka <mhlavink@redhat.com> 0.4.3-2
- after CVE-2011-2494 fix, iotop needs root privileges
* Sun Sep 18 2011 Adel Gadllah <adel.gadllah@gmail.com> 0.4.3-1
- New upstream version
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Wed Jul 21 2010 David Malcolm <dmalcolm@redhat.com> - 0.4-2
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
* Tue Jan 12 2010 Adel Gadllah <adel.gadllah@gmail.com> 0.4-1
- New upstream version
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.3-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Tue May 19 2009 Adel Gadllah <adel.gadllah@gmail.com> 0.3-1
- New upstream version
- fixes RH #475917
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.2.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Sat Nov 29 2008 Ignacio Vazquez-Abrams <ivazqueznet+rpm@gmail.com> - 0.2.1-2
- Rebuild for Python 2.6
* Wed Jul 09 2008 Adel Gadllah <adel.gadllah@gmail.com> 0.2.1-1
- Update to 0.2.1
* Mon Jul 07 2008 Adel Gadllah <adel.gadllah@gmail.com> 0.2-2
- New upstream tarball..
* Mon May 26 2008 Adel Gadllah <adel.gadllah@gmail.com> 0.2-1
- Update to new upstream version
* Fri Dec 28 2007 Adel Gadllah <adel.gadllah@gmail.com> 0.1-3
- Fix build issue
* Fri Dec 28 2007 Adel Gadllah <adel.gadllah@gmail.com> 0.1-2
- Fix traceback on xterm-color RH #400071
* Sat Nov 3 2007 Adel Gadllah <adel.gadllah@gmail.com> 0.1-1
- Fix version
* Sat Nov 3 2007 Adel Gadllah <adel.gadllah@gmail.com> 20070930-1
- Initial Build

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (iotop-0.6.tar.bz2) = b1047da3bc46604447cc8ab22442a3a5381e1a79a6b176fe9ee8402ee5cebb959205407a6aeaffccccde9d2f67624ff8ee6717b051838f13ab88bf3a16db3ab9