Gentoo Archives: gentoo-commits

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