diff -u smart-1.3/debian/changelog smart-1.3/debian/changelog --- smart-1.3/debian/changelog +++ smart-1.3/debian/changelog @@ -1,3 +1,9 @@ +smart (1.3-1.3ubuntu0.1) natty-proposed; urgency=low + + * Fix for dealing with incorrect installed-size fields. (LP: #512302) + + -- Andreas Hasenack Mon, 30 May 2011 16:33:16 -0300 + smart (1.3-1.3build1) natty; urgency=low * Rebuild to add support for python 2.7. only in patch2: unchanged: --- smart-1.3.orig/debian/patches/04_invalid_installed_size.patch +++ smart-1.3/debian/patches/04_invalid_installed_size.patch @@ -0,0 +1,63 @@ +=== modified file 'smart/backends/deb/loader.py' +--- smart/backends/deb/loader.py 2010-01-30 11:30:17 +0000 ++++ smart/backends/deb/loader.py 2010-03-05 11:40:53 +0000 +@@ -74,7 +74,10 @@ + def getInstalledSize(self): + size = self._dict.get("installed-size") + if size: +- return long(size)*1024 ++ try: ++ return long(size)*1024 ++ except ValueError: ++ pass + return None + + def getDescription(self): + +=== modified file 'smart/backends/rpm/metadata.py' +--- smart/backends/rpm/metadata.py 2010-02-03 11:47:52 +0000 ++++ smart/backends/rpm/metadata.py 2010-03-05 11:40:53 +0000 +@@ -225,7 +225,8 @@ + + elif tag == SIZE: + info["size"] = int(elem.get("package")) +- info["installed_size"] = int(elem.get("installed")) ++ if elem.get("installed"): ++ info["installed_size"] = int(elem.get("installed")) + + elif tag == CHECKSUM: + info[elem.get("type")] = elem.text + +=== modified file 'tests/debloader.py' +--- tests/debloader.py 2008-08-04 19:58:07 +0000 ++++ tests/debloader.py 2010-03-05 11:40:53 +0000 +@@ -33,6 +33,11 @@ + tf.advanceSection() + yield tf, offset + ++ def getDict(self, pkg): ++ for offset, section in enumerate(self.fake_sections): ++ tf = TagFile(StringIO(section)) ++ tf.advanceSection() ++ return tf.copy() + + class DebLoaderTest(unittest.TestCase): + +@@ -78,3 +83,16 @@ + self.assertEquals(breaks.relation, "=") + self.assertEquals(breaks.version, "1.0") + self.assertEquals(type(breaks), DebBreaks) ++ ++ def test_badsize(self): ++ section = SMARTPM_SECTION.replace("Installed-Size: 2116\n", \ ++ "Installed-Size: 123M\n") ++ self.loader.fake_sections = [section] ++ self.loader.load() ++ packages = self.cache.getPackages() ++ info = self.loader.getInfo(packages[0]) ++ try: ++ self.assertEquals(info.getInstalledSize(), None) ++ except ValueError, e: ++ self.fail(e) ++ +