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 |