Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10092 - main/trunk/pym/_emerge
Date: Fri, 02 May 2008 17:47:52
Message-Id: E1JrzML-0006D1-Gm@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-05-02 17:47:48 +0000 (Fri, 02 May 2008)
3 New Revision: 10092
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Clean up merge list handling:
9 * In depgraph.loadResumeCommand(), populate _serialized_tasks_cache so that
10 it can be returned from depgraph.altlist().
11 * Handle --skipfirst instide depgraph.loadResumeCommand(), and fix it to skip
12 the first "merge" task and never skip "uninstall" tasks.
13 * Always get the merge list from depgraph.altlist() instead of using
14 the mtimedb directly. The list returned from depgraph.altlist()
15 contains Package instances with cached metadata.
16 * Remove obsolete code from depgraph.display() and MergeTask.merge() since
17 the merge list always comes from depgraph.altlist() now, and never directly
18 from the mtimedb.
19
20
21 Modified: main/trunk/pym/_emerge/__init__.py
22 ===================================================================
23 --- main/trunk/pym/_emerge/__init__.py 2008-05-02 15:31:22 UTC (rev 10091)
24 +++ main/trunk/pym/_emerge/__init__.py 2008-05-02 17:47:48 UTC (rev 10092)
25 @@ -3772,12 +3772,14 @@
26 node = tempgraph.order[0]
27 else:
28 node = nodes[0]
29 - display_order.append(list(node))
30 + display_order.append(node)
31 tempgraph.remove(node)
32 display_order.reverse()
33 self.myopts.pop("--quiet", None)
34 self.myopts.pop("--verbose", None)
35 self.myopts["--tree"] = True
36 + print
37 + print
38 self.display(display_order)
39 print "!!! Error: circular dependencies:"
40 print
41 @@ -4120,18 +4122,7 @@
42 pkg_status = "nomerge"
43 built = pkg_type != "ebuild"
44 installed = pkg_type == "installed"
45 - try:
46 - pkg = self._pkg_cache[tuple(x)]
47 - except KeyError:
48 - if pkg_status != "uninstall":
49 - raise
50 - # A package scheduled for uninstall apparently
51 - # isn't installed anymore. Since it's already
52 - # been uninstalled, move on to the next task.
53 - # This case should only be reachable in --resume
54 - # mode, since otherwise the package would have
55 - # been cached.
56 - continue
57 + pkg = x
58 metadata = pkg.metadata
59 ebuild_path = None
60 repo_name = metadata["repository"]
61 @@ -4760,8 +4751,17 @@
62 """
63 self._sets["args"].update(resume_data.get("favorites", []))
64 mergelist = resume_data.get("mergelist", [])
65 +
66 + if mergelist and "--skipfirst" in self.myopts:
67 + for i, task in enumerate(mergelist):
68 + if isinstance(task, list) and \
69 + task and task[-1] == "merge":
70 + del mergelist[i]
71 + break
72 +
73 fakedb = self.mydbapi
74 trees = self.trees
75 + serialized_tasks = []
76 for x in mergelist:
77 if len(x) != 4:
78 continue
79 @@ -4791,7 +4791,9 @@
80 type_name=pkg_type)
81 self._pkg_cache[pkg] = pkg
82 fakedb[myroot].cpv_inject(pkg)
83 + serialized_tasks.append(pkg)
84 self.spinner.update()
85 + self._serialized_tasks_cache = serialized_tasks
86
87 class _internal_exception(portage.exception.PortageException):
88 def __init__(self, value=""):
89 @@ -5135,7 +5137,6 @@
90 fetchonly = "--fetchonly" in self.myopts or \
91 "--fetch-all-uri" in self.myopts
92 pretend = "--pretend" in self.myopts
93 - mymergelist=[]
94 ldpath_mtimes = mtimedb["ldpath"]
95 xterm_titles = "notitles" not in self.settings.features
96
97 @@ -5143,12 +5144,6 @@
98 # We're resuming.
99 print colorize("GOOD", "*** Resuming merge...")
100 emergelog(xterm_titles, " *** Resuming merge...")
101 - mylist = mtimedb["resume"]["mergelist"][:]
102 - if "--skipfirst" in self.myopts and mylist:
103 - del mtimedb["resume"]["mergelist"][0]
104 - del mylist[0]
105 - mtimedb.commit()
106 - mymergelist = mylist
107
108 # Verify all the manifests now so that the user is notified of failure
109 # as soon as possible.
110 @@ -5182,12 +5177,12 @@
111 system_set = root_config.sets["system"]
112 args_set = InternalPackageSet(favorites)
113 world_set = root_config.sets["world"]
114 - if "--resume" not in self.myopts:
115 - mymergelist = mylist
116 - mtimedb["resume"]["mergelist"] = [list(x) for x in mymergelist \
117 - if isinstance(x, Package)]
118 - mtimedb.commit()
119
120 + mtimedb["resume"]["mergelist"] = [list(x) for x in mylist \
121 + if isinstance(x, Package)]
122 + mtimedb.commit()
123 +
124 + mymergelist = mylist
125 myfeat = self.settings.features[:]
126 bad_resume_opts = set(["--ask", "--tree", "--changelog", "--skipfirst",
127 "--resume"])
128 @@ -5254,15 +5249,10 @@
129 vardb = vartree.dbapi
130 root_config = self.trees[myroot]["root_config"]
131 pkgsettings = self.pkgsettings[myroot]
132 - metadata = {}
133 if pkg_type == "blocks":
134 pass
135 elif pkg_type == "ebuild":
136 mydbapi = portdb
137 - metadata.update(izip(metadata_keys,
138 - mydbapi.aux_get(pkg_key, metadata_keys)))
139 - pkgsettings.setcpv(pkg_key, mydb=mydbapi)
140 - metadata["USE"] = pkgsettings["PORTAGE_USE"]
141 else:
142 if pkg_type == "binary":
143 mydbapi = bindb
144 @@ -5270,22 +5260,10 @@
145 mydbapi = vardb
146 else:
147 raise AssertionError("Package type: '%s'" % pkg_type)
148 - try:
149 - metadata.update(izip(metadata_keys,
150 - mydbapi.aux_get(pkg_key, metadata_keys)))
151 - except KeyError:
152 - if not installed:
153 - raise
154 - # A package scheduled for uninstall apparently
155 - # isn't installed anymore. Since it's already
156 - # been uninstalled, move on to the next task.
157 - continue
158 if not installed:
159 mergecount += 1
160 - pkg = Package(cpv=pkg_key, built=built,
161 - installed=installed, metadata=metadata,
162 - operation=operation, root=myroot,
163 - type_name=pkg_type)
164 + pkg = x
165 + metadata = pkg.metadata
166 if pkg.installed:
167 if not (buildpkgonly or fetchonly or pretend):
168 self._uninstall_queue.append(pkg)
169 @@ -7704,9 +7682,7 @@
170 "--verbose" in myopts) and \
171 not ("--quiet" in myopts and "--ask" not in myopts):
172 if "--resume" in myopts:
173 - mymergelist = mtimedb["resume"]["mergelist"]
174 - if "--skipfirst" in myopts:
175 - mymergelist = mymergelist[1:]
176 + mymergelist = mydepgraph.altlist()
177 if len(mymergelist) == 0:
178 print colorize("INFORM", "emerge: It seems we have nothing to resume...")
179 return os.EX_OK
180 @@ -7762,9 +7738,7 @@
181
182 if ("--pretend" in myopts) and not ("--fetchonly" in myopts or "--fetch-all-uri" in myopts):
183 if ("--resume" in myopts):
184 - mymergelist = mtimedb["resume"]["mergelist"]
185 - if "--skipfirst" in myopts:
186 - mymergelist = mymergelist[1:]
187 + mymergelist = mydepgraph.altlist()
188 if len(mymergelist) == 0:
189 print colorize("INFORM", "emerge: It seems we have nothing to resume...")
190 return os.EX_OK
191 @@ -7806,9 +7780,9 @@
192 it to write the mtimedb"""
193 mtimedb.filename = None
194 time.sleep(3) # allow the parent to have first fetch
195 + mymergelist = mydepgraph.altlist()
196 del mydepgraph
197 - retval = mergetask.merge(
198 - mtimedb["resume"]["mergelist"], favorites, mtimedb)
199 + retval = mergetask.merge(mymergelist, favorites, mtimedb)
200 merge_count = mergetask.curval
201 else:
202 if "resume" in mtimedb and \
203
204 --
205 gentoo-commits@l.g.o mailing list