r333 - in branches/rewrite: . src

Otavio Salvador partial-mirror-devel@lists.alioth.debian.org
Wed, 17 Nov 2004 05:25:35 -0700


Author: otavio
Date: Wed Nov 17 05:25:34 2004
New Revision: 333

Modified:
   branches/rewrite/   (props changed)
   branches/rewrite/src/Backend.py
Log:
 r300@nurf:  otavio | 2004-11-17T12:23:41.966220Z
 Deal with upgrade. Initial draft.


Modified: branches/rewrite/src/Backend.py
==============================================================================
--- branches/rewrite/src/Backend.py	(original)
+++ branches/rewrite/src/Backend.py	Wed Nov 17 05:25:34 2004
@@ -55,27 +55,49 @@
             item = self._cfg.getOption(key, self._name)
         except InvalidOption, msg:
             print("[%s] is not present in backend [%s]." % (key, self._name))
-            exit(1)
+            raise InvalidOption(self._name, key)
         return item
 
     def update (self):
         self._dists.update()
 
     def upgrade (self):
+        bin = PackageList()
+        source = PackageList()
+
         for f in self._dists.get_index():
             # Choose object type
             if basename(f) == 'Packages':
                 pkg = Package
-                list = self.__bin
+                list = bin
             elif basename(f) == 'Sources':
                 pkg = SourcePackage
-                list = self.__source
+                list = source
 
+            # Load file on list
             parse = apt_pkg.ParseTagFile(open(f, "r"))
-            print "Processing", f
+            print "Loading", f
             while parse.Step() == 1:
                 p = pkg(parse.Section)
                 list.add(p)
+
+        filter = []
+        try:
+            filter = self._cfg.getOption('filter', self._name)
+        except InvalidOption, e:
+            pass
+
+        # Apply filter or use as final list
+        if filter:
+            self.__bin = bin.filter(filter)
+            self.__source = source.filter(filter)
+        else:
+            self.__bin = bin
+            self.__source = source
+
+        self.__bin.resolveDepends(bin)
+
+        print len(self.__bin), len(self.__source)
             
     def remove (self):
         """ Remove backend """