def get_recursive_deps(name, result): i = pacman.db_getpkgcache(db_local) while i: pkg = pacman.void_to_PM_PKG(pacman.list_getdata(i)) pkgname = pacman.void_to_char(pacman.pkg_getinfo(pkg, pacman.PKG_NAME)) if pkgname == name: j = pacman.void_to_PM_LIST(pacman.pkg_getinfo(pkg, pacman.PKG_DEPENDS)) while j: depname = pacman.void_to_char(pacman.list_getdata(j)).split("<")[0].split(">")[0].split("=")[0] if depname not in result: result.append(depname) get_recursive_deps(depname, result) j = pacman.list_next(j) i = pacman.list_next(i)
def find_pkg(packagename): if pacman.initialize("/") == -1: fprint("initialize() failed") return False local = pacman.db_register("local") i = pacman.db_getpkgcache(local) found = False while i: pkg = pacman.void_to_PM_PKG(pacman.list_getdata(i)) pkgname = pacman.void_to_char(pacman.pkg_getinfo(pkg, pacman.PKG_NAME)) if pkgname == packagename: found = True i = pacman.list_next(i) pacman.release() return found
print "base packages which depend on packages outsite base (->base is needed)" sys.exit(0) basecats = ['base'] root = tempfile.mkdtemp() pacman.initialize(root) if os.getcwd().split('/')[-2] == "frugalware-current": treename = "frugalware-current" else: treename = "frugalware" db = pacman.db_register(treename) pacman.db_setserver(db, "file://" + os.getcwd() + "/../frugalware-%s" % sys.argv[1]) pacman.db_update(1, db) i = pacman.db_getpkgcache(db) while i: pkg = pacman.void_to_PM_PKG(pacman.list_getdata(i)) pkgname = pacman.void_to_char(pacman.pkg_getinfo(pkg, pacman.PKG_NAME)) group = pacman.void_to_char(pacman.list_getdata(pacman.void_to_PM_LIST(pacman.pkg_getinfo(pkg, pacman.PKG_GROUPS)))) if group not in basecats: i = pacman.list_next(i) continue j = pacman.void_to_PM_LIST(pacman.pkg_getinfo(pkg, pacman.PKG_DEPENDS)) while j: found = False dep = pacman.void_to_char(pacman.list_getdata(j)).split("<")[0].split(">")[0].split("=")[0] k = pacman.db_getpkgcache(db) while not found and k: p = pacman.void_to_PM_PKG(pacman.list_getdata(k)) if pacman.void_to_char(pacman.pkg_getinfo(p, pacman.PKG_NAME)) == dep: