### methods ###
+ def _does_provide_file(self, requires):
+ return requires.requires in self.filelist
+
def does_provide(self, requires):
if not isinstance(requires, pakfire.depsolve.Requires):
requires = pakfire.depsolve.Requires(self, requires)
return True
if requires.type == "file":
- return requires.requires in self.filelist
+ return self._does_provide_file(requires)
elif requires.type == "expr":
# Handle all expressions like "gcc>=4.0.0-1"
c.close()
+ def _does_provide_file(self, requires):
+ """
+ A faster version to find a file in the database.
+ """
+ c = self.db.cursor()
+ c.execute("SELECT pkg FROM files WHERE name = ?", (requires.requires,))
+
+ ret = False
+ for pkg in c:
+ if self.id == pkg[0]:
+ ret = True
+ break
+
+ c.close()
+
+ return ret
+
def download(self, text=""):
"""
Downloads the package from repository and returns a new instance