Example #1
0
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