[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Please unblock aptfs 0.6



Hi -release,

Please unblock aptfs 0.6:

 * debian/changelog entry:

   aptfs (0.6) unstable; urgency=low
 
    * Don't ignore source packages which contain a period (".") in their name
    * Remove temporary directory if download fails.
    * Move to Debhelper 7.
 
    -- Chris Lamb <chris@chris-lamb.co.uk>  Sun, 17 Aug 2008 22:05:14 +0100

 * diffstat for detailed changes:

     aptfs.py    |    6 +++++-
     download.py |    7 +++++--
     util.py     |    2 +-
     3 files changed, 11 insertions(+), 4 deletions(-)

     The corresponding patch is attached.

 * detail:

   - Packages with periods in their names (eg. "linux-2.6") were not present
     in the directory listing. This was caused by the '.' character being
     treated literally instead of as a metacharacter for a regex.

             util.py     |    2 +-
             1 files changed, 1 insertions(+), 1 deletions(-)

   - Temporary directories were not being cleaned-up if the download failed.
     This is a particular problem if all the remaining disk space was
     consumed by the extraction as it is never cleaned up, causing
     headaches. This was reported (on IRC) by Tim Retout <tim@retout.co.uk>. 

             aptfs.py    |    6 +++++-
             download.py |    7 +++++--
             2 files changed, 10 insertions(+), 3 deletions(-)

   - The rest of the patch is noise from moving to dh7.


Thank-you for your attention (and efforts towards the Lenny release).


Regards,

-- 
Chris Lamb, UK                                       chris@chris-lamb.co.uk
                                                            GPG: 0x634F9A20
diff --git a/AptFs/aptfs.py b/AptFs/aptfs.py
index eb59996..3eff4e4 100644
--- a/AptFs/aptfs.py
+++ b/AptFs/aptfs.py
@@ -83,7 +83,11 @@ class AptFs(Fuse):
 
         pkg, target = parse_path()
         if target is None:
-            target = download(pkg, self.temp_dir, self.secure)
+            try:
+                target = download(pkg, self.temp_dir, self.secure)
+            except DownloadError, e:
+                shutil.rmtree(e.dir)
+                raise
             self.source_packages[pkg] = target
             self.window.insert(0, pkg)
 
diff --git a/AptFs/download.py b/AptFs/download.py
index 53c96a7..bb3674b 100644
--- a/AptFs/download.py
+++ b/AptFs/download.py
@@ -20,7 +20,10 @@ import tempfile
 import commands
 import os
 
-class DownloadError(Exception): pass
+class DownloadError(Exception):
+    def __init__(self, output, dir):
+        super(DownloadError, self).__init__(self, output)
+        self.dir = dir
 
 def download(srcpkg, tempdir=None, secure=False):
     '''
@@ -52,7 +55,7 @@ def download(srcpkg, tempdir=None, secure=False):
     status, output = commands.getstatusoutput(' && '.join(cmds))
 
     if status != 0:
-        raise DownloadError(output)
+        raise DownloadError(output, dir)
 
     for fname in os.listdir(dir):
         path = os.path.join(dir, fname)
diff --git a/AptFs/util.py b/AptFs/util.py
index 4c12e70..9b10ce7 100644
--- a/AptFs/util.py
+++ b/AptFs/util.py
@@ -50,7 +50,7 @@ def package_info():
     if not glob.glob('/var/lib/apt/lists/*_Sources'):
         raise StopIteration()
 
-    stdout, stdin = popen2.popen2('grep-dctrl -S . --invert-match --no-field-names --show-field=Package,Binary /var/lib/apt/lists/*_Sources')
+    stdout, stdin = popen2.popen2('grep-dctrl -FSource:Package --regex . --no-field-names --show-field=Package,Binary /var/lib/apt/lists/*_Sources')
 
     for line in stdout:
         source_package = line.strip()

Attachment: signature.asc
Description: PGP signature


Reply to: