Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r10118 - main/branches/2.1.2/bin
Date: Sat, 03 May 2008 02:31:43
Message-Id: E1Js7XI-0001nK-CD@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-05-03 02:31:39 +0000 (Sat, 03 May 2008)
3 New Revision: 10118
4
5 Modified:
6 main/branches/2.1.2/bin/emerge
7 Log:
8 * Check for masked packages in the --resume merge list and bail
9 out in that case (bug #199408).
10
11 * In depgraph.loadResumeCommand(), create a dependency graph from
12 the resume list. This ensures that the merge list has it's
13 dependencies satisfied. It also enables --tree display together
14 with --resume.
15
16 * Fix --resume mode to check for unsatisfied blockers and bail out when
17 necessary.
18
19 * Add --nodeps to the parallel-fetch --resume options since recalculation of
20 deps is a a waste here.
21
22 * Delete the resume list(s) if there is an unsatisfied block.
23
24 (trunk r10113:10117)
25
26
27 Modified: main/branches/2.1.2/bin/emerge
28 ===================================================================
29 --- main/branches/2.1.2/bin/emerge 2008-05-03 02:24:40 UTC (rev 10117)
30 +++ main/branches/2.1.2/bin/emerge 2008-05-03 02:31:39 UTC (rev 10118)
31 @@ -4878,6 +4878,9 @@
32 """
33 self._sets["args"].update(resume_data.get("favorites", []))
34 mergelist = resume_data.get("mergelist", [])
35 + favorites = resume_data.get("favorites")
36 + if not isinstance(favorites, list):
37 + favorites = []
38
39 if mergelist and "--skipfirst" in self.myopts:
40 for i, task in enumerate(mergelist):
41 @@ -4917,11 +4920,51 @@
42 operation=action, root=myroot,
43 type_name=pkg_type)
44 self._pkg_cache[pkg] = pkg
45 +
46 + root_config = self.roots[pkg.root]
47 + if "merge" == pkg.operation and \
48 + not visible(root_config.settings, pkg):
49 + self._unsatisfied_deps_for_display.append(
50 + ((pkg.root, "="+pkg.cpv), {"myparent":None}))
51 +
52 fakedb[myroot].cpv_inject(pkg)
53 serialized_tasks.append(pkg)
54 self.spinner.update()
55 - self._serialized_tasks_cache = serialized_tasks
56
57 + if self._unsatisfied_deps_for_display:
58 + return False
59 +
60 + if not serialized_tasks or "--nodeps" in self.myopts:
61 + self._serialized_tasks_cache = serialized_tasks
62 + else:
63 + favorites_set = InternalPackageSet(atom for atom in favorites \
64 + if isinstance(atom, basestring) and portage.isvalidatom(atom))
65 + for node in serialized_tasks:
66 + if isinstance(node, Package) and \
67 + node.operation == "merge" and \
68 + favorites_set.findAtomForPackage(node.cpv, node.metadata):
69 + self._set_nodes.add(node)
70 +
71 + self._select_package = self._select_pkg_from_graph
72 + for task in serialized_tasks:
73 + if isinstance(task, Package) and \
74 + task.operation == "merge":
75 + self._add_pkg(task, None)
76 + if not self._create_graph():
77 + return False
78 + self._serialized_tasks_cache = None
79 + try:
80 + self.altlist()
81 + except self._unknown_internal_error:
82 + return False
83 +
84 + for node in self.digraph.root_nodes():
85 + if isinstance(node, Package) and \
86 + node.operation == "merge":
87 + # Give hint to the --tree display.
88 + self._set_nodes.add(node)
89 + return True
90 +
91 class _internal_exception(portage_exception.PortageException):
92 def __init__(self, value=""):
93 portage_exception.PortageException.__init__(self, value)
94 @@ -5310,7 +5353,7 @@
95
96 mymergelist = mylist
97 myfeat = self.settings.features[:]
98 - bad_resume_opts = set(["--ask", "--tree", "--changelog", "--skipfirst",
99 + bad_resume_opts = set(["--ask", "--changelog", "--skipfirst",
100 "--resume"])
101 if "parallel-fetch" in myfeat and \
102 not ("--pretend" in self.myopts or \
103 @@ -5332,7 +5375,8 @@
104 fetch_env["FEATURES"] = fetch_env.get("FEATURES", "") + " -cvs"
105 fetch_env["PORTAGE_NICENESS"] = "0"
106 fetch_env["PORTAGE_PARALLEL_FETCHONLY"] = "1"
107 - fetch_args = [sys.argv[0], "--resume", "--fetchonly"]
108 + fetch_args = [sys.argv[0], "--resume",
109 + "--fetchonly", "--nodeps"]
110 resume_opts = self.myopts.copy()
111 # For automatic resume, we need to prevent
112 # any of bad_resume_opts from leaking in
113 @@ -7604,6 +7648,10 @@
114 mysettings.lock()
115 del myroot, mysettings
116
117 + favorites = mtimedb["resume"].get("favorites")
118 + if not isinstance(favorites, list):
119 + favorites = []
120 +
121 # "myopts" is a list for backward compatibility.
122 resume_opts = mtimedb["resume"].get("myopts", [])
123 if isinstance(resume_opts, list):
124 @@ -7616,8 +7664,9 @@
125 myparams = create_depgraph_params(myopts, myaction)
126 mydepgraph = depgraph(settings, trees,
127 myopts, myparams, spinner)
128 + success = False
129 try:
130 - mydepgraph.loadResumeCommand(mtimedb["resume"])
131 + success = mydepgraph.loadResumeCommand(mtimedb["resume"])
132 except portage_exception.PackageNotFound:
133 if show_spinner:
134 print
135 @@ -7627,14 +7676,36 @@
136 out.eerror(" available to be emerged. Please restart/continue")
137 out.eerror(" the merge operation manually.")
138
139 + if show_spinner:
140 + print "\b\b... done!"
141 +
142 + unsatisfied_block = False
143 + if success:
144 + mymergelist = mydepgraph.altlist()
145 + if mymergelist and \
146 + (isinstance(mymergelist[-1], Blocker) and \
147 + not mymergelist[-1].satisfied):
148 + if not fetchonly and not pretend:
149 + unsatisfied_block = True
150 + mydepgraph.display(
151 + mydepgraph.altlist(reversed=tree),
152 + favorites=favorites)
153 + print "\n!!! Error: The above package list contains packages which cannot be installed"
154 + print "!!! at the same time on the same system."
155 + if not quiet:
156 + show_blocker_docs_link()
157 +
158 + if not success:
159 + mydepgraph.display_problems()
160 +
161 + if unsatisfied_block or not success:
162 # delete the current list and also the backup
163 # since it's probably stale too.
164 for k in ("resume", "resume_backup"):
165 mtimedb.pop(k, None)
166 mtimedb.commit()
167 +
168 return 1
169 - if show_spinner:
170 - print "\b\b... done!"
171 else:
172 if ("--resume" in myopts):
173 print darkgreen("emerge: It seems we have nothing to resume...")
174 @@ -7670,7 +7741,9 @@
175 print colorize("INFORM", "emerge: It seems we have nothing to resume...")
176 return os.EX_OK
177 favorites = mtimedb["resume"]["favorites"]
178 - retval = mydepgraph.display(mymergelist, favorites=favorites)
179 + retval = mydepgraph.display(
180 + mydepgraph.altlist(reversed=tree),
181 + favorites=favorites)
182 if retval != os.EX_OK:
183 return retval
184 prompt="Would you like to resume merging these packages?"
185 @@ -7726,7 +7799,9 @@
186 print colorize("INFORM", "emerge: It seems we have nothing to resume...")
187 return os.EX_OK
188 favorites = mtimedb["resume"]["favorites"]
189 - retval = mydepgraph.display(mymergelist, favorites=favorites)
190 + retval = mydepgraph.display(
191 + mydepgraph.altlist(reversed=tree),
192 + favorites=favorites)
193 if retval != os.EX_OK:
194 return retval
195 else:
196 @@ -8249,11 +8324,6 @@
197 import portage_debug
198 portage_debug.set_trace(True)
199
200 - if ("--resume" in myopts):
201 - if "--tree" in myopts:
202 - print "* --tree is currently broken with --resume. Disabling..."
203 - del myopts["--tree"]
204 -
205 if not ("--quiet" in myopts):
206 if not sys.stdout.isatty() or ("--nospinner" in myopts):
207 spinner.update = spinner.update_basic
208
209 --
210 gentoo-commits@l.g.o mailing list