1 |
Author: zmedico |
2 |
Date: 2009-06-30 23:03:34 +0000 (Tue, 30 Jun 2009) |
3 |
New Revision: 13749 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/depgraph.py |
7 |
Log: |
8 |
Fix depgraph._resolve to do old-style virtual matches against package.provided |
9 |
when there is no other choice. |
10 |
|
11 |
|
12 |
Modified: main/trunk/pym/_emerge/depgraph.py |
13 |
=================================================================== |
14 |
--- main/trunk/pym/_emerge/depgraph.py 2009-06-30 22:49:24 UTC (rev 13748) |
15 |
+++ main/trunk/pym/_emerge/depgraph.py 2009-06-30 23:03:34 UTC (rev 13749) |
16 |
@@ -1358,6 +1358,7 @@ |
17 |
myroot = self._frozen_config.target_root |
18 |
pkgsettings = self._frozen_config.pkgsettings[myroot] |
19 |
pprovideddict = pkgsettings.pprovideddict |
20 |
+ virtuals = pkgsettings.getvirtuals() |
21 |
for arg in self._dynamic_config._initial_arg_list: |
22 |
for atom in arg.set: |
23 |
self._frozen_config.spinner.update() |
24 |
@@ -1383,6 +1384,22 @@ |
25 |
pkg, existing_node = self._select_package( |
26 |
myroot, atom, onlydeps=onlydeps) |
27 |
if not pkg: |
28 |
+ pprovided_match = False |
29 |
+ for virt_choice in virtuals.get(atom.cp, []): |
30 |
+ expanded_atom = portage.dep.Atom( |
31 |
+ atom.replace(atom.cp, |
32 |
+ portage.dep_getkey(virt_choice), 1)) |
33 |
+ pprovided = pprovideddict.get(expanded_atom.cp) |
34 |
+ if pprovided and \ |
35 |
+ portage.match_from_list(expanded_atom, pprovided): |
36 |
+ # A provided package has been |
37 |
+ # specified on the command line. |
38 |
+ self._dynamic_config._pprovided_args.append((arg, atom)) |
39 |
+ pprovided_match = True |
40 |
+ break |
41 |
+ if pprovided_match: |
42 |
+ continue |
43 |
+ |
44 |
if not (isinstance(arg, SetArg) and \ |
45 |
arg.name in ("system", "world")): |
46 |
self._dynamic_config._unsatisfied_deps_for_display.append( |