]> git.ipfire.org Git - pakfire.git/commitdiff
Fix installed size of packages.
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 28 Oct 2012 13:45:28 +0000 (14:45 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 28 Oct 2012 13:45:28 +0000 (14:45 +0100)
python/pakfire/packages/base.py
python/pakfire/packages/file.py
python/pakfire/packages/packager.py
python/pakfire/packages/solv.py

index 3cc4bb21888acc1d670a3b50ccbddf762f6ee57b..543f50969d5ac6d9ddc13a9b6e1074364f26fa27 100644 (file)
@@ -114,6 +114,12 @@ class Package(object):
                if self.size:
                        items.append((_("Size"), util.format_size(self.size)))
 
+               if self.inst_size:
+                       items.append(
+                               (_("Installed size"),
+                               util.format_size(self.inst_size))
+                       )
+
                # filter dummy repository
                if not self.repo == self.pakfire.repos.dummy:
                        items.append((_("Repo"), self.repo.name))
index cc4f9fd89b103ac270b6055fca304d316b264cba..dcca26faec6183fbf95687577db03c8f5cf706e9 100644 (file)
@@ -61,7 +61,7 @@ class InnerTarFile(tarfile.TarFile):
                                log.debug("Saving capabilities for %s: %s" % (name, caps))
                                tarinfo.pax_headers["PAKFIRE.capabilities"] = caps
 
-               # Append the tar header and data to the archive.
+                       # Append the tar header and data to the archive.
                        f = tarfile.bltn_open(name, "rb")
                        self.addfile(tarinfo, f)
                        f.close()
@@ -76,6 +76,9 @@ class InnerTarFile(tarfile.TarFile):
                else:
                        self.addfile(tarinfo)
 
+               # Return the tar information about the file
+               return tarinfo
+
        def extract(self, member, path=""):
                target = os.path.join(path, member.name)
 
index 5172a6610378252087eb2585bc485aa5a324bd05..7814fbbed8d2c258035f8634c814276b01d0bb6f 100644 (file)
@@ -197,21 +197,22 @@ class Packager(object):
        def run(self):
                raise NotImplementedError
 
-       def getsize(self, filename):
-               if tarfile.is_tarfile(filename):
-                       return os.path.getsize(filename)
-
+       def getsize(self, datafile):
                size = 0
-               f = lzma.LZMAFile(filename)
+
+               if self.payload_compression == "xz":
+                       tar = InnerTarFileXz.open(datafile)
+               else:
+                       tar = InnerTarFile.open(datafile)
 
                while True:
-                       buf = f.read(BUFFER_SIZE)
-                       if not buf:
+                       m = tar.next()
+                       if not m:
                                break
 
-                       size += len(buf)
-               f.close()
+                       size += m.size
 
+               tar.close()
                return size
 
 
index 80a30c2598e5f518e1a4cc77b549fbe508cd22ca..85bf487c5e5185c6eacc643eec6606e1392501e0 100644 (file)
@@ -121,6 +121,10 @@ class SolvPackage(base.Package):
        def size(self):
                return self.solvable.get_downloadsize()
 
+       @property
+       def inst_size(self):
+               return self.solvable.get_installsize()
+
        @property
        def vendor(self):
                vendor = self.solvable.get_vendor()