From cbbb3b73a896fac49ed921fc54c9ad9a77371a05 Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Wed, 13 Sep 2006 18:55:40 +0000 Subject: [PATCH] * No, we can not combine these.. revert 9099 --- pisi/atomicoperations.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/pisi/atomicoperations.py b/pisi/atomicoperations.py index 7c767456..60f4a751 100644 --- a/pisi/atomicoperations.py +++ b/pisi/atomicoperations.py @@ -297,12 +297,25 @@ class Install(AtomicOperation): for path in leftover: Remove.remove_file( old_fileinfo[path] ) - # You either upgrade/downgrade or install a new package, controls are same. - # If a 'config' typed file coming from the package and the same file - # already exists on the system, it is either a left over from a previously - # uninstalled package or it is upgraded package's currently used config file. - for file in filter(lambda x: x.type == 'config', self.files.list): - check_config_changed(file) + if self.reinstall: + # get 'config' typed file objects + new = filter(lambda x: x.type == 'config', self.files.list) + old = filter(lambda x: x.type == 'config', self.old_files.list) + + # get config path lists + newconfig = set(map(lambda x: str(x.path), new)) + oldconfig = set(map(lambda x: str(x.path), old)) + + config_overlaps = newconfig & oldconfig + if config_overlaps: + files = filter(lambda x: x.path in config_overlaps, old) + for file in files: + check_config_changed(file) + else: + for file in self.files.list: + if file.type == 'config': + # there may be left over config files + check_config_changed(file) self.package.extract_install(ctx.config.dest_dir())