From: Michael Tremer Date: Sat, 19 Feb 2011 21:58:52 +0000 (+0100) Subject: Add some auto-requirements to all packages to identify them. X-Git-Tag: 0.9.3~165 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=da77e6faacb52e5dc896c745d780a4c2f7576df3;p=pakfire.git Add some auto-requirements to all packages to identify them. --- diff --git a/pakfire/depsolve.py b/pakfire/depsolve.py index 5bac3cb98..cdbe40c15 100644 --- a/pakfire/depsolve.py +++ b/pakfire/depsolve.py @@ -149,7 +149,6 @@ class DependencySet(object): logging.info(" --> Adding package to dependency set: %s" % pkg.friendly_name) self.__packages.append(pkg) - self.add_provides(pkg.name, pkg) for prov in pkg.provides: self.add_provides(prov, pkg) diff --git a/pakfire/packages/base.py b/pakfire/packages/base.py index 5a562c3f0..d9be6c4b7 100644 --- a/pakfire/packages/base.py +++ b/pakfire/packages/base.py @@ -190,6 +190,17 @@ class Package(object): def build_id(self): return self.metadata.get("BUILD_ID") + @property + def _provides(self): + # Make package identifyable by its name and version/release tuples. + provides = [ + self.name, + "%s=%s-%s" % (self.name, self.version, self.release), + "%s=%s:%s-%s" % (self.name, self.epoch, self.version, self.release), + ] + + return provides + ### methods ### def does_provide(self, requires): diff --git a/pakfire/packages/binary.py b/pakfire/packages/binary.py index cb3273795..c58b2df32 100644 --- a/pakfire/packages/binary.py +++ b/pakfire/packages/binary.py @@ -26,7 +26,14 @@ class BinaryPackage(FilePackage): @property def provides(self): - return self.metadata.get("PKG_PROVIDES").split() + provides = self.metadata.get("PKG_PROVIDES").split() + + # Add autoprovides + for prov in self._provides: + if not prov in provides: + provides.append(prov) + + return provides @property def conflicts(self): diff --git a/pakfire/packages/installed.py b/pakfire/packages/installed.py index 54381bdd5..8b727baaa 100644 --- a/pakfire/packages/installed.py +++ b/pakfire/packages/installed.py @@ -86,12 +86,14 @@ class DatabasePackage(Package): @property def provides(self): - provides = self.metadata.get("provides") - - if provides: - return provides.split() + provides = self.metadata.get("provides", "").split() - return [] + # Add autoprovides + for prov in self._provides: + if not prov in provides: + provides.append(prov) + + return provides @property def requires(self):