1 |
--- |
2 |
pym/_emerge/depgraph.py | 16 +++++++--------- |
3 |
1 file changed, 7 insertions(+), 9 deletions(-) |
4 |
|
5 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
6 |
index 484ac14..1bb086b 100644 |
7 |
--- a/pym/_emerge/depgraph.py |
8 |
+++ b/pym/_emerge/depgraph.py |
9 |
@@ -378,9 +378,6 @@ class _dynamic_depgraph_config(object): |
10 |
# This use used to check if we have accounted for blockers |
11 |
# relevant to a package. |
12 |
self._traversed_pkg_deps = set() |
13 |
- # Slot collision nodes are not allowed to block other packages since |
14 |
- # blocker validation is only able to account for one package per slot. |
15 |
- self._slot_collision_nodes = set() |
16 |
self._parent_atoms = {} |
17 |
self._slot_conflict_handler = None |
18 |
self._circular_dependency_handler = None |
19 |
@@ -1799,11 +1796,16 @@ class depgraph(object): |
20 |
buildpkgonly = "--buildpkgonly" in self._frozen_config.myopts |
21 |
nodeps = "--nodeps" in self._frozen_config.myopts |
22 |
if dep.blocker: |
23 |
+ |
24 |
+ # Slot collision nodes are not allowed to block other packages since |
25 |
+ # blocker validation is only able to account for one package per slot. |
26 |
+ is_slot_conflict_parent = any(dep.parent in conflict.pkgs[1:] for conflict in \ |
27 |
+ self._dynamic_config._package_tracker.slot_conflicts()) |
28 |
if not buildpkgonly and \ |
29 |
not nodeps and \ |
30 |
not dep.collapsed_priority.ignored and \ |
31 |
not dep.collapsed_priority.optional and \ |
32 |
- dep.parent not in self._dynamic_config._slot_collision_nodes: |
33 |
+ not is_slot_conflict_parent: |
34 |
if dep.parent.onlydeps: |
35 |
# It's safe to ignore blockers if the |
36 |
# parent is an --onlydeps node. |
37 |
@@ -2019,7 +2021,6 @@ class depgraph(object): |
38 |
level=logging.DEBUG, noiselevel=-1) |
39 |
|
40 |
else: |
41 |
- self._add_slot_conflict(pkg) |
42 |
if debug: |
43 |
writemsg_level( |
44 |
"%s%s %s\n" % ("Slot Conflict:".ljust(15), |
45 |
@@ -2138,9 +2139,6 @@ class depgraph(object): |
46 |
self._dynamic_config._slot_operator_deps[slot_key] = slot_info |
47 |
slot_info.append(dep) |
48 |
|
49 |
- def _add_slot_conflict(self, pkg): |
50 |
- self._dynamic_config._slot_collision_nodes.add(pkg) |
51 |
- |
52 |
def _add_pkg_deps(self, pkg, allow_unsatisfied=False): |
53 |
|
54 |
myroot = pkg.root |
55 |
@@ -6019,7 +6017,7 @@ class depgraph(object): |
56 |
|
57 |
if "complete" not in self._dynamic_config.myparams and \ |
58 |
self._dynamic_config._allow_backtracking and \ |
59 |
- self._dynamic_config._slot_collision_nodes and \ |
60 |
+ any(self._dynamic_config._package_tracker.slot_conflicts()) and \ |
61 |
not self._accept_blocker_conflicts(): |
62 |
self._dynamic_config.myparams["complete"] = True |
63 |
|
64 |
-- |
65 |
1.8.3.2 |