diff --git a/chkdep b/chkdep index 1ad1617..86898a0 100755 --- a/chkdep +++ b/chkdep @@ -13,24 +13,29 @@ from modulefinder import ModuleFinder def usage(): os.system("man chkdep") -def rmdupdeps(deps): - depdeps = [] - newdeps = [] +getdeps_deps = [] +def getdeps(root): 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)) - # we don't allow pkgname in depdeps to handle dep cycles - if pkgname in deps and pkgname not in depdeps and pkgname not in ignorepkgs: + if pkgname == root: 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] - if dep not in depdeps: - if trace: - print "%s will be ignored if found, as %s already depends on it." % (dep, pkgname) - depdeps.append(dep) + if dep not in getdeps_deps: + getdeps_deps.append(dep) + getdeps(dep) j = pacman.list_next(j) + break i = pacman.list_next(i) + return getdeps_deps + +def rmdupdeps(deps): + depdeps = [] + newdeps = [] + for i in deps: + depdeps.extend(getdeps(i)) for i in deps: if i not in depdeps and i not in ignorepkgs: newdeps.append(i)