self.db = db
self._data = {}
+ self._filelist = None
for key in data.keys():
self._data[key] = data[key]
@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):
- return self.metadata.get("provides", "").split()
+ return self.metadata.get("provides", "").splitlines()
@property
def requires(self):
- return self.metadata.get("requires", "").split()
+ return self.metadata.get("requires", "").splitlines()
@property
def conflicts(self):
- return self.metadata.get("conflicts", "").split()
+ return self.metadata.get("conflicts", "").splitlines()
@property
def obsoletes(self):
- return self.metadata.get("obsoletes", "").split()
+ return self.metadata.get("obsoletes", "").splitlines()
+
+ @property
+ def recommends(self):
+ recommends = self.metadata.get("recommends", None)
+
+ if recommends:
+ return recommends.splitlines()
+
+ return []
+
+ @property
+ def suggests(self):
+ suggests = self.metadata.get("suggests", None)
+
+ if suggests:
+ return suggests.splitlines()
+
+ return []
@property
def hash1(self):
@property
def filename(self):
- return self.metadata.get("filename") # XXX basename?
+ return self.metadata.get("filename")
@property
def filelist(self):
- filelist = []
+ if self._filelist is None:
+ self._filelist = []
- c = self.db.cursor()
- c.execute("SELECT id FROM files WHERE pkg = ?", (self.id,))
+ c = self.db.cursor()
+ c.execute("SELECT * FROM files WHERE pkg = ?", (self.id,))
- for id in c:
- file = pakfire.filelist.FileDatabase(self.pakfire, self.db, id[0])
- filelist.append(file)
+ for row in c.fetchall():
+ file = pakfire.filelist.FileDatabase(self.pakfire, self.db, row["id"], row)
+ self._filelist.append(file)
- return filelist
+ return self._filelist
@property
def configfiles(self):
return ret
+ @property
+ def datafiles(self):
+ ret = []
+
+ for file in self.filelist:
+ if not file.is_datafile():
+ continue
+
+ ret.append(file)
+
+ return ret
+
def _does_provide_file(self, requires):
"""
A faster version to find a file in the database.
self._remove_files(remove_files, message, prefix)
+ @property
+ def signatures(self):
+ # Database packages do not have any signatures.
+ return []
+
# XXX maybe we can remove this later?
class InstalledPackage(DatabasePackage):