Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/
Date: Mon, 05 Sep 2011 00:59:39
Message-Id: 8539b5778f1cea24aab4ff47b1b65516c254de1f.zmedico@gentoo
1 commit: 8539b5778f1cea24aab4ff47b1b65516c254de1f
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Mon Sep 5 00:58:44 2011 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Mon Sep 5 00:58:44 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=8539b577
7
8 Update unread news items in --pretend mode.
9
10 This has been disabled since commit
11 c7faa634369e61b87a40172ceb0a5cb9494fd518, but the only reason cited
12 was to avoid permissions issues. So, go ahead and enable it, and handle
13 PermissionDenied just in case. NOTE: The NewsManager typically handles
14 permission errors by returning silently, so PermissionDenied won't
15 necessarily be raised even if we do trigger a permission error.
16
17 ---
18 pym/_emerge/actions.py | 21 +++++++++++++++++----
19 1 files changed, 17 insertions(+), 4 deletions(-)
20
21 diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
22 index 3477c19..82adca7 100644
23 --- a/pym/_emerge/actions.py
24 +++ b/pym/_emerge/actions.py
25 @@ -30,7 +30,7 @@ from portage.const import _ENABLE_DYN_LINK_MAP, _ENABLE_SET_CONFIG
26 from portage.dbapi.dep_expand import dep_expand
27 from portage.dbapi._expand_new_virt import expand_new_virt
28 from portage.dep import Atom, extended_cp_match
29 -from portage.exception import InvalidAtom
30 +from portage.exception import InvalidAtom, PermissionDenied
31 from portage.output import blue, bold, colorize, create_color_func, darkgreen, \
32 red, yellow
33 good = create_color_func("GOOD")
34 @@ -3049,13 +3049,26 @@ def display_news_notification(root_config, myopts):
35 NEWS_PATH = os.path.join("metadata", "news")
36 UNREAD_PATH = os.path.join(target_root, NEWS_LIB_PATH, "news")
37 newsReaderDisplay = False
38 - update = "--pretend" not in myopts
39 if "news" not in settings.features:
40 return
41
42 + permission_msgs = set()
43 for repo in portdb.getRepositories():
44 - unreadItems = checkUpdatedNewsItems(
45 - portdb, vardb, NEWS_PATH, UNREAD_PATH, repo, update=update)
46 + try:
47 + unreadItems = checkUpdatedNewsItems(
48 + portdb, vardb, NEWS_PATH, UNREAD_PATH, repo, update=True)
49 + except PermissionDenied as e:
50 + # NOTE: The NewsManager typically handles permission errors by
51 + # returning silently, so PermissionDenied won't necessarily be
52 + # raised even if we do trigger a permission error above.
53 + msg = _unicode_decode("Permission denied: '%s'\n") % (e,)
54 + if msg in permission_msgs:
55 + pass
56 + else:
57 + permission_msgs.add(msg)
58 + writemsg_level(msg, level=logging.ERROR, noiselevel=-1)
59 + unreadItems = None
60 +
61 if unreadItems:
62 if not newsReaderDisplay:
63 newsReaderDisplay = True