[iotop] ignore curses failures during termination (#1035503)
Michal Hlavinka
mhlavink at fedoraproject.org
Wed Dec 3 16:53:22 UTC 2014
commit 5033dd8b94456e0201f2f466c1264c6fca116271
Author: Michal Hlavinka <mhlavink at redhat.com>
Date: Wed Dec 3 17:53:24 2014 +0100
ignore curses failures during termination (#1035503)
iotop-0.6-noendcurses.patch | 44 +++++++++++++++++++++++++++++++++++++++++++
iotop.spec | 9 +++++++-
2 files changed, 52 insertions(+), 1 deletions(-)
---
diff --git a/iotop-0.6-noendcurses.patch b/iotop-0.6-noendcurses.patch
new file mode 100644
index 0000000..fb889ef
--- /dev/null
+++ b/iotop-0.6-noendcurses.patch
@@ -0,0 +1,44 @@
+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
+@@ -488,10 +488,14 @@ class IOTopUI(object):
+ self.win.refresh()
+
+ def run_iotop_window(win, options):
++ global terminating
++ terminating = False
+ if options.batch:
+ signal.signal(signal.SIGPIPE, signal.SIG_DFL)
+ else:
+ def clean_exit(*args, **kwargs):
++ global terminating
++ terminating = True
+ sys.exit(0)
+ signal.signal(signal.SIGINT, clean_exit)
+ signal.signal(signal.SIGTERM, clean_exit)
+@@ -499,6 +503,7 @@ def run_iotop_window(win, options):
+ process_list = ProcessList(taskstats_connection, options)
+ ui = IOTopUI(win, process_list, options)
+ ui.run()
++ terminating = True
+
+ def run_iotop(options):
+ try:
+@@ -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 terminating and 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
diff --git a/iotop.spec b/iotop.spec
index 889c2a1..6c58058 100644
--- a/iotop.spec
+++ b/iotop.spec
@@ -1,7 +1,7 @@
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
Name: iotop
Version: 0.6
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Top like utility for I/O
Group: Applications/System
@@ -9,6 +9,9 @@ License: GPLv2+
URL: http://guichaz.free.fr/iotop/
Source0: http://guichaz.free.fr/iotop/files/%{name}-%{version}.tar.bz2
+# rhbz#1035503
+Patch1: iotop-0.6-noendcurses.patch
+
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
@@ -17,6 +20,7 @@ Requires: python
%prep
%setup
+%patch1 -p1 -b .noendcurses
%build
%{__python} setup.py build
@@ -45,6 +49,9 @@ rm -rf $RPM_BUILD_ROOT
%{python_sitelib}/*
%changelog
+* Wed Dec 03 2014 Michal Hlavinka <mhlavink at redhat.com> - 0.6-4
+- ignore curses failures during termination (#1035503)
+
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
More information about the scm-commits
mailing list