* sadece paket kaldırıldığı zaman /var/lib/pisi altından da siliniyordu,
upgrade ve downgradelerde de eski versiyon klasörü silinsin
This commit is contained in:
@@ -177,6 +177,7 @@ class Install(AtomicOperation):
|
|||||||
|
|
||||||
# schedule for reinstall
|
# schedule for reinstall
|
||||||
self.old_files = ctx.installdb.files(pkg.name)
|
self.old_files = ctx.installdb.files(pkg.name)
|
||||||
|
self.old_path = ctx.installdb.pkg_dir(pkg.name, iversion, irelease)
|
||||||
self.reinstall = True
|
self.reinstall = True
|
||||||
Remove(pkg.name).run_preremove()
|
Remove(pkg.name).run_preremove()
|
||||||
|
|
||||||
@@ -228,6 +229,7 @@ class Install(AtomicOperation):
|
|||||||
|
|
||||||
if self.reinstall:
|
if self.reinstall:
|
||||||
Remove(self.metadata.package.name).remove_db()
|
Remove(self.metadata.package.name).remove_db()
|
||||||
|
Remove.remove_pisi_files(self.old_path)
|
||||||
|
|
||||||
# installdb
|
# installdb
|
||||||
ctx.installdb.install(self.metadata.package.name,
|
ctx.installdb.install(self.metadata.package.name,
|
||||||
@@ -322,7 +324,7 @@ class Remove(AtomicOperation):
|
|||||||
self.remove_file(fileinfo)
|
self.remove_file(fileinfo)
|
||||||
|
|
||||||
self.remove_db()
|
self.remove_db()
|
||||||
self.remove_pisi_files()
|
self.remove_pisi_files(self.package.pkg_dir())
|
||||||
ctx.ui.status()
|
ctx.ui.status()
|
||||||
ctx.ui.notify(pisi.ui.removed, package = self.package, files = self.files)
|
ctx.ui.notify(pisi.ui.removed, package = self.package, files = self.files)
|
||||||
|
|
||||||
@@ -360,8 +362,10 @@ class Remove(AtomicOperation):
|
|||||||
# TODO: store this somewhere
|
# TODO: store this somewhere
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def remove_pisi_files(self):
|
def remove_pisi_files(path):
|
||||||
util.clean_dir(self.package.pkg_dir())
|
util.clean_dir(path)
|
||||||
|
|
||||||
|
remove_pisi_files = staticmethod(remove_pisi_files)
|
||||||
|
|
||||||
def remove_db(self):
|
def remove_db(self):
|
||||||
ctx.installdb.remove(self.package_name)
|
ctx.installdb.remove(self.package_name)
|
||||||
|
|||||||
+6
-3
@@ -28,6 +28,7 @@ import pisi.context as ctx
|
|||||||
import pisi.lockeddbshelve as shelve
|
import pisi.lockeddbshelve as shelve
|
||||||
from pisi.files import Files
|
from pisi.files import Files
|
||||||
import pisi.util as util
|
import pisi.util as util
|
||||||
|
from pisi.util import join_path as join
|
||||||
|
|
||||||
|
|
||||||
class InstallDBError(pisi.Error):
|
class InstallDBError(pisi.Error):
|
||||||
@@ -75,15 +76,14 @@ class InstallDB:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.d = shelve.LockedDBShelf('install')
|
self.d = shelve.LockedDBShelf('install')
|
||||||
self.dp = shelve.LockedDBShelf('configpending')
|
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):
|
def close(self):
|
||||||
self.d.close()
|
self.d.close()
|
||||||
self.dp.close()
|
self.dp.close()
|
||||||
|
|
||||||
def files_name(self, pkg, version, release):
|
def files_name(self, pkg, version, release):
|
||||||
from pisi.util import join_path as join
|
pkg_dir = self.pkg_dir(pkg, version, release)
|
||||||
pkg_dir = join(ctx.config.lib_dir(), pkg + '-' + version + '-' + release)
|
|
||||||
return join(pkg_dir, ctx.const.files_xml)
|
return join(pkg_dir, ctx.const.files_xml)
|
||||||
|
|
||||||
def files(self, pkg):
|
def files(self, pkg):
|
||||||
@@ -93,6 +93,9 @@ class InstallDB:
|
|||||||
files.read(self.files_name(pkg,pkginfo.version,pkginfo.release))
|
files.read(self.files_name(pkg,pkginfo.version,pkginfo.release))
|
||||||
return files
|
return files
|
||||||
|
|
||||||
|
def pkg_dir(self, pkg, version, release):
|
||||||
|
return join(ctx.config.lib_dir(), pkg + '-' + version + '-' + release)
|
||||||
|
|
||||||
def is_recorded(self, pkg):
|
def is_recorded(self, pkg):
|
||||||
pkg = str(pkg)
|
pkg = str(pkg)
|
||||||
return self.d.has_key(pkg)
|
return self.d.has_key(pkg)
|
||||||
|
|||||||
Reference in New Issue
Block a user