Ticket #176: repoclosure-with-obsoletes.patch

File repoclosure-with-obsoletes.patch, 1.6 kB (added by skvidal, 3 years ago)
  • a/repoclosure.py

    old new  
    2929from yum.misc import getCacheDir 
    3030from optparse import OptionParser 
    3131import rpmUtils.arch 
     32import rpmUtils.updates 
    3233from yum.constants import * 
    3334from yum.packageSack import ListPackageSack 
    3435 
     
    114115    def getBrokenDeps(self, newest=False): 
    115116        unresolved = {} 
    116117        resolved = {} 
     118        pkgs = self.pkgSack 
    117119        if newest: 
    118120            pkgs = self.pkgSack.returnNewestByNameArch() 
    119         else: 
    120             pkgs = self.pkgSack 
     121            mypkgSack = ListPackageSack(pkgs) 
     122            pkgtuplist = mypkgSack.simplePkgList() 
     123             
     124            # toss out any of the obsoleted pkgs so we can't depsolve with them 
     125            self.up = rpmUtils.updates.Updates([], pkgtuplist) 
     126            self.up.rawobsoletes = mypkgSack.returnObsoletes() 
     127            for pkg in pkgs: 
     128                fo = self.up.checkForObsolete([pkg.pkgtup]) 
     129                if fo: 
     130                    print "ignoring obsolete pkg %s" % pkg 
     131                    for i in fo[pkg.pkgtup]: 
     132                        print i 
     133                    self.pkgSack.delPackage(pkg) 
    121134 
    122         mypkgSack = ListPackageSack(pkgs) 
    123         pkgtuplist = mypkgSack.simplePkgList() 
     135            # we've deleted items so remake the pkgs 
     136            pkgs = self.pkgSack.returnNewestByNameArch() 
     137            pkgtuplist = mypkgSack.simplePkgList() 
    124138         
    125139        if self.builddeps: 
    126140            pkgs = filter(lambda x: x.arch == 'src', pkgs)