Add a hotfix for Fedora 27 beta
- Fix catch TUI not main thread exceptions (jkonecny)
This commit is contained in:
parent
bb6d29cae3
commit
8f9999d1c6
|
@ -0,0 +1,176 @@
|
|||
From 9271503c339b08b4cdb45e048bf73b75f6255752 Mon Sep 17 00:00:00 2001
|
||||
From: Jiri Konecny <jkonecny@redhat.com>
|
||||
Date: Fri, 1 Sep 2017 13:14:56 +0200
|
||||
Subject: [PATCH] Fix catch TUI not main thread exceptions
|
||||
|
||||
Exception which are not in a main thread was passed to the hubQ which is
|
||||
not used anymore in Simpleline. To resolve this issue, exceptions are
|
||||
now enqueued as ExceptionSignal.
|
||||
---
|
||||
anaconda.spec.in | 2 +-
|
||||
pyanaconda/exception.py | 55 +++++++++++++++++++++++++++------------
|
||||
pyanaconda/ui/tui/hubs/summary.py | 2 +-
|
||||
3 files changed, 40 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/anaconda.spec.in b/anaconda.spec.in
|
||||
index 8d2048f95..9690c32a5 100644
|
||||
--- a/anaconda.spec.in
|
||||
+++ b/anaconda.spec.in
|
||||
@@ -40,7 +40,7 @@ Source0: %{name}-%{version}.tar.bz2
|
||||
%define pykickstartver 2.36-1
|
||||
%define pypartedver 2.5-2
|
||||
%define rpmver 4.10.0
|
||||
-%define simplelinever 0.4-1
|
||||
+%define simplelinever 0.5-1
|
||||
%define utillinuxver 2.15.1
|
||||
|
||||
BuildRequires: audit-libs-devel
|
||||
diff --git a/pyanaconda/exception.py b/pyanaconda/exception.py
|
||||
index cf1f0b762..212ee7414 100644
|
||||
--- a/pyanaconda/exception.py
|
||||
+++ b/pyanaconda/exception.py
|
||||
@@ -17,28 +17,34 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
-from meh import Config
|
||||
-from meh.handler import ExceptionHandler
|
||||
-from meh.dump import ReverseExceptionDump
|
||||
-from pyanaconda import iutil, kickstart
|
||||
-import sys
|
||||
+import errno
|
||||
+import glob
|
||||
+import gi
|
||||
import os
|
||||
+import re
|
||||
import shutil
|
||||
+import sys
|
||||
import time
|
||||
-import re
|
||||
-import errno
|
||||
-import glob
|
||||
import traceback
|
||||
+
|
||||
import blivet.errors
|
||||
-from pyanaconda.errors import NonInteractiveError
|
||||
-from pyanaconda.ui.communication import hubQ
|
||||
-from pyanaconda.constants import THREAD_EXCEPTION_HANDLING_TEST, IPMI_FAILED
|
||||
-from pyanaconda.threading import threadMgr
|
||||
-from pyanaconda.i18n import _
|
||||
+
|
||||
+from meh import Config
|
||||
+from meh.dump import ReverseExceptionDump
|
||||
+from meh.handler import ExceptionHandler
|
||||
+
|
||||
from pyanaconda import flags
|
||||
+from pyanaconda import iutil, kickstart
|
||||
from pyanaconda import startup_utils
|
||||
+from pyanaconda.constants import THREAD_EXCEPTION_HANDLING_TEST, IPMI_FAILED
|
||||
+from pyanaconda.errors import NonInteractiveError
|
||||
+from pyanaconda.i18n import _
|
||||
+from pyanaconda.threading import threadMgr
|
||||
+from pyanaconda.ui.communication import hubQ
|
||||
+
|
||||
+from simpleline import App
|
||||
+from simpleline.event_loop.signals import ExceptionSignal
|
||||
|
||||
-import gi
|
||||
gi.require_version("GLib", "2.0")
|
||||
|
||||
from gi.repository import GLib
|
||||
@@ -46,6 +52,7 @@ from gi.repository import GLib
|
||||
from pyanaconda.anaconda_loggers import get_module_logger
|
||||
log = get_module_logger(__name__)
|
||||
|
||||
+
|
||||
class AnacondaReverseExceptionDump(ReverseExceptionDump):
|
||||
|
||||
@property
|
||||
@@ -70,6 +77,7 @@ class AnacondaReverseExceptionDump(ReverseExceptionDump):
|
||||
else:
|
||||
return ""
|
||||
|
||||
+
|
||||
class AnacondaExceptionHandler(ExceptionHandler):
|
||||
|
||||
def __init__(self, confObj, intfClass, exnClass, tty_num, gui_lock, interactive):
|
||||
@@ -190,9 +198,16 @@ class AnacondaExceptionHandler(ExceptionHandler):
|
||||
# data and let message handler run the exception handler in
|
||||
# the main thread
|
||||
exc_info = dump_info.exc_info
|
||||
- hubQ.send_exception((exc_info.type,
|
||||
- exc_info.value,
|
||||
- exc_info.stack))
|
||||
+ # new Simpleline package is now used in TUI. Look if Simpleline is
|
||||
+ # initialized or if this is some fallback from GTK or other stuff.
|
||||
+ if App.is_initialized():
|
||||
+ # if Simpleline is initialized enqueue exception there
|
||||
+ loop = App.get_event_loop()
|
||||
+ loop.enqueue_signal(ExceptionSignal(App.get_scheduler(), exception_info=exc_info))
|
||||
+ else:
|
||||
+ hubQ.send_exception((exc_info.type,
|
||||
+ exc_info.value,
|
||||
+ exc_info.stack))
|
||||
|
||||
def postWriteHook(self, dump_info):
|
||||
anaconda = dump_info.object
|
||||
@@ -243,6 +258,7 @@ class AnacondaExceptionHandler(ExceptionHandler):
|
||||
and self._intf_tty_num != 1:
|
||||
iutil.vtActivate(self._intf_tty_num)
|
||||
|
||||
+
|
||||
def initExceptionHandling(anaconda):
|
||||
file_list = ["/tmp/anaconda.log", "/tmp/packaging.log",
|
||||
"/tmp/program.log", "/tmp/storage.log", "/tmp/ifcfg.log",
|
||||
@@ -298,16 +314,19 @@ def initExceptionHandling(anaconda):
|
||||
|
||||
return conf
|
||||
|
||||
+
|
||||
def lsblk_callback():
|
||||
"""Callback to get info about block devices."""
|
||||
|
||||
return iutil.execWithCapture("lsblk", ["--perms", "--fs", "--bytes"])
|
||||
|
||||
+
|
||||
def nmcli_dev_list_callback():
|
||||
"""Callback to get info about network devices."""
|
||||
|
||||
return iutil.execWithCapture("nmcli", ["device", "show"])
|
||||
|
||||
+
|
||||
def journalctl_callback():
|
||||
"""Callback to get logs from journalctl."""
|
||||
|
||||
@@ -322,6 +341,7 @@ def journalctl_callback():
|
||||
|
||||
return ret
|
||||
|
||||
+
|
||||
def list_addons_callback():
|
||||
"""
|
||||
Callback to get info about the addons potentially affecting Anaconda's
|
||||
@@ -333,6 +353,7 @@ def list_addons_callback():
|
||||
addon_pkgs = glob.glob("/usr/share/anaconda/addons/*")
|
||||
return ", ".join(addon.rsplit("/", 1)[1] for addon in addon_pkgs)
|
||||
|
||||
+
|
||||
def test_exception_handling():
|
||||
"""
|
||||
Function that can be used for testing exception handling in anaconda. It
|
||||
diff --git a/pyanaconda/ui/tui/hubs/summary.py b/pyanaconda/ui/tui/hubs/summary.py
|
||||
index 65459e043..1d8036439 100644
|
||||
--- a/pyanaconda/ui/tui/hubs/summary.py
|
||||
+++ b/pyanaconda/ui/tui/hubs/summary.py
|
||||
@@ -61,7 +61,7 @@ class SummaryHub(TUIHub):
|
||||
sys.stdout.flush()
|
||||
spokes = self._spokes.values()
|
||||
while not all(spoke.ready for spoke in spokes):
|
||||
- # Catch any asyncronous events (like storage crashing)
|
||||
+ # Catch any asynchronous events (like storage crashing)
|
||||
loop = App.get_event_loop()
|
||||
loop.process_signals()
|
||||
sys.stdout.write('.')
|
||||
--
|
||||
2.13.5
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
Summary: Graphical system installer
|
||||
Name: anaconda
|
||||
Version: 27.20.1
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
License: GPLv2+ and MIT
|
||||
Group: Applications/System
|
||||
URL: http://fedoraproject.org/wiki/Anaconda
|
||||
|
@ -15,6 +15,9 @@ URL: http://fedoraproject.org/wiki/Anaconda
|
|||
# make dist
|
||||
Source0: %{name}-%{version}.tar.bz2
|
||||
|
||||
# Fix catch TUI not main thread exceptions (Fedora 27 Beta hotfix)
|
||||
Patch0: 0001-Fix-catch-TUI-not-main-thread-exceptions.patch
|
||||
|
||||
# Versions of required components (done so we make sure the buildrequires
|
||||
# match the requires versions of things).
|
||||
|
||||
|
@ -40,7 +43,7 @@ Source0: %{name}-%{version}.tar.bz2
|
|||
%define pykickstartver 2.36-1
|
||||
%define pypartedver 2.5-2
|
||||
%define rpmver 4.10.0
|
||||
%define simplelinever 0.4-1
|
||||
%define simplelinever 0.5-1
|
||||
%define utillinuxver 2.15.1
|
||||
|
||||
BuildRequires: audit-libs-devel
|
||||
|
@ -239,6 +242,7 @@ runtime on NFS/HTTP/FTP servers or local disks.
|
|||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
|
||||
%build
|
||||
%configure
|
||||
|
@ -332,6 +336,9 @@ update-desktop-database &> /dev/null || :
|
|||
%{_prefix}/libexec/anaconda/dd_*
|
||||
|
||||
%changelog
|
||||
* Mon Sep 04 2017 Martin Kolman <mkolman@redhat.com> - 27.20.1-2
|
||||
- Fix catch TUI not main thread exceptions (jkonecny)
|
||||
|
||||
* Tue Aug 29 2017 Martin Kolman <mkolman@redhat.com> - 27.20.1-1
|
||||
- Remove the metacity theme. (vponcova)
|
||||
- Add the option inst.decorated to allow title bar in GUI (vponcova)
|
||||
|
|
Loading…
Reference in New Issue