else:
packages = gentoolkit.find_all_packages()
+ packages = gentoolkit.sort_package_list(packages)
+
if not opts["onlyDirect"]:
+ # TODO Fix indirect dependency matching
print_info(4, "Caching indirect dependencies...")
depscache = {"":[]}
for pkg in packages:
except KeyError, e:
# If the ebuild is not found...
continue
+ # Remove duplicate deps
+ deps = unique_array(deps)
isdep = 0
- for x in deps:
- cpvs=gentoolkit.split_package_name(x[2])
- cat_match=0
- ver_match=0
- name_match=0
- if not isdepend[0] or \
- cpvs[0] == isdepend[0]:
- cat_match=1
- if not isdepend[2] or \
- ( cpvs[2] == isdepend[2] and \
- (isdepend[3] or \
- isdepend[3] == "r0" or \
- cpvs[3] == isdepend[3])):
- ver_match=1
- if cpvs[1] == isdepend[1]:
- name_match=1
- if cat_match and ver_match and name_match:
- if not isdep:
- if x[1]:
- print pkg.get_cpv(),
- if Config["verbosityLevel"] >= 4:
- print " (" +string.join(x[1],"&")+ " ? " + x[0]+x[2] + ")"
+ for dependency in deps:
+ # TODO determine if dependency is enabled by USE flag
+ # Find all packages matching the dependency
+ Config["verbosityLevel"] = 4
+ for x in gentoolkit.find_packages(dependency[0]+dependency[2]):
+ cpvs=gentoolkit.split_package_name(x.get_cpv())
+ cat_match=0
+ name_match=0
+ ver_match=0
+ # Match Category
+ if not isdepend[0] or \
+ cpvs[0] == isdepend[0]:
+ cat_match=1
+ # Match Name
+ if cpvs[1] == isdepend[1]:
+ name_match=1
+ # Match Version
+ if not isdepend[2] or \
+ ( cpvs[2] == isdepend[2] and \
+ (isdepend[3] or \
+ isdepend[3] == "r0" or \
+ cpvs[3] == isdepend[3])):
+ ver_match=1
+ if cat_match and ver_match and name_match:
+ if not isdep:
+ if dependency[1]:
+ print pkg.get_cpv(),
+ if Config["verbosityLevel"] >= 4:
+ print "(" +string.join(dependency[1],"&")+ "? " + \
+ dependency[0]+dependency[2] + ")"
+ else:
+ print
else:
- print
- else:
- print pkg.get_cpv(),
- if Config["verbosityLevel"] >= 4:
- print " (" + x[0]+x[2] + ")"
+ print pkg.get_cpv(),
+ if Config["verbosityLevel"] >= 4:
+ print "(" + dependency[0]+dependency[2] + ")"
+ else:
+ print
+ isdep = 1
+ elif Config["verbosityLevel"] >= 4:
+ if dependency[1]:
+ print " "*len(pkg.get_cpv()) + \
+ " (" + string.join(dependency[1],"&")+ " ? " + \
+ dependency[0]+dependency[2] + ")"
else:
- print
- isdep = 1
- elif Config["verbosityLevel"] >= 4:
- if x[1]:
- print " "*len(pkg.get_cpv()) + " (" +string.join(x[1],"&")+ " ? " + x[0]+x[2] + ")"
- else:
- print " "*len(pkg.get_cpv()) + " (" + x[0]+x[2] + ")"
+ print " "*len(pkg.get_cpv()) + " (" + \
+ dependency[0]+dependency[2] + ")"
if isdep and not opts["onlyDirect"] :
subdeps(pkg.get_cpv(), " ")
def shortHelp(self):
- return pp.localoption("<local-opts> ") + pp.pkgquery("pkgspec") + " - list all direct dependencies matching " + pp.pkgquery("pkgspec")
+ return pp.localoption("<local-opts> ") + pp.pkgquery("pkgspec") + " - list all direct dependencies matching " + \
+ pp.pkgquery("pkgspec")
def longHelp(self):
return "List all direct dependencies matching a query pattern" + \