def end(self): self.log.debug("finished depsolve") self.log.debug("%u updates for %u packages", self.mode_counter["u"], self.installed_packages) self.log.debug("%s", self.mode_counter) self.log.debug("%u missing reqs", len(self.missingreqs)) for tup in self.missingreqs: self.log.debug("missing: %s", formatRequire(*tup))
def _find_missing_deps(self, pkgs): """find any missing dependencies for any installed package in pkgs""" # XXX - move into rpmsack/rpmdb providers = {} # To speed depsolving, don't recheck deps that have # already been checked problems = [] for po in pkgs: for (req,flags,ver) in po.requires: if req.startswith('rpmlib'): continue # ignore rpmlib deps if (req,flags,ver) not in providers: resolve_sack = self.rpmdb.whatProvides(req,flags,ver) else: resolve_sack = providers[(req,flags,ver)] if len(resolve_sack) < 1: flags = yum.depsolve.flags.get(flags, flags) missing = miscutils.formatRequire(req,ver,flags) problems.append((po, "requires %s" % missing)) else: # Store the resolve_sack so that we can re-use it if another # package has the same requirement providers[(req,flags,ver)] = resolve_sack return problems
def end(self): self.log.debug('finished depsolve') self.log.debug('%u updates for %u packages', self.mode_counter['u'], self.installed_packages) self.log.debug('%s', self.mode_counter) self.log.debug("%u missing reqs", len(self.missingreqs)) for tup in self.missingreqs: self.log.debug("missing: %s", formatRequire(*tup))
def dump_rpm_problems(self): pkgs = {} for po in self.rpmdb.returnPackages(): tup = po.pkgtup header = po.hdr requires = zip( header[rpm.RPMTAG_REQUIRENAME], header[rpm.RPMTAG_REQUIREFLAGS], header[rpm.RPMTAG_REQUIREVERSION], ) pkgs[tup] = requires errors = [] providers = {} # To speed depsolving, don't recheck deps that have # already been checked provsomething = {} for (pkg,reqs) in sorted(pkgs.items()): for (req,flags,ver) in reqs: if ver == '': ver = None rflags = flags & 15 if req.startswith('rpmlib'): continue # ignore rpmlib deps if (req,rflags,ver) not in providers: resolve_sack = self.rpmdb.whatProvides(req,rflags,ver) else: resolve_sack = providers[(req,rflags,ver)] if len(resolve_sack) < 1: errors.append("Package %s requires %s" % (pkg[0], miscutils.formatRequire(req,ver,rflags))) else: for rpkg in resolve_sack: # Skip packages that provide something for themselves # as these can still be leaves if rpkg != pkg: provsomething[rpkg] = 1 # Store the resolve_sack so that we can re-use it if another # package has the same requirement providers[(req,rflags,ver)] = resolve_sack msg = "%%%%RPMDB PROBLEMS\n" for error in errors: msg += "%s\n" % error # possibly list all verify failures, too return msg
def dump_rpm_problems(self): pkgs = {} for po in self.rpmdb.returnPackages(): tup = po.pkgtup header = po.hdr requires = zip( header[rpm.RPMTAG_REQUIRENAME], header[rpm.RPMTAG_REQUIREFLAGS], header[rpm.RPMTAG_REQUIREVERSION], ) pkgs[tup] = requires errors = [] providers = {} # To speed depsolving, don't recheck deps that have # already been checked provsomething = {} for (pkg, reqs) in sorted(pkgs.items()): for (req, flags, ver) in reqs: if ver == '': ver = None rflags = flags & 15 if req.startswith('rpmlib'): continue # ignore rpmlib deps if (req, rflags, ver) not in providers: resolve_sack = self.rpmdb.whatProvides(req, rflags, ver) else: resolve_sack = providers[(req, rflags, ver)] if len(resolve_sack) < 1: errors.append( "Package %s requires %s" % (pkg[0], miscutils.formatRequire(req, ver, rflags))) else: for rpkg in resolve_sack: # Skip packages that provide something for themselves # as these can still be leaves if rpkg != pkg: provsomething[rpkg] = 1 # Store the resolve_sack so that we can re-use it if another # package has the same requirement providers[(req, rflags, ver)] = resolve_sack msg = "%%%%RPMDB PROBLEMS\n" for error in errors: msg += "%s\n" % error # possibly list all verify failures, too return msg
def format_missing_requires(self, po, tup): req = formatRequire(*tup) self.log.debug('MISSING REQ: %s requires %s', po, req)
def format_missing_requires(self, po, tup): req = formatRequire(*tup) self.log.debug("MISSING REQ: %s requires %s", po, req)