r308 - in branches/rewrite: etc src

Marco Presi partial-mirror-devel@lists.alioth.debian.org
Sat, 13 Nov 2004 08:48:00 -0700


Author: zufus
Date: Sat Nov 13 08:47:59 2004
New Revision: 308

Modified:
   branches/rewrite/etc/debpartial-mirror.conf
   branches/rewrite/src/Dists.py
   branches/rewrite/src/PackageList.py
   branches/rewrite/src/Pool.py
Log:
Pool.py: added "findUpdates" method
Dists.py: we should add a method to update BackendPackageList after we
	  updated the Packages.gz and Sources.gz
PackageList.py: fixed a simple bug in "get" method



Modified: branches/rewrite/etc/debpartial-mirror.conf
==============================================================================
--- branches/rewrite/etc/debpartial-mirror.conf	(original)
+++ branches/rewrite/etc/debpartial-mirror.conf	Sat Nov 13 08:47:59 2004
@@ -61,10 +61,10 @@
 ;; This backend is a local repository, as you can see from the use of the
 ;; file:// URL.  The idea is that we have a set of custom-made packages
 ;; stored on the local computer.
-[local_custom_packages]
-server = file:///var/lib/custom-packages
-components = main
-distributions = local
+;;[local_custom_packages]
+;;server = file:///var/lib/custom-packages
+;;components = main
+;;distributions = local
 
 ;; These packages depend on Debian official packages.  We will use the
 ;; "sarge" backend (above) to satisfy these dependencies.

Modified: branches/rewrite/src/Dists.py
==============================================================================
--- branches/rewrite/src/Dists.py	(original)
+++ branches/rewrite/src/Dists.py	Sat Nov 13 08:47:59 2004
@@ -16,6 +16,10 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 # $Id$
 
+# TODO:
+# Add a control on md5sum to check wich files has to be updated
+
+
 import os
 from Dir import *
 from Download import *
@@ -54,6 +58,12 @@
                                    % (self._backend["mirror_dir"] + self._backend["name"], d, c)
                         self.__files.append((server, filename))
 
+
+    def __updateBackendPkgList(self):
+        """Update Package List of this Backend"""
+        print "Warning! updateBackendPkgList not complete!!\n"
+        pass
+
     def create (self):
         """ Get all files """
         for f in self.__files:
@@ -64,6 +74,8 @@
         self.__fill_files()
         for f in self.__files:
             self._get(f)
+        self.__updateBackendPkgList()
+
 
     def get_index(self):
         """
@@ -98,7 +110,6 @@
         Dists.__init__(self, backend)
 
     def _get(self, file):
-        print "LocalDists::_get(self, file): Warning!! Implementing yet! %s" % file
         orig, filename = file
         self._dir.create(os.path.dirname(filename))
         os.link (orig.lstrip('file://'), filename)

Modified: branches/rewrite/src/PackageList.py
==============================================================================
--- branches/rewrite/src/PackageList.py	(original)
+++ branches/rewrite/src/PackageList.py	Sat Nov 13 08:47:59 2004
@@ -73,7 +73,7 @@
     def items(self):
         return self._name.items()
 
-    def get(self, item):
+    def get(self, key):
         if not self._name.has_key(key):
             raise PackageDoesNotExist, key
         return self._name[key]

Modified: branches/rewrite/src/Pool.py
==============================================================================
--- branches/rewrite/src/Pool.py	(original)
+++ branches/rewrite/src/Pool.py	Sat Nov 13 08:47:59 2004
@@ -19,6 +19,7 @@
 import os
 
 from Dir import *
+from PackageList import *
 import Config
 
 class Pool (Dir):
@@ -29,7 +30,36 @@
 
     def __init__(self, backend):
         self._backend = backend
-
+        self._backendPkgList = backend.pkglist
+        self._poolPkgList = PackageList()
+        self._needUpdate = PackageList()
+
+    def find_updates (self, backendList):
+        """
+        Look into the Backend PackageList and look for packages that
+        have newer version on remote repository
+        """
+        for pkg in backend.pkglist.items():
+            try:
+                p = self._poolPkgList.get(pkg)
+                if p['md5sum'] != pkg[1]['md5sum']:
+                    self._needUpdate.add(pkg)
+            except PackageDoesNotExist:
+                self._needUpdate.add(pkg)
+        
+
+    def update (self):
+        """
+        Get from remote repository new version of packages that were
+        previously downloaded
+        """
+        self.download (self, self._needUpdate)
+    
+    def download (self, plist):
+        """
+        Get the a PackageList
+        """
+        
 
 class RemotePool (Pool):
     """