From e4ab4d4629579924b04502adba222914b6bcd674 Mon Sep 17 00:00:00 2001 From: Faik Uygur Date: Tue, 9 May 2006 15:12:16 +0000 Subject: [PATCH] =?UTF-8?q?postinstall'da=20rebuild-db=20yapamaca=C4=9F?= =?UTF-8?q?=C4=B1m=C4=B1zdan,=20bu=20kodu=20pisi=20i=C3=A7inde=20ta=C5=9F?= =?UTF-8?q?=C4=B1mak=20zorunday=C4=B1z.=20:(?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pisi/api.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pisi/api.py b/pisi/api.py index 67df1611..cab7e1e4 100644 --- a/pisi/api.py +++ b/pisi/api.py @@ -416,6 +416,28 @@ def rebuild_db(files=False): assert ctx.database == False + # Bug 2596 + # finds and cleans duplicate package directories under '/var/lib/pisi/package' + # deletes the _older_ versioned package directories. + def clean_duplicates(): + i_version = {} # installed versions + replica = [] + for pkg in os.listdir(pisi.util.join_path(pisi.api.ctx.config.lib_dir(), 'package')): + (name, ver) = util.parse_package_name(pkg) + if i_version.has_key(name): + if Version(ver) > Version(i_version[name]): + # found a greater version, older one is a replica + replica.append(name + '-' + i_version[name]) + i_version[name] = ver + else: + # found an older version which is a replica + replica.append(name + '-' + ver) + else: + i_version[name] = ver + + for pkg in replica: + pisi.util.clean_dir(pisi.util.join_path(pisi.api.ctx.config.lib_dir(), 'package', pkg)) + def destroy(files): #from pisi.lockeddbshelve import LockedDBShelf pisi.lockeddbshelve.init_dbenv(write=True, writeversion=True) @@ -468,5 +490,6 @@ def rebuild_db(files=False): # construct new database version init(database=True, options=options, ui=ui, comar=comar) #ctx.txn_proc(reload) + clean_duplicates() reload_packages(files, None) reload_indexes(None)