1 |
Author: zmedico |
2 |
Date: 2008-07-30 04:57:34 +0000 (Wed, 30 Jul 2008) |
3 |
New Revision: 11278 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
When checking for news items in --pretend mode, pass update=False into |
9 |
the NewsManager.getUnreadItems() call. Emerge shouldn't have to update |
10 |
anything anyway when in --pretend mode, and this helps to avoid potential |
11 |
permission problems. In order to pass the relevant information about |
12 |
options (--pretend state) to the new code, supporting function parameters |
13 |
have been added to display_news_notification(), post_emerge(), and |
14 |
checkUpdatedNewsItems(). |
15 |
|
16 |
|
17 |
Modified: main/trunk/pym/_emerge/__init__.py |
18 |
=================================================================== |
19 |
--- main/trunk/pym/_emerge/__init__.py 2008-07-30 03:33:46 UTC (rev 11277) |
20 |
+++ main/trunk/pym/_emerge/__init__.py 2008-07-30 04:57:34 UTC (rev 11278) |
21 |
@@ -10628,20 +10628,20 @@ |
22 |
print " "+green("*")+" Processed",icount,"info files." |
23 |
|
24 |
|
25 |
-def display_news_notification(trees): |
26 |
- for target_root in trees: |
27 |
- if len(trees) > 1 and target_root != "/": |
28 |
- break |
29 |
- settings = trees[target_root]["vartree"].settings |
30 |
- portdb = trees[target_root]["porttree"].dbapi |
31 |
- vardb = trees[target_root]["vartree"].dbapi |
32 |
+def display_news_notification(root_config, myopts): |
33 |
+ target_root = root_config.root |
34 |
+ trees = root_config.trees |
35 |
+ settings = trees["vartree"].settings |
36 |
+ portdb = trees["porttree"].dbapi |
37 |
+ vardb = trees["vartree"].dbapi |
38 |
NEWS_PATH = os.path.join("metadata", "news") |
39 |
UNREAD_PATH = os.path.join(target_root, NEWS_LIB_PATH, "news") |
40 |
newsReaderDisplay = False |
41 |
+ update = "--pretend" not in myopts |
42 |
|
43 |
for repo in portdb.getRepositories(): |
44 |
unreadItems = checkUpdatedNewsItems( |
45 |
- portdb, vardb, NEWS_PATH, UNREAD_PATH, repo) |
46 |
+ portdb, vardb, NEWS_PATH, UNREAD_PATH, repo, update=update) |
47 |
if unreadItems: |
48 |
if not newsReaderDisplay: |
49 |
newsReaderDisplay = True |
50 |
@@ -10672,7 +10672,7 @@ |
51 |
mod_echo.finalize() |
52 |
return messages_shown |
53 |
|
54 |
-def post_emerge(trees, mtimedb, retval): |
55 |
+def post_emerge(root_config, myopts, mtimedb, retval): |
56 |
""" |
57 |
Misc. things to run at the end of a merge session. |
58 |
|
59 |
@@ -10693,9 +10693,9 @@ |
60 |
@returns: |
61 |
1. Calls sys.exit(retval) |
62 |
""" |
63 |
- for target_root in trees: |
64 |
- if len(trees) > 1 and target_root != "/": |
65 |
- break |
66 |
+ |
67 |
+ target_root = root_config.root |
68 |
+ trees = { target_root : root_config.trees } |
69 |
vardbapi = trees[target_root]["vartree"].dbapi |
70 |
settings = vardbapi.settings |
71 |
info_mtimes = mtimedb["info"] |
72 |
@@ -10738,7 +10738,7 @@ |
73 |
|
74 |
chk_updated_cfg_files(target_root, config_protect) |
75 |
|
76 |
- display_news_notification(trees) |
77 |
+ display_news_notification(root_config, myopts) |
78 |
|
79 |
if vardbapi.plib_registry.hasEntries(): |
80 |
print |
81 |
@@ -10807,7 +10807,8 @@ |
82 |
" section of the " + bold("emerge") |
83 |
print " "+yellow("*")+" man page to learn how to update config files." |
84 |
|
85 |
-def checkUpdatedNewsItems(portdb, vardb, NEWS_PATH, UNREAD_PATH, repo_id): |
86 |
+def checkUpdatedNewsItems(portdb, vardb, NEWS_PATH, UNREAD_PATH, repo_id, |
87 |
+ update=False): |
88 |
""" |
89 |
Examines news items in repodir + '/' + NEWS_PATH and attempts to find unread items |
90 |
Returns the number of unread (yet relevent) items. |
91 |
@@ -10829,7 +10830,7 @@ |
92 |
""" |
93 |
from portage.news import NewsManager |
94 |
manager = NewsManager(portdb, vardb, NEWS_PATH, UNREAD_PATH) |
95 |
- return manager.getUnreadItems( repo_id, update=True ) |
96 |
+ return manager.getUnreadItems( repo_id, update=update ) |
97 |
|
98 |
def insert_category_into_atom(atom, category): |
99 |
alphanum = re.search(r'\w', atom) |
100 |
@@ -11285,6 +11286,7 @@ |
101 |
|
102 |
# Reload the whole config from scratch. |
103 |
settings, trees, mtimedb = load_emerge_config(trees=trees) |
104 |
+ root_config = trees[settings["ROOT"]]["root_config"] |
105 |
portdb = trees[settings["ROOT"]]["porttree"].dbapi |
106 |
|
107 |
if os.path.exists(myportdir+"/metadata/cache") and updatecache_flg: |
108 |
@@ -11318,7 +11320,7 @@ |
109 |
print red(" * ")+"To update portage, run 'emerge portage' now." |
110 |
print |
111 |
|
112 |
- display_news_notification(trees) |
113 |
+ display_news_notification(root_config, myopts) |
114 |
|
115 |
def action_metadata(settings, portdb, myopts): |
116 |
portage.writemsg_stdout("\n>>> Updating Portage cache: ") |
117 |
@@ -12765,7 +12767,8 @@ |
118 |
trees[settings["ROOT"]]["vartree"].dbapi.plib_registry.pruneNonExisting() |
119 |
|
120 |
if merge_count and not (buildpkgonly or fetchonly or pretend): |
121 |
- post_emerge(trees, mtimedb, retval) |
122 |
+ root_config = trees[settings["ROOT"]]["root_config"] |
123 |
+ post_emerge(root_config, myopts, mtimedb, retval) |
124 |
return retval |
125 |
|
126 |
def multiple_actions(action1, action2): |
127 |
@@ -13524,6 +13527,9 @@ |
128 |
sys.stderr.write(("emerge: The '%s' action does " + \ |
129 |
"not support '--pretend'.\n") % myaction) |
130 |
return 1 |
131 |
+ |
132 |
+ root_config = trees[settings["ROOT"]]["root_config"] |
133 |
+ |
134 |
if "sync" == myaction: |
135 |
action_sync(settings, trees, mtimedb, myopts, myaction) |
136 |
elif "metadata" == myaction: |
137 |
@@ -13549,30 +13555,29 @@ |
138 |
elif myaction in ("clean", "unmerge") or \ |
139 |
(myaction == "prune" and "--nodeps" in myopts): |
140 |
validate_ebuild_environment(trees) |
141 |
- root_config = trees[settings["ROOT"]]["root_config"] |
142 |
# When given a list of atoms, unmerge |
143 |
# them in the order given. |
144 |
ordered = myaction == "unmerge" |
145 |
if 1 == unmerge(root_config, myopts, myaction, myfiles, |
146 |
mtimedb["ldpath"], ordered=ordered): |
147 |
if not (buildpkgonly or fetchonly or pretend): |
148 |
- post_emerge(trees, mtimedb, os.EX_OK) |
149 |
+ post_emerge(root_config, myopts, mtimedb, os.EX_OK) |
150 |
|
151 |
elif myaction in ("depclean", "prune"): |
152 |
validate_ebuild_environment(trees) |
153 |
action_depclean(settings, trees, mtimedb["ldpath"], |
154 |
myopts, myaction, myfiles, spinner) |
155 |
if not (buildpkgonly or fetchonly or pretend): |
156 |
- post_emerge(trees, mtimedb, os.EX_OK) |
157 |
+ post_emerge(root_config, myopts, mtimedb, os.EX_OK) |
158 |
# "update", "system", or just process files: |
159 |
else: |
160 |
validate_ebuild_environment(trees) |
161 |
if "--pretend" not in myopts: |
162 |
- display_news_notification(trees) |
163 |
+ display_news_notification(root_config, myopts) |
164 |
retval = action_build(settings, trees, mtimedb, |
165 |
myopts, myaction, myfiles, spinner) |
166 |
# if --pretend was not enabled then display_news_notification |
167 |
# was already called by post_emerge |
168 |
if "--pretend" in myopts: |
169 |
- display_news_notification(trees) |
170 |
+ display_news_notification(root_config, myopts) |
171 |
return retval |