def look_for_maintainers(self): pkg_md = MetaDataXML(self.metadata, herds=None) for maint in pkg_md.maintainers(): self.maintainers.append(maint.email) if len(self.maintainers) == 0: self.maintainers.append('*****@*****.**')
def rdeps_with_slot(slot_rdeps, slot=None): """ Prints a list of rev-deps which depend on the specified package and slot """ pkg_maints = {} pkg_herds = {} if not slot_rdeps.has_key(slot): # No rdeps using the given slot return print "-------------------------------" print "All packages:" print "-------------------------------" for pkg in slot_rdeps[slot]: pkg_md = MetaDataXML(get_md_path(pkg), get_herds()) for herd in pkg_md.herds(): if not pkg_herds.has_key(herd): pkg_herds[herd] = [] pkg_herds[herd].append(pkg) for maint in pkg_md.maintainers(): if not pkg_maints.has_key(maint.email): pkg_maints[maint.email] = [] pkg_maints[maint.email].append(pkg) print "\t%s\therds: " % pkg, for i in pkg_md.herds(): print "%s" % i, print "\tmaintainers: ", for i in pkg_md.maintainers(): print "%s" % i.email, print print "-------------------------------" print "Herd packages:" print "-------------------------------" for (herd, pkgs) in pkg_herds.iteritems(): print "Herd: %s" % herd for pkg in pkgs: print "\t%s" % pkg print "-------------------------------" print "Maintainer packages:" print "-------------------------------" for (maint, pkgs) in pkg_maints.iteritems(): print "Maintainer: %s" % maint for pkg in pkgs: print "\t%s" % pkg
def rdeps_with_slot(slot_rdeps, slot=None): """ Prints a list of rev-deps which depend on the specified package and slot """ pkg_maints = {} pkg_herds = {} if not slot_rdeps.has_key(slot): # No rdeps using the given slot return print "-------------------------------" print "All packages:" print "-------------------------------" for pkg in slot_rdeps[slot]: pkg_md = MetaDataXML(get_md_path(pkg), get_herds()) for herd in pkg_md.herds(): if not pkg_herds.has_key(herd): pkg_herds[herd] = [] pkg_herds[herd].append(pkg) for maint in pkg_md.maintainers(): if not pkg_maints.has_key(maint.email): pkg_maints[maint.email] = [] pkg_maints[maint.email].append(pkg) print '\t%s\therds: ' % pkg, for i in pkg_md.herds(): print '%s' % i, print '\tmaintainers: ', for i in pkg_md.maintainers(): print '%s' % i.email, print print "-------------------------------" print "Herd packages:" print "-------------------------------" for (herd, pkgs) in pkg_herds.iteritems(): print 'Herd: %s' % herd for pkg in pkgs: print '\t%s' % pkg print "-------------------------------" print "Maintainer packages:" print "-------------------------------" for (maint, pkgs) in pkg_maints.iteritems(): print 'Maintainer: %s' % maint for pkg in pkgs: print '\t%s' % pkg
def maintainers(self): # yes, seriously, the only API portage has is direct parser # for the XML file xml_path = os.path.join(os.path.dirname(self.path), 'metadata.xml') try: meta = MetaDataXML(xml_path, None) except (IOError, OSError) as e: if e.errno == errno.ENOENT: return () raise return tuple(PortagePackageMaintainer(m) for m in meta.maintainers())
def findpackagedepslotops(porttree, cpv): depstr = porttree.dbapi.aux_get(cpv, ["RDEPEND"])[0] cleandeps = portage.dep.paren_reduce(depstr) for indep in portage.dep.flatten(cleandeps): if (portage.dep.isvalidatom(indep)): indepslot = portage.dep.dep_getslot(indep) if indepslot == None or not indepslot.endswith("="): allavail = porttree.dep_match(indep) for inallavail in portage.dep.flatten(allavail): slot = porttree.dbapi.aux_get(inallavail, ["SLOT"])[0] if slot.find("/") > 0: category, pkgname, version, rev = portage.catpkgsplit(cpv) ebuild, path = porttree.dbapi.findname2(cpv) metxml = path+"/"+category+"/"+pkgname+"/metadata.xml" maints=[] try: pkg_md = MetaDataXML(metxml,"/usr/portage/metadata/herds.xml") for maint in pkg_md.maintainers(): maints.append(maint.email) except IOError: pass print cpv + " - " + inallavail + " - " + slot + " - " + ', '.join(maints)