From 8537c16db6c709a0ee66bd06269a95b9023b9c2c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 21 Mar 2011 01:29:07 +0100 Subject: [PATCH] Enhance support for groups. Packages can now be in more than one single group and the keywords "Base" and "Critical" say if a package is considered as a critical package for the distribution or as a package which will be automatically installed by the installer. --- pakfire/constants.py | 2 +- pakfire/packages/base.py | 22 +++++++++++++++++++--- pakfire/packages/installed.py | 4 ++-- pakfire/packages/packager.py | 1 + pakfire/repository/database.py | 5 ++++- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/pakfire/constants.py b/pakfire/constants.py index 96f7eef50..83fd08d15 100644 --- a/pakfire/constants.py +++ b/pakfire/constants.py @@ -81,7 +81,7 @@ PKG_REL="%(release)s" PKG_EPOCH="%(epoch)s" PKG_UUID="%(package_uuid)s" -PKG_GROUP="%(group)s" +PKG_GROUPS="%(groups)s" PKG_ARCH="%(arch)s" PKG_MAINTAINER="%(maintainer)s" diff --git a/pakfire/packages/base.py b/pakfire/packages/base.py index df81f1c18..8f926c1a0 100644 --- a/pakfire/packages/base.py +++ b/pakfire/packages/base.py @@ -69,6 +69,7 @@ class Package(object): (_("Size"), util.format_size(self.size)), (_("Repo"), self.repo.name), (_("Summary"), self.summary), + (_("Groups"), " ".join(self.groups)), (_("URL"), self.url), (_("License"), self.license), ] @@ -113,7 +114,7 @@ class Package(object): "release" : self.release, "epoch" : self.epoch, "arch" : self.arch, - "group" : self.group, + "groups" : self.groups, "summary" : self.summary, "description" : self.description, "maintainer" : self.maintainer, @@ -205,6 +206,21 @@ class Package(object): def arch(self): raise NotImplementedError + @property + def base(self): + """ + Say if a package belongs to the basic set + that is installed by default. + """ + return "Base" in self.groups + + @property + def critical(self): + """ + Return if a package is marked "critial". + """ + return "Critical" in self.groups + @property def type(self): return self.metadata.get("TYPE", "unknown") @@ -226,8 +242,8 @@ class Package(object): return self.metadata.get("PKG_DESCRIPTION") @property - def group(self): - return self.metadata.get("PKG_GROUP") + def groups(self): + return self.metadata.get("PKG_GROUPS", "").split() @property def url(self): diff --git a/pakfire/packages/installed.py b/pakfire/packages/installed.py index d04f34912..2713fb8a8 100644 --- a/pakfire/packages/installed.py +++ b/pakfire/packages/installed.py @@ -76,8 +76,8 @@ class DatabasePackage(Package): return self.metadata.get("description") @property - def group(self): - return self.metadata.get("group") + def groups(self): + return self.metadata.get("groups", "").split() @property def build_date(self): diff --git a/pakfire/packages/packager.py b/pakfire/packages/packager.py index 5b527fae6..a3b1a9577 100644 --- a/pakfire/packages/packager.py +++ b/pakfire/packages/packager.py @@ -45,6 +45,7 @@ class Packager(object): "provides" : "", } self.info.update(self.pkg.info) + self.info["groups"] = " ".join(self.info["groups"]) self.info.update(self.pakfire.distro.info) self.info.update(self.env.info) diff --git a/pakfire/repository/database.py b/pakfire/repository/database.py index 34ed9df18..e360e2079 100644 --- a/pakfire/repository/database.py +++ b/pakfire/repository/database.py @@ -104,6 +104,7 @@ class PackageDatabase(Database): version TEXT, release TEXT, arch TEXT, + groups TEXT, filename TEXT, size INTEGER, hash1 TEXT, @@ -181,6 +182,7 @@ class RemotePackageDatabase(PackageDatabase): version, release, arch, + groups, filename, size, hash1, @@ -196,13 +198,14 @@ class RemotePackageDatabase(PackageDatabase): build_host, build_date, build_time - ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", + ) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", ( pkg.name, pkg.epoch, pkg.version, pkg.release, pkg.arch, + " ".join(pkg.groups), filename, pkg.size, pkg.hash1, -- 2.39.5