1 |
Author: zmedico |
2 |
Date: 2008-10-04 05:09:23 +0000 (Sat, 04 Oct 2008) |
3 |
New Revision: 11617 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Make depgraph._add_pkg() take a Dependency instance. This provides access to |
9 |
the atom which pulled in the package, which may be needed in order to verify |
10 |
that a different package that's been added to the graph is capable of |
11 |
satisfying the atom. |
12 |
|
13 |
|
14 |
Modified: main/trunk/pym/_emerge/__init__.py |
15 |
=================================================================== |
16 |
--- main/trunk/pym/_emerge/__init__.py 2008-10-03 16:58:09 UTC (rev 11616) |
17 |
+++ main/trunk/pym/_emerge/__init__.py 2008-10-04 05:09:23 UTC (rev 11617) |
18 |
@@ -4431,12 +4431,20 @@ |
19 |
self._ignored_deps.append(dep) |
20 |
return 1 |
21 |
|
22 |
- if not self._add_pkg(dep_pkg, dep.parent, |
23 |
- priority=dep.priority, depth=dep.depth): |
24 |
+ if not self._add_pkg(dep_pkg, dep): |
25 |
return 0 |
26 |
return 1 |
27 |
|
28 |
- def _add_pkg(self, pkg, myparent, priority=None, depth=0): |
29 |
+ def _add_pkg(self, pkg, dep): |
30 |
+ myparent = None |
31 |
+ priority = None |
32 |
+ depth = 0 |
33 |
+ if dep is None: |
34 |
+ dep = Dependency() |
35 |
+ else: |
36 |
+ myparent = dep.parent |
37 |
+ priority = dep.priority |
38 |
+ depth = dep.depth |
39 |
if priority is None: |
40 |
priority = DepPriority() |
41 |
""" |
42 |
@@ -5029,6 +5037,8 @@ |
43 |
arg = args.pop() |
44 |
for atom in arg.set: |
45 |
self.spinner.update() |
46 |
+ dep = Dependency(atom=atom, onlydeps=onlydeps, |
47 |
+ root=myroot, parent=arg) |
48 |
atom_cp = portage.dep_getkey(atom) |
49 |
try: |
50 |
pprovided = pprovideddict.get(portage.dep_getkey(atom)) |
51 |
@@ -5037,7 +5047,7 @@ |
52 |
self._pprovided_args.append((arg, atom)) |
53 |
continue |
54 |
if isinstance(arg, PackageArg): |
55 |
- if not self._add_pkg(arg.package, arg) or \ |
56 |
+ if not self._add_pkg(arg.package, dep) or \ |
57 |
not self._create_graph(): |
58 |
sys.stderr.write(("\n\n!!! Problem resolving " + \ |
59 |
"dependencies for %s\n") % arg.arg) |
60 |
@@ -5080,14 +5090,10 @@ |
61 |
arg.name in ("system", "world")): |
62 |
return 0, myfavorites |
63 |
|
64 |
- dep = Dependency(atom=atom, onlydeps=onlydeps, |
65 |
- root=myroot, parent=arg) |
66 |
- |
67 |
# Add the selected package to the graph as soon as possible |
68 |
# so that later dep_check() calls can use it as feedback |
69 |
# for making more consistent atom selections. |
70 |
- if not self._add_pkg(pkg, dep.parent, |
71 |
- priority=dep.priority, depth=dep.depth): |
72 |
+ if not self._add_pkg(pkg, dep): |
73 |
if isinstance(arg, SetArg): |
74 |
sys.stderr.write(("\n\n!!! Problem resolving " + \ |
75 |
"dependencies for %s from %s\n") % \ |
76 |
@@ -5696,8 +5702,7 @@ |
77 |
# will be appropriately reported as a slot collision |
78 |
# (possibly solvable via backtracking). |
79 |
pkg = matches[-1] # highest match |
80 |
- if not self._add_pkg(pkg, dep.parent, |
81 |
- priority=dep.priority, depth=dep.depth): |
82 |
+ if not self._add_pkg(pkg, dep): |
83 |
return 0 |
84 |
if not self._create_graph(allow_unsatisfied=True): |
85 |
return 0 |
86 |
@@ -7741,7 +7746,8 @@ |
87 |
arg.root_config.root, atom) |
88 |
if existing_node is None and \ |
89 |
pkg is not None: |
90 |
- if not self._add_pkg(pkg, arg): |
91 |
+ if not self._add_pkg(pkg, Dependency(atom=atom, |
92 |
+ root=pkg.root, parent=arg)): |
93 |
return False |
94 |
|
95 |
# Allow unsatisfied deps here to avoid showing a masking |
96 |
@@ -12401,8 +12407,9 @@ |
97 |
for consumer_dblink in set(chain(*consumers.values())): |
98 |
consumer_pkg = vardb.get(("installed", myroot, |
99 |
consumer_dblink.mycpv, "nomerge")) |
100 |
- resolver._add_pkg(pkg, consumer_pkg, |
101 |
- priority=UnmergeDepPriority(runtime=True)) |
102 |
+ resolver._add_pkg(pkg, Dependency(parent=consumer_pkg, |
103 |
+ priority=UnmergeDepPriority(runtime=True), |
104 |
+ root=pkg.root)) |
105 |
|
106 |
writemsg_level("\nCalculating dependencies ") |
107 |
success = resolver._complete_graph() |