[entropy.server] make dep_rewrite also affect conflicts

This makes possible to remove or edit conflict dependencies
This commit is contained in:
Fabio Erculiani
2014-11-30 14:52:21 +00:00
parent b7f30dafc8
commit a67ea012dd
+21 -3
View File
@@ -7442,10 +7442,15 @@ class Server(Client):
# pkg_meta['conflicts'] is a frozenset
conflicts = set(pkg_meta['conflicts'])
remove_conflicts = set()
new_dependencies = []
remove_dependencies = set()
for dep_string, dep_value in pkg_meta['pkg_dependencies']:
pkg_deps = [(dep_str, dep_val, False) in pkg_meta['pkg_dependencies']]
pkg_deps += [(confl, None, True) in pkg_meta['conflicts']]
for dep_string, dep_value, is_conflict in pkg_deps:
dep_string_matched = False
matched_pattern = False
@@ -7480,7 +7485,12 @@ class Server(Client):
if number_of_subs_made:
dep_string_matched = True
if new_dep_string and (new_dep_string != "-"):
new_dependencies.append((new_dep_string, dep_value))
if is_conflict:
conflicts.add(new_dep_string)
else:
new_dependencies.append((new_dep_string, dep_value))
self.output(
"%s: %s => %s" % (
teal(_("replaced")),
@@ -7515,7 +7525,11 @@ class Server(Client):
)
if dep_string_matched:
remove_dependencies.add(dep_string)
if is_conflict:
remove_conflicts.add(dep_string)
else:
remove_dependencies.add(dep_string)
elif (not dep_string_matched) and matched_pattern:
self.output(
"%s: %s :: %s" % (
@@ -7528,6 +7542,7 @@ class Server(Client):
header = darkred(" !x!x!x! ")
)
# Update dependencies
pkg_dependencies = []
for dep_string, dep_value in pkg_meta['pkg_dependencies']:
if dep_string in remove_dependencies:
@@ -7537,6 +7552,9 @@ class Server(Client):
pkg_dependencies.extend(new_dependencies)
pkg_meta['pkg_dependencies'] = tuple(pkg_dependencies)
# Update conflicts
conflicts -= remove_conflicts
# save conflicts metadata back in place
pkg_meta['conflicts'] = frozenset(conflicts)