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)
+