Index: pym/_emerge/resolver/backtracking.py |
diff --git a/pym/_emerge/resolver/backtracking.py b/pym/_emerge/resolver/backtracking.py |
index 1ffada96f18fb647253e1377d35a131a8683ffc0..f00e6ca194aeab9e1df8e5368562e266a9209728 100644 |
--- a/pym/_emerge/resolver/backtracking.py |
+++ b/pym/_emerge/resolver/backtracking.py |
@@ -7,6 +7,7 @@ class BacktrackParameter(object): |
__slots__ = ( |
"needed_unstable_keywords", "runtime_pkg_mask", "needed_use_config_changes", "needed_license_changes", |
+ "rebuild_list", "reinstall_list" |
) |
def __init__(self): |
@@ -14,6 +15,8 @@ class BacktrackParameter(object): |
self.runtime_pkg_mask = {} |
self.needed_use_config_changes = {} |
self.needed_license_changes = {} |
+ self.rebuild_list = set() |
+ self.reinstall_list = set() |
def __deepcopy__(self, memo=None): |
if memo is None: |
@@ -27,6 +30,8 @@ class BacktrackParameter(object): |
result.runtime_pkg_mask = copy.copy(self.runtime_pkg_mask) |
result.needed_use_config_changes = copy.copy(self.needed_use_config_changes) |
result.needed_license_changes = copy.copy(self.needed_license_changes) |
+ result.rebuild_list = copy.copy(self.rebuild_list) |
+ result.reinstall_list = copy.copy(self.reinstall_list) |
return result |
@@ -34,7 +39,9 @@ class BacktrackParameter(object): |
return self.needed_unstable_keywords == other.needed_unstable_keywords and \ |
self.runtime_pkg_mask == other.runtime_pkg_mask and \ |
self.needed_use_config_changes == other.needed_use_config_changes and \ |
- self.needed_license_changes == other.needed_license_changes |
+ self.needed_license_changes == other.needed_license_changes and \ |
+ self.rebuild_list == other.rebuild_list and \ |
+ self.reinstall_list == other.reinstall_list |
class _BacktrackNode: |
@@ -137,6 +144,10 @@ class Backtracker(object): |
elif change == "needed_use_config_changes": |
for pkg, (new_use, new_changes) in data: |
para.needed_use_config_changes[pkg] = (new_use, new_changes) |
+ elif change == "rebuild_list": |
+ para.rebuild_list.update(data) |
+ elif change == "reinstall_list": |
+ para.reinstall_list.update(data) |
self._add(new_node, explore=explore) |
self._current_node = new_node |