This is a cheap fix, while a longer term effort to make this thread safe
can be explored.
---
pyanaconda/ui/gui/spokes/software.py | 4 +++-
pyanaconda/ui/gui/spokes/source.py | 7 ++++++-
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/software.py b/pyanaconda/ui/gui/spokes/software.py
index 231e478..159c4c1 100644
--- a/pyanaconda/ui/gui/spokes/software.py
+++ b/pyanaconda/ui/gui/spokes/software.py
@@ -78,6 +78,7 @@ class SoftwareSelectionSpoke(NormalSpoke):
self.payload.selectGroup(group)
communication.send_not_ready(self.__class__.__name__)
+ communication.send_not_ready("SourceSpoke")
threadMgr.add(AnacondaThread(name="AnaCheckSoftwareThread",
target=self.checkSoftwareSelection))
@@ -97,6 +98,7 @@ class SoftwareSelectionSpoke(NormalSpoke):
self._tx_id = self.payload.txID
finally:
communication.send_ready(self.__class__.__name__)
+ communication.send_ready("SourceSpoke")
@property
def completed(self):
@@ -115,7 +117,7 @@ class SoftwareSelectionSpoke(NormalSpoke):
def ready(self):
# By default, the software selection spoke is not ready. We have to
# wait until the installation source spoke is completed. This could be
- # becasue the user filled something out, or because we're done fetching
+ # because the user filled something out, or because we're done fetching
# repo metadata from the mirror list, or we detected a DVD/CD.
from pyanaconda.threads import threadMgr
return (not threadMgr.get("AnaSoftwareWatcher") and
diff --git a/pyanaconda/ui/gui/spokes/source.py b/pyanaconda/ui/gui/spokes/source.py
index 6fa7e8e..a88f6ce 100644
--- a/pyanaconda/ui/gui/spokes/source.py
+++ b/pyanaconda/ui/gui/spokes/source.py
@@ -549,10 +549,15 @@ class SourceSpoke(NormalSpoke):
# By default, the source spoke is not ready. We have to wait until
# storageInitialize is done to know whether or not there's local
# devices potentially holding install media.
- return (self._ready and not threadMgr.get("AnaPayloadMDThread"))
+ log.info('source spoke ready: %s' % self._ready)
+ return (self._ready and not threadMgr.get("AnaPayloadMDThread") and
+ not threadMgr.get("AnaCheckSoftwareThread"))
@property
def status(self):
+ from pyanaconda.threads import threadMgr
+ if threadMgr.get("AnaCheckSoftwareThread"):
+ return _("Checking software dependencies...")
if not self.ready:
return _("Not ready")
if self.data.method.method == "url":
--
1.7.11.4