def primarymetadata_from_sqlite_factory(sqlitepath, archpath): pri_obj = PrimaryMetadata(sqlitepath, archpath) con = sqlite.Connection(sqlitepath) pri_cur = con.cursor() col_packages = ['checksum', 'name', 'arch', 'version', 'epoch', 'release', 'summary', 'description', 'url', 'time_file', 'time_build', 'license', 'vendor', 'group', 'buildhost', 'sourcerpm', 'header_start', 'header_end', 'packager', 'size_package', 'size_installed', 'size_archive', 'location', 'location_base', 'checksum_type'] pri_cur.execute('SELECT * FROM packages') for row in pri_cur: pp = PrimaryPackage() uid = row[0] for key, val in zip(col_packages, row[1:]): setattr(pp, key, val) if pp.location_base == None: pp.location_base = '' cur = con.cursor() # provides, obsoletes, conflicts for pco in ('obsoletes', 'provides', 'conflicts'): pco_set = set([]) cur.execute('SELECT * FROM %s WHERE pkgKey=?' % pco, (uid,)) for name, flag, epoch, ver, rel, _ in cur: pco_set.add((name, flag, epoch, ver, rel)) setattr(pp, pco, pco_set) # requires req_set = set([]) cur.execute('SELECT * FROM requires WHERE pkgKey=?', (uid,)) for name, flag, epoch, ver, rel, _, pre in cur: if pre == 'TRUE': pre = True else: pre = False req_set.add((name, flag, epoch, ver, rel, pre)) setattr(pp, 'requires', req_set) #files files = set([]) dirs = set([]) ghosts = set([]) cur.execute('SELECT name, type FROM files WHERE pkgKey=?', (uid,)) for filename, ftype in cur: if ftype == 'file': files.add(filename) elif ftype == 'dir': dirs.add(filename) elif ftype == 'ghost': ghosts.add(filename) pp.files = files pp.dirs = dirs pp.ghosts = ghosts pri_obj.append(pp.checksum, pp) return pri_obj
def primarymetadata_from_sqlite_factory(sqlitepath, archpath): pri_obj = PrimaryMetadata(sqlitepath, archpath) con = sqlite.Connection(sqlitepath) pri_cur = con.cursor() col_packages = [ 'checksum', 'name', 'arch', 'version', 'epoch', 'release', 'summary', 'description', 'url', 'time_file', 'time_build', 'license', 'vendor', 'group', 'buildhost', 'sourcerpm', 'header_start', 'header_end', 'packager', 'size_package', 'size_installed', 'size_archive', 'location', 'location_base', 'checksum_type' ] pri_cur.execute('SELECT * FROM packages') for row in pri_cur: pp = PrimaryPackage() uid = row[0] for key, val in zip(col_packages, row[1:]): setattr(pp, key, val) if pp.location_base == None: pp.location_base = '' cur = con.cursor() # provides, obsoletes, conflicts for pco in ('obsoletes', 'provides', 'conflicts'): pco_set = set([]) cur.execute('SELECT * FROM %s WHERE pkgKey=?' % pco, (uid, )) for name, flag, epoch, ver, rel, _ in cur: pco_set.add((name, flag, epoch, ver, rel)) setattr(pp, pco, pco_set) # requires req_set = set([]) cur.execute('SELECT * FROM requires WHERE pkgKey=?', (uid, )) for name, flag, epoch, ver, rel, _, pre in cur: if pre == 'TRUE': pre = True else: pre = False req_set.add((name, flag, epoch, ver, rel, pre)) setattr(pp, 'requires', req_set) #files files = set([]) dirs = set([]) ghosts = set([]) cur.execute('SELECT name, type FROM files WHERE pkgKey=?', (uid, )) for filename, ftype in cur: if ftype == 'file': files.add(filename) elif ftype == 'dir': dirs.add(filename) elif ftype == 'ghost': ghosts.add(filename) pp.files = files pp.dirs = dirs pp.ghosts = ghosts pri_obj.append(pp.checksum, pp) return pri_obj