Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11278 - main/trunk/pym/_emerge
Date: Wed, 30 Jul 2008 04:57:39
Message-Id: E1KO3km-0002jR-Je@stork.gentoo.org
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