#!/usr/bin/env python import pacman, os, tempfile, shutil, sys, re arch = "i686" root = tempfile.mkdtemp() pacman.initialize(root) db = pacman.db_register("frugalware-current") pacman.db_setserver(db, "file:///home/ftp/pub/frugalware/frugalware-current/frugalware-i686") pacman.db_update(1, db) num = 0 # first collect the full pkg list pkgs = [] 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[-6:] == "-extra": i = pacman.list_next(i) continue pkgs.append(pkgname) i = pacman.list_next(i) print "original list count: %s" % len(pkgs) # now remove the depends 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[-6:] == "-extra": i = pacman.list_next(i) continue j = pacman.void_to_PM_LIST(pacman.pkg_getinfo(pkg, pacman.PKG_DEPENDS)) while j: dep = pacman.void_to_char(pacman.list_getdata(j)).split("<")[0].split(">")[0].split("=")[0] try: pkgs.remove(dep) #print "removed %s as it's a dependency for %s" % (dep, pkgname) except ValueError: pass j = pacman.list_next(j) i = pacman.list_next(i) print "stripped list count: %s" % len(pkgs) print "pkg list:" print "\n".join(pkgs) pacman.release() shutil.rmtree(root)