Пример #1
0
 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))
Пример #2
0
 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
Пример #3
0
 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))
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
 def format_missing_requires(self, po, tup):
     req = formatRequire(*tup)
     self.log.debug('MISSING REQ: %s requires %s', po, req)
Пример #7
0
 def format_missing_requires(self, po, tup):
     req = formatRequire(*tup)
     self.log.debug("MISSING REQ: %s requires %s", po, req)