From a67ea012dd3357aee3e686609f5d0569943bdb0b Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Sun, 30 Nov 2014 14:52:21 +0000 Subject: [PATCH] [entropy.server] make dep_rewrite also affect conflicts This makes possible to remove or edit conflict dependencies --- lib/entropy/server/interfaces/main.py | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/entropy/server/interfaces/main.py b/lib/entropy/server/interfaces/main.py index 2196f09a6..8ec4398f4 100644 --- a/lib/entropy/server/interfaces/main.py +++ b/lib/entropy/server/interfaces/main.py @@ -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)