Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10911 - main/trunk/pym/_emerge
Date: Thu, 03 Jul 2008 11:17:53
Message-Id: E1KEMoq-0004dx-AL@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-07-03 11:17:43 +0000 (Thu, 03 Jul 2008)
3 New Revision: 10911
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Split logging and world atom code out of Scheduler._execute() task, and
9 trigger it inside EbuildPhase.execute().
10
11
12 Modified: main/trunk/pym/_emerge/__init__.py
13 ===================================================================
14 --- main/trunk/pym/_emerge/__init__.py 2008-07-03 09:30:05 UTC (rev 10910)
15 +++ main/trunk/pym/_emerge/__init__.py 2008-07-03 11:17:43 UTC (rev 10911)
16 @@ -1702,7 +1702,7 @@
17 __slots__ = ("args_set", "find_blockers",
18 "ldpath_mtimes", "logger", "opts",
19 "pkg", "pkg_count", "scheduler",
20 - "settings")
21 + "settings", "world_atom")
22
23 def execute(self):
24
25 @@ -1715,12 +1715,14 @@
26 pkg_count = self.pkg_count
27 scheduler = self.scheduler
28 settings = self.settings
29 + world_atom = self.world_atom
30 root_config = pkg.root_config
31 root = root_config.root
32 system_set = root_config.sets["system"]
33 world_set = root_config.sets["world"]
34 vartree = root_config.trees["vartree"]
35 - portdb = root_config.trees["porttree"].dbapi
36 + tree = "porttree"
37 + portdb = root_config.trees[tree].dbapi
38 debug = settings.get("PORTAGE_DEBUG") == "1"
39 features = self.settings.features
40 settings["EMERGE_FROM"] = pkg.type_name
41 @@ -1784,17 +1786,17 @@
42 (pkg_count.curval, pkg_count.maxval, pkg.cpv)
43 logger.log(msg, short_msg=short_msg)
44
45 - merge = EbuildMerge(
46 - find_blockers=find_blockers,
47 - ldpath_mtimes=ldpath_mtimes,
48 - pkg=pkg, settings=settings)
49 + merge = EbuildMerge(find_blockers=find_blockers,
50 + ldpath_mtimes=ldpath_mtimes, logger=logger, pkg=pkg,
51 + pkg_count=pkg_count, pkg_path=ebuild_path,
52 + settings=settings, tree=tree, world_atom=world_atom)
53 retval = merge.execute()
54 if retval != os.EX_OK:
55 return retval
56 elif "noclean" not in settings.features:
57 portage.doebuild(ebuild_path, "clean", root,
58 settings, debug=debug, mydbapi=portdb,
59 - tree="porttree")
60 + tree=tree)
61 else:
62 msg = " === (%s of %s) Compiling/Merging (%s::%s)" % \
63 (pkg_count.curval, pkg_count.maxval, pkg.cpv, ebuild_path)
64 @@ -1809,10 +1811,10 @@
65 if retval != os.EX_OK:
66 return retval
67
68 - merge = EbuildMerge(
69 - find_blockers=self.find_blockers,
70 - ldpath_mtimes=ldpath_mtimes,
71 - pkg=pkg, settings=settings)
72 + merge = EbuildMerge(find_blockers=self.find_blockers,
73 + ldpath_mtimes=ldpath_mtimes, logger=logger, pkg=pkg,
74 + pkg_count=pkg_count, pkg_path=ebuild_path,
75 + settings=settings, tree=tree, world_atom=world_atom)
76 retval = merge.execute()
77
78 if retval != os.EX_OK:
79 @@ -1831,7 +1833,8 @@
80
81 def execute(self):
82 root_config = self.pkg.root_config
83 - portdb = root_config.trees["porttree"].dbapi
84 + tree = "porttree"
85 + portdb = root_config.trees[tree].dbapi
86 ebuild_path = portdb.findname(self.pkg.cpv)
87 settings = self.settings
88 debug = settings.get("PORTAGE_DEBUG") == "1"
89 @@ -1855,7 +1858,7 @@
90 for mydo in self._phases:
91 ebuild_phase = EbuildPhase(fd_pipes=fd_pipes,
92 pkg=self.pkg, phase=mydo, register=self.register,
93 - settings=settings, unregister=self.unregister)
94 + settings=settings, tree=tree, unregister=self.unregister)
95
96 ebuild_phase.start()
97 retval = None
98 @@ -1871,7 +1874,7 @@
99 class EbuildPhase(SubProcess):
100
101 __slots__ = ("fd_pipes", "phase", "pkg",
102 - "register", "settings", "unregister",
103 + "register", "settings", "tree", "unregister",
104 "files", "registered")
105
106 _file_names = ("log", "stdout", "ebuild")
107 @@ -1880,9 +1883,10 @@
108
109 def start(self):
110 root_config = self.pkg.root_config
111 - portdb = root_config.trees["porttree"].dbapi
112 - ebuild_path = portdb.findname(self.pkg.cpv)
113 + tree = self.tree
114 + mydbapi = root_config.trees[tree].dbapi
115 settings = self.settings
116 + ebuild_path = settings["EBUILD"]
117 debug = settings.get("PORTAGE_DEBUG") == "1"
118 logfile = settings.get("PORTAGE_LOG_FILE")
119 master_fd = None
120 @@ -1943,7 +1947,7 @@
121
122 retval = portage.doebuild(ebuild_path, self.phase,
123 root_config.root, settings, debug,
124 - mydbapi=portdb, tree="porttree",
125 + mydbapi=mydbapi, tree=tree,
126 fd_pipes=fd_pipes, returnpid=True)
127
128 self.pid = retval[0]
129 @@ -2043,17 +2047,12 @@
130
131 return retval
132
133 -class EbuildMerge(Task):
134 +class EbuildMerge(SlotObject):
135
136 - __slots__ = ("find_blockers", "ldpath_mtimes",
137 - "pkg", "pretend", "settings")
138 + __slots__ = ("find_blockers", "logger", "ldpath_mtimes",
139 + "pkg", "pkg_count", "pkg_path", "pretend",
140 + "settings", "tree", "world_atom")
141
142 - def _get_hash_key(self):
143 - hash_key = getattr(self, "_hash_key", None)
144 - if hash_key is None:
145 - self._hash_key = ("EbuildMerge", self.pkg._get_hash_key())
146 - return self._hash_key
147 -
148 def execute(self):
149 root_config = self.pkg.root_config
150 settings = self.settings
151 @@ -2062,12 +2061,32 @@
152 os.path.join(settings["PORTAGE_BUILDDIR"],
153 "build-info"), root_config.root, settings,
154 myebuild=settings["EBUILD"],
155 - mytree="porttree", mydbapi=root_config.trees["porttree"].dbapi,
156 + mytree=self.tree, mydbapi=root_config.trees[self.tree].dbapi,
157 vartree=root_config.trees["vartree"],
158 prev_mtimes=self.ldpath_mtimes,
159 blockers=self.find_blockers)
160 +
161 + if retval == os.EX_OK:
162 + self.world_atom(self.pkg)
163 + self._log_success()
164 +
165 return retval
166
167 + def _log_success(self):
168 + pkg = self.pkg
169 + pkg_count = self.pkg_count
170 + pkg_path = self.pkg_path
171 + logger = self.logger
172 + if "noclean" not in self.settings.features:
173 + short_msg = "emerge: (%s of %s) %s Clean Post" % \
174 + (pkg_count.curval, pkg_count.maxval, pkg.cpv)
175 + logger.log((" === (%s of %s) " + \
176 + "Post-Build Cleaning (%s::%s)") % \
177 + (pkg_count.curval, pkg_count.maxval, pkg.cpv, pkg_path),
178 + short_msg=short_msg)
179 + logger.log(" ::: completed emerge (%s of %s) %s to %s" % \
180 + (pkg_count.curval, pkg_count.maxval, pkg.cpv, pkg.root))
181 +
182 class PackageUninstall(Task):
183
184 __slots__ = ("ldpath_mtimes", "opts", "pkg", "settings")
185 @@ -2092,7 +2111,7 @@
186 __slots__ = ("find_blockers",
187 "ldpath_mtimes", "logger", "opts",
188 "pkg", "pkg_count", "prefetcher", "scheduler",
189 - "settings")
190 + "settings", "world_atom")
191
192 def execute(self):
193
194 @@ -2104,6 +2123,8 @@
195 pkg_count = self.pkg_count
196 scheduler = self.scheduler
197 settings = self.settings
198 + world_atom = self.world_atom
199 + tree = "bintree"
200 settings.setcpv(pkg)
201 debug = settings.get("PORTAGE_DEBUG") == "1"
202
203 @@ -2184,7 +2205,6 @@
204 root_config = self.pkg.root_config
205 ebuild_path = os.path.join(infloc, pkg.pf + ".ebuild")
206 cleanup = 1
207 - tree = "bintree"
208 mydbapi = root_config.trees[tree].dbapi
209
210 retval = portage.doebuild(ebuild_path, "clean",
211 @@ -2248,7 +2268,7 @@
212 phase = "setup"
213 ebuild_phase = EbuildPhase(fd_pipes=fd_pipes,
214 pkg=pkg, phase=phase, register=scheduler.register,
215 - settings=settings, unregister=scheduler.unregister)
216 + settings=settings, tree=tree, unregister=scheduler.unregister)
217
218 ebuild_phase.start()
219 retval = None
220 @@ -2274,10 +2294,10 @@
221 noiselevel=-1)
222 return retval
223
224 - merge = EbuildMerge(
225 - find_blockers=find_blockers,
226 - ldpath_mtimes=ldpath_mtimes,
227 - pkg=pkg, settings=settings)
228 + merge = EbuildMerge(find_blockers=find_blockers,
229 + ldpath_mtimes=ldpath_mtimes, logger=logger, pkg=pkg,
230 + pkg_count=pkg_count, pkg_path=pkg_path,
231 + settings=settings, tree=tree, world_atom=world_atom)
232
233 retval = merge.execute()
234 if retval != os.EX_OK:
235 @@ -7415,6 +7435,35 @@
236
237 return state_changed
238
239 + def _world_atom(self, pkg):
240 + """
241 + Add the package to the world file, but only if
242 + it's supposed to be added. Otherwise, do nothing.
243 + """
244 + if pkg.root != self.target_root:
245 + return
246 +
247 + args_set = self._args_set
248 + if not args_set.findAtomForPackage(pkg):
249 + return
250 +
251 + logger = self._logger
252 + pkg_count = self._pkg_count
253 + root_config = pkg.root_config
254 + world_set = root_config.sets["world"]
255 + world_set.lock()
256 + try:
257 + world_set.load() # maybe it's changed on disk
258 + atom = create_world_atom(pkg, args_set, root_config)
259 + if atom:
260 + portage.writemsg_stdout(('>>> Recording %s in "world" ' + \
261 + 'favorites file...\n') % atom)
262 + logger.log(" === (%s of %s) Updating world file (%s)" % \
263 + (pkg_count.curval, pkg_count.maxval, pkg.cpv))
264 + world_set.add(atom)
265 + finally:
266 + world_set.unlock()
267 +
268 def _execute_task(self, pkg):
269 favorites = self._favorites
270 mtimedb = self._mtimedb
271 @@ -7478,7 +7527,8 @@
272 find_blockers=self._find_blockers(pkg),
273 ldpath_mtimes=ldpath_mtimes, logger=self._logger,
274 opts=self._build_opts, pkg=pkg, pkg_count=pkg_count,
275 - settings=pkgsettings, scheduler=self._sched_iface)
276 + settings=pkgsettings, scheduler=self._sched_iface,
277 + world_atom=self._world_atom)
278 retval = build.execute()
279 if retval != os.EX_OK:
280 if fetchonly:
281 @@ -7491,7 +7541,7 @@
282 ldpath_mtimes=ldpath_mtimes, logger=self._logger,
283 opts=self._binpkg_opts, pkg=pkg, pkg_count=pkg_count,
284 prefetcher=prefetchers.get(pkg), settings=pkgsettings,
285 - scheduler=self._sched_iface)
286 + scheduler=self._sched_iface, world_atom=self._world_atom)
287 retval = binpkg.execute()
288 if retval != os.EX_OK:
289 if fetchonly:
290 @@ -7499,35 +7549,6 @@
291 else:
292 raise self._pkg_failure(retval)
293
294 - if not buildpkgonly:
295 - if not (fetchonly or oneshot or pretend) and \
296 - args_set.findAtomForPackage(pkg):
297 - world_set.lock()
298 - world_set.load() # maybe it's changed on disk
299 - myfavkey = create_world_atom(pkg, args_set, root_config)
300 - if myfavkey:
301 - print ">>> Recording",myfavkey,"in \"world\" favorites file..."
302 - emergelog(xterm_titles, " === ("+\
303 - str(mergecount)+" of "+\
304 - str(len(mymergelist))+\
305 - ") Updating world file ("+x[pkgindex]+")")
306 - world_set.add(myfavkey)
307 - world_set.unlock()
308 -
309 - if "--pretend" not in self.myopts and \
310 - "--fetchonly" not in self.myopts and \
311 - "--fetch-all-uri" not in self.myopts:
312 - if "noclean" not in self.settings.features:
313 - short_msg = "emerge: (%s of %s) %s Clean Post" % \
314 - (mergecount, len(mymergelist), x[pkgindex])
315 - emergelog(xterm_titles, (" === (%s of %s) " + \
316 - "Post-Build Cleaning (%s::%s)") % \
317 - (mergecount, len(mymergelist), pkg.cpv, y),
318 - short_msg=short_msg)
319 - emergelog(xterm_titles, " ::: completed emerge ("+\
320 - str(mergecount)+" of "+str(len(mymergelist))+") "+\
321 - x[2]+" to "+x[1])
322 -
323 self._restart_if_necessary(pkg)
324 del mtimedb["resume"]["mergelist"][0]
325 if not mtimedb["resume"]["mergelist"]:
326
327 --
328 gentoo-commits@l.g.o mailing list