[Uludag-commits] r14662 - branches/pisi-1.1/pisi

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
2 Tem 2007 Pzt 22:06:12 EEST


Author: faik
Date: Mon Jul  2 22:06:12 2007
New Revision: 14662

Modified:
   branches/pisi-1.1/pisi/index.py
   branches/pisi-1.1/pisi/operations.py
   branches/pisi-1.1/pisi/packagedb.py
Log:
- Remove Obsoletes



Modified: branches/pisi-1.1/pisi/index.py
=================================================================
--- branches/pisi-1.1/pisi/index.py	(original)
+++ branches/pisi-1.1/pisi/index.py	Mon Jul  2 22:06:12 2007
@@ -126,6 +126,7 @@
         for comp in self.components:
             ctx.componentdb.update_component(comp, repo, txn)
         ctx.packagedb.remove_repo(repo, txn=txn)
+        ctx.packagedb.add_obsoletes(self.distribution.obsoletes, repo, txn=txn)
         for pkg in self.packages:
             ctx.packagedb.add_package(pkg, repo, txn=txn)
             update_progress()

Modified: branches/pisi-1.1/pisi/operations.py
=================================================================
--- branches/pisi-1.1/pisi/operations.py	(original)
+++ branches/pisi-1.1/pisi/operations.py	Mon Jul  2 22:06:12 2007
@@ -226,6 +226,12 @@
     if remove(conflicts, ignore_dep=True, ignore_safety=True):
         raise Error(_("Conflicts remain"))
 
+def remove_obsoleted_packages():
+    obsoletes = filter(ctx.installdb.is_installed, ctx.packagedb.get_obsoletes())
+    if obsoletes:
+        if remove(obsoletes, ignore_dep=True, ignore_safety=True):
+            raise Error(_("Obsoleted packages remaining"))
+
 def check_conflicts(order, packagedb):
     """check if upgrading to the latest versions will cause havoc
     done in a simple minded way without regard for dependencies of
@@ -498,6 +504,8 @@
 
     if replaces:
         remove_replaced_packages(order, replaces)
+
+    remove_obsoleted_packages()
     
     for path in paths:
         ctx.ui.info(util.colorize(_("Installing %d / %d") % (paths.index(path)+1, len(paths)), "yellow"))

Modified: branches/pisi-1.1/pisi/packagedb.py
=================================================================
--- branches/pisi-1.1/pisi/packagedb.py	(original)
+++ branches/pisi-1.1/pisi/packagedb.py	Mon Jul  2 22:06:12 2007
@@ -40,16 +40,19 @@
     def __init__(self):
         self.d = pisi.itembyrepodb.ItemByRepoDB('package')
         self.dr = pisi.itembyrepodb.ItemByRepoDB('revdep')
+        self.do = pisi.itembyrepodb.ItemByRepoDB('obsoleted')
         self.drp = pisi.itembyrepodb.ItemByRepoDB('replaces')
 
     def close(self):
         self.d.close()
         self.dr.close()
+        self.do.close()
         self.drp.close()
 
     def destroy(self):
         self.d.destroy()
         self.dr.destroy()
+        self.do.destroy()
         self.drp.destroy()
 
     def has_package(self, name, repo=None, txn = None):
@@ -67,6 +70,14 @@
     def which_repo(self, name, txn = None):
         return self.d.which_repo(name, txn=txn)
 
+    def get_obsoletes(self, repo=None):
+        obsoletes = []
+        for r in self.do.list(repo):
+            obsoletes.extend(self.do.get_item(r, repo))
+
+        replaces = self.get_replaces(repo)
+        return set(str(o) for o in obsoletes) - set(replaces.keys())
+    
     # replacesdb holds the info about the replaced packages (ex. gaim -> pidgin)
     def get_replaces(self, repo = None):
         pairs = {}
@@ -94,6 +105,11 @@
     def list_packages(self, repo=None):
         return self.d.list(repo)
 
+    def add_obsoletes(self, obsoletes, repo, txn = None):
+        def proc(txn):
+            self.do.add_item(repo, obsoletes, repo, txn)
+        ctx.txn_proc(proc, txn)
+
     def add_package(self, package_info, repo, txn = None):
         name = str(package_info.name)
 
@@ -120,6 +136,7 @@
     def clear(self, txn = None):
         self.d.clear()
         self.dr.clear()
+        self.do.clear()
         self.drp.clear()
 
     def remove_package(self, name, repo = None, txn = None):
@@ -151,6 +168,7 @@
         def proc(txn):
             self.d.remove_repo(repo, txn=txn)
             self.dr.remove_repo(repo, txn=txn)
+            self.do.remove_repo(repo, txn=txn)
             self.drp.remove_repo(repo, txn=txn)
         self.d.txn_proc(proc, txn)
 


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi