r311 - in branches/rewrite: . src

Marco Presi partial-mirror-devel@lists.alioth.debian.org
Sat, 13 Nov 2004 10:26:53 -0700


Author: zufus
Date: Sat Nov 13 10:26:52 2004
New Revision: 311

Added:
   branches/rewrite/src/FileSystem.py
      - copied, changed from r309, branches/rewrite/src/Dir.py
Removed:
   branches/rewrite/src/Dir.py
Modified:
   branches/rewrite/TODO
   branches/rewrite/src/Dists.py
   branches/rewrite/src/Pool.py
Log:
TODO: Removed item

Dir.py: renamed to Filesystem.py.

Filesystem.py: copied uncompress method from trunk version



Modified: branches/rewrite/TODO
==============================================================================
--- branches/rewrite/TODO	(original)
+++ branches/rewrite/TODO	Sat Nov 13 10:26:52 2004
@@ -2,7 +2,6 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 Zufus's TODO:
-Rename Dir to FileSystem, and add an uncompress method
 Add a method into Pool to create a list of downloaded packages.
 
 

Modified: branches/rewrite/src/Dists.py
==============================================================================
--- branches/rewrite/src/Dists.py	(original)
+++ branches/rewrite/src/Dists.py	Sat Nov 13 10:26:52 2004
@@ -21,7 +21,7 @@
 
 
 import os
-from Dir import *
+from FileSystem import *
 from Download import *
 
 class Dists:
@@ -32,7 +32,7 @@
     def __init__ (self, backend):
         self._backend = backend
         self.__files = []
-        self._dir = Dir(backend["mirror_dir"], backend["name"])
+        self._dir = FileSystem(backend["mirror_dir"], backend["name"])
 
     def __fill_files(self):
         for c in self._backend["components"]:

Copied: branches/rewrite/src/FileSystem.py (from r309, branches/rewrite/src/Dir.py)
==============================================================================
--- branches/rewrite/src/Dir.py	(original)
+++ branches/rewrite/src/FileSystem.py	Sat Nov 13 10:26:52 2004
@@ -18,8 +18,9 @@
 
 import os
 import md5
+import gzip
 
-class Dir:
+class FileSystem:
     """
     This class provides methods to create backends dirs into the
     partial-mirror
@@ -46,7 +47,7 @@
         return True
 
     def check(self):
-        """ Check for Dir existance """
+        """ Check for FileSystem existance """
         return (self._check(self._dir))
 
     def create(self, path, debug=True):
@@ -69,7 +70,7 @@
                 print strerror
 
     def path(self):
-        """ Return Dir path """
+        """ Return FileSystem path """
         return (self._dir)
 
     def md5_on (self, file):
@@ -84,4 +85,28 @@
         md5hash.update(file_to_hash.read())
         file_to_hash.close()
         return md5
-        
+
+    def uncompress (self, f):
+        """Uncompress a file"""
+        filename = os.path.join (self._dir, f)
+        print 'Uncompressing', filename
+        # uncompress the file
+        compressedFile = gzip.GzipFile(filename, 'rb')
+        try:
+            outputFile = open(filename.split('.gz')[0], "wb")
+        except IOError, msg:
+            print msg
+            sys.exit(1)
+
+        numBytes = 0
+        while True:
+            data = compressedFile.read(64 * 1024)
+            if not data:
+                break
+            outputFile.write(data)
+            numBytes = numBytes + len(data)
+
+        compressedFile.close()
+        outputFile.close()
+        return True
+

Modified: branches/rewrite/src/Pool.py
==============================================================================
--- branches/rewrite/src/Pool.py	(original)
+++ branches/rewrite/src/Pool.py	Sat Nov 13 10:26:52 2004
@@ -18,11 +18,11 @@
 
 import os
 
-from Dir import *
+from FileSystem import *
 from PackageList import *
 import Config
 
-class Pool (Dir):
+class Pool ():
     """
     This class provides methods to create dist dirs into the
     partial-mirror
@@ -30,7 +30,8 @@
 
     def __init__(self, backend):
         self._backend = backend
-        self._backendPkgList = backend.pkglist
+        self._backendBinList = backend._bin
+        self._backendSourceList = backen._source
         self._poolPkgList = PackageList()
         self._needUpdate = PackageList()
         self._server = "%s/pool/" % (self._backend["server"])
@@ -42,7 +43,7 @@
         Look into the Backend PackageList and look for packages that
         have newer version on remote repository
         """
-        for (pkgName, pkg) in backend.pkglist.items():
+        for (pkgName, pkg) in backendList.items():
             try:
                 p = self._poolPkgList.get(pkg)
                 if p['md5sum'] != pkg['md5sum']:
@@ -51,18 +52,21 @@
                 self._needUpdate.add(pkg)
         
 
-    def update (self):
+    def update (self, self._needUpdate):
         """
         Get from remote repository new version of packages that were
         previously downloaded
         """
-        self.download (self._needUpdate)
-    
-    def download (self, plist):
+        for (pkg_name, pkg) in self._needUpdate.items():
+            filename = self._local + pkg['Section'] + '/' + pkg['Filename'] 
+            self._dir.create(os.path.dirname(filename))
+            self._get(pkg, filename)
+            
+    def _get (self, plist):
         """
         Get the a PackageList
         """
-        self._get (plist)
+        pass
 
 class RemotePool (Pool):
     """
@@ -71,10 +75,9 @@
     def __init__(self, backend):
         Pool.__init__(self, backend)
 
-    def self._get (self, plist):
-        for (pkg_name, pkg) in plist.items():
-            Download (self._server + pkg['Section'] + '/' + pkg['Filename'],
-                      self._local + pkg['Section'] + '/' + pkg['Filename'])
+    def self._get (self, pkg, filename):
+        Download (self._server + pkg['Section'] + '/' + pkg['Filename'],
+                  filename)
 
 class LocalPool (Pool):
     """
@@ -84,8 +87,8 @@
         Pool.__init__(self, backend)
         self._server = self._server.lstrip ('file://')
         
-    def self._get (plist):
-        for (pkg_name, pkg) in plist.items():
-            os.link (server + pkg['Section'] + '/' + pkg['Filename'],
-                     self._local + pkg['Section'] + '/' + pkg['Filename'])
+    def self._get (self, pkg, filename):
+            os.link (self._server + pkg['Section'] + '/' + pkg['Filename'],
+                     filename)
+