From: Michael Tremer Date: Sat, 2 Mar 2013 18:45:55 +0000 (+0000) Subject: database: Save installed package size. X-Git-Tag: 0.9.25~2 X-Git-Url: http://git.ipfire.org/?p=people%2Fms%2Fpakfire.git;a=commitdiff_plain;h=ba5dc63943a55af9b178d0bc6e407e2fc9a67ba2 database: Save installed package size. --- diff --git a/python/pakfire/constants.py b/python/pakfire/constants.py index 206b1f65..5dc89715 100644 --- a/python/pakfire/constants.py +++ b/python/pakfire/constants.py @@ -75,8 +75,8 @@ PACKAGE_FORMATS_SUPPORTED = [0, 1, 2, 3, 4, 5] PACKAGE_EXTENSION = "pfm" MAKEFILE_EXTENSION = "nm" -DATABASE_FORMAT = 5 -DATABASE_FORMATS_SUPPORTED = [0, 1, 2, 3, 4, 5] +DATABASE_FORMAT = 6 +DATABASE_FORMATS_SUPPORTED = [0, 1, 2, 3, 4, 5, 6] PACKAGE_FILENAME_FMT = "%(name)s-%(version)s-%(release)s.%(arch)s.%(ext)s" diff --git a/python/pakfire/packages/installed.py b/python/pakfire/packages/installed.py index 910e965b..e216459c 100644 --- a/python/pakfire/packages/installed.py +++ b/python/pakfire/packages/installed.py @@ -141,8 +141,14 @@ class DatabasePackage(Package): @property def inst_size(self): - # XXX to be done - return 0 + inst_size = self.metadata.get("inst_size", None) + + # As install size has not always been saved in the database + # use the package size instead. + if inst_size is None: + return self.size + + return inst_size @property def provides(self): diff --git a/python/pakfire/repository/database.py b/python/pakfire/repository/database.py index 23bb64cc..fc8a1a94 100644 --- a/python/pakfire/repository/database.py +++ b/python/pakfire/repository/database.py @@ -31,6 +31,7 @@ log = logging.getLogger("pakfire") import pakfire.packages as packages from pakfire.constants import * +from pakfire.errors import * from pakfire.i18n import _ class Cursor(sqlite3.Cursor): @@ -264,6 +265,9 @@ class DatabaseLocal(Database): if self.format < 5: c.execute("ALTER TABLE files ADD COLUMN datafile INTEGER AFTER config") + if self.format < 6: + c.execute("ALTER TABLE packages ADD COLUMN inst_size INTEGER AFTER size") + # In the end, we can easily update the version of the database. c.execute("UPDATE settings SET val = ? WHERE key = 'version'", (DATABASE_FORMAT,)) self.__format = DATABASE_FORMAT @@ -287,6 +291,7 @@ class DatabaseLocal(Database): groups, filename, size, + inst_size, hash1, provides, requires, @@ -306,7 +311,7 @@ class DatabaseLocal(Database): installed, repository, reason - ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", + ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", ( pkg.name, pkg.epoch, @@ -316,6 +321,7 @@ class DatabaseLocal(Database): " ".join(pkg.groups), pkg.filename, pkg.size, + pkg.inst_size, pkg.hash1, "\n".join(pkg.provides), "\n".join(pkg.requires),