diff --git a/pisi/atomicoperations.py b/pisi/atomicoperations.py index 9d3505ca..e1dedce3 100644 --- a/pisi/atomicoperations.py +++ b/pisi/atomicoperations.py @@ -177,6 +177,7 @@ class Install(AtomicOperation): # schedule for reinstall self.old_files = ctx.installdb.files(pkg.name) + self.old_path = ctx.installdb.pkg_dir(pkg.name, iversion, irelease) self.reinstall = True Remove(pkg.name).run_preremove() @@ -228,6 +229,7 @@ class Install(AtomicOperation): if self.reinstall: Remove(self.metadata.package.name).remove_db() + Remove.remove_pisi_files(self.old_path) # installdb ctx.installdb.install(self.metadata.package.name, @@ -322,7 +324,7 @@ class Remove(AtomicOperation): self.remove_file(fileinfo) self.remove_db() - self.remove_pisi_files() + self.remove_pisi_files(self.package.pkg_dir()) ctx.ui.status() ctx.ui.notify(pisi.ui.removed, package = self.package, files = self.files) @@ -360,8 +362,10 @@ class Remove(AtomicOperation): # TODO: store this somewhere pass - def remove_pisi_files(self): - util.clean_dir(self.package.pkg_dir()) + def remove_pisi_files(path): + util.clean_dir(path) + + remove_pisi_files = staticmethod(remove_pisi_files) def remove_db(self): ctx.installdb.remove(self.package_name) diff --git a/pisi/installdb.py b/pisi/installdb.py index 94282002..36547df2 100644 --- a/pisi/installdb.py +++ b/pisi/installdb.py @@ -28,6 +28,7 @@ import pisi.context as ctx import pisi.lockeddbshelve as shelve from pisi.files import Files import pisi.util as util +from pisi.util import join_path as join class InstallDBError(pisi.Error): @@ -75,15 +76,14 @@ class InstallDB: def __init__(self): self.d = shelve.LockedDBShelf('install') self.dp = shelve.LockedDBShelf('configpending') - self.files_dir = pisi.util.join_path(ctx.config.db_dir(), 'files') + self.files_dir = join(ctx.config.db_dir(), 'files') def close(self): self.d.close() self.dp.close() def files_name(self, pkg, version, release): - from pisi.util import join_path as join - pkg_dir = join(ctx.config.lib_dir(), pkg + '-' + version + '-' + release) + pkg_dir = self.pkg_dir(pkg, version, release) return join(pkg_dir, ctx.const.files_xml) def files(self, pkg): @@ -93,6 +93,9 @@ class InstallDB: files.read(self.files_name(pkg,pkginfo.version,pkginfo.release)) return files + def pkg_dir(self, pkg, version, release): + return join(ctx.config.lib_dir(), pkg + '-' + version + '-' + release) + def is_recorded(self, pkg): pkg = str(pkg) return self.d.has_key(pkg)