commit:     b2e192049456a172a1a24e0f9b2bc65b50c284f5
Author:     Alexander Berntsen <bernalex <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 22 11:48:57 2014 +0000
Commit:     Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Wed Sep 24 22:35:45 2014 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=b2e19204

Offer to read news while calcing deps (bug 517310)

Signed-off-by: Alexander Berntsen <bernalex <AT> gentoo.org>

---
 pym/_emerge/actions.py     | 17 +++++++++++++++--
 pym/_emerge/post_emerge.py |  5 ++++-
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index fa04e10..9036810 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -4061,8 +4061,21 @@ def run_action(emerge_config):
 
                # GLEP 42 says to display news *after* an emerge --pretend
                if "--pretend" not in emerge_config.opts:
-                       display_news_notification(
-                               emerge_config.target_config, emerge_config.opts)
+                       uq = UserQuery(emerge_config.opts)
+                       if 
display_news_notification(emerge_config.target_config,
+                                                               
emerge_config.opts) \
+                               and "--ask" in emerge_config.opts \
+                               and uq.query("Would you like to read the news 
items while " \
+                                               "calculating dependencies?",
+                                               '--ask-enter-invalid' in 
emerge_config.opts) == "Yes":
+                               try:
+                                       subprocess.call(['eselect', 'news', 
'read'])
+                               # If eselect is not installed, Python <3.3 will 
throw an
+                               # OSError. >=3.3 will throw a 
FileNotFoundError, which is a
+                               # subclass of OSError.
+                               except OSError:
+                                       writemsg("Please install eselect to use 
this feature.\n",
+                                                       noiselevel=-1)
                retval = action_build(emerge_config.target_config.settings,
                        emerge_config.trees, 
emerge_config.target_config.mtimedb,
                        emerge_config.opts, emerge_config.action,

diff --git a/pym/_emerge/post_emerge.py b/pym/_emerge/post_emerge.py
index d5f1ba5..0cb533c 100644
--- a/pym/_emerge/post_emerge.py
+++ b/pym/_emerge/post_emerge.py
@@ -37,11 +37,14 @@ def clean_logs(settings):
 
 def display_news_notification(root_config, myopts):
        if "news" not in root_config.settings.features:
-               return
+               return False
        portdb = root_config.trees["porttree"].dbapi
        vardb = root_config.trees["vartree"].dbapi
        news_counts = count_unread_news(portdb, vardb)
+       if all(v == 0 for v in news_counts.values()):
+               return False
        display_news_notifications(news_counts)
+       return True
 
 def show_depclean_suggestion():
        out = portage.output.EOutput()

Reply via email to