Gentoo Archives: gentoo-portage-dev

From: Alexander Berntsen <bernalex@g.o>
To: gentoo-portage-dev@l.g.o
Subject: [gentoo-portage-dev] [PATCH] Offer to read news while calcing deps (bug 517310)
Date: Mon, 22 Sep 2014 11:26:14
Message-Id: 1411385161-29127-1-git-send-email-bernalex@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCH] Offer to read news while calcing deps (bug 517310) by Alexander Berntsen
1 Signed-off-by: Alexander Berntsen <bernalex@g.o>
2 ---
3 Add exception in case eselect is not found. Fix output a tiny bit.
4
5 pym/_emerge/actions.py | 17 +++++++++++++++--
6 pym/_emerge/post_emerge.py | 5 ++++-
7 2 files changed, 19 insertions(+), 3 deletions(-)
8
9 diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
10 index b935139..a050b79 100644
11 --- a/pym/_emerge/actions.py
12 +++ b/pym/_emerge/actions.py
13 @@ -4058,8 +4058,21 @@ def run_action(emerge_config):
14
15 # GLEP 42 says to display news *after* an emerge --pretend
16 if "--pretend" not in emerge_config.opts:
17 - display_news_notification(
18 - emerge_config.target_config, emerge_config.opts)
19 + uq = UserQuery(emerge_config.opts)
20 + if display_news_notification(emerge_config.target_config,
21 + emerge_config.opts) \
22 + and "--ask" in emerge_config.opts \
23 + and uq.query("Would you like to read the news items while " \
24 + "calculating dependencies?",
25 + '--ask-enter-invalid' in emerge_config.opts) == "Yes":
26 + try:
27 + subprocess.call(['eselect', 'news', 'read'])
28 + # If eselect is not installed, Python <3.3 will throw an
29 + # OSError. 3.4 will throw a FileNotFoundError, which is an
30 + # subclass of OSError.
31 + except OSError:
32 + writemsg("Please install eselect to use this feature.\n",
33 + noiselevel=-1)
34 retval = action_build(emerge_config.target_config.settings,
35 emerge_config.trees, emerge_config.target_config.mtimedb,
36 emerge_config.opts, emerge_config.action,
37 diff --git a/pym/_emerge/post_emerge.py b/pym/_emerge/post_emerge.py
38 index d5f1ba5..0cb533c 100644
39 --- a/pym/_emerge/post_emerge.py
40 +++ b/pym/_emerge/post_emerge.py
41 @@ -37,11 +37,14 @@ def clean_logs(settings):
42
43 def display_news_notification(root_config, myopts):
44 if "news" not in root_config.settings.features:
45 - return
46 + return False
47 portdb = root_config.trees["porttree"].dbapi
48 vardb = root_config.trees["vartree"].dbapi
49 news_counts = count_unread_news(portdb, vardb)
50 + if all(v == 0 for v in news_counts.values()):
51 + return False
52 display_news_notifications(news_counts)
53 + return True
54
55 def show_depclean_suggestion():
56 out = portage.output.EOutput()
57 --
58 1.8.5.5