]> git.ipfire.org Git - pakfire.git/commitdiff
Enhance support for groups.
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Mar 2011 00:29:07 +0000 (01:29 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 21 Mar 2011 00:29:07 +0000 (01:29 +0100)
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
pakfire/packages/base.py
pakfire/packages/installed.py
pakfire/packages/packager.py
pakfire/repository/database.py

index 96f7eef502f510d76d63d505c0afd8fcf1abdfc5..83fd08d158ea0042eb1c208047dfcf1dc7b64d12 100644 (file)
@@ -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"
index df81f1c18267e85c4a4ea968f185c910e7cfc661..8f926c1a0c7d8a38faac6498936a62d4d9281324 100644 (file)
@@ -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):
index d04f34912b7fb54a292b90eb7059add04cfe0e2e..2713fb8a8f18ef4ababaa56087ec6102e0ccefdb 100644 (file)
@@ -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):
index 5b527fae6fe7208664268a0f6ee41ca35e306eed..a3b1a957771bd4b9d0cc3e419040368cb75c8edb 100644 (file)
@@ -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)
 
index 34ed9df1887a48f2503bb534d20d48e268dcbeff..e360e20798c535c1d127cbc0ce703b8051e4503e 100644 (file)
@@ -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,