Ticket #13: yum-update.patch

File yum-update.patch, 3.0 kB (added by bergolth, 3 years ago)

only update packages that are not going to be removed in the current transaction

  • yum/__init__.py

    old new  
    26422642        if not po and not kwargs: # update everything (the easy case) 
    26432643            self.verbose_logger.log(logginglevels.DEBUG_2, _('Updating Everything')) 
    26442644            for (obsoleting, installed) in obsoletes: 
    2645                 obsoleting_pkg = self.getPackageObject(obsoleting) 
    2646                 installed_pkg =  self.rpmdb.searchPkgTuple(installed)[0] 
    2647                 txmbr = self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg) 
    2648                 self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg) 
    2649                 if requiringPo: 
    2650                     txmbr.setAsDep(requiringPo) 
    2651                 tx_return.append(txmbr) 
     2645                if not self.tsInfo.getMembersWithState(installed, TS_REMOVE_STATES): 
     2646                    obsoleting_pkg = self.getPackageObject(obsoleting) 
     2647                    installed_pkg =  self.rpmdb.searchPkgTuple(installed)[0] 
     2648                    txmbr = self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg) 
     2649                    self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg) 
     2650                    if requiringPo: 
     2651                        txmbr.setAsDep(requiringPo) 
     2652                    tx_return.append(txmbr) 
    26522653                 
    26532654            for (new, old) in updates: 
    26542655                if self.tsInfo.isObsoleted(pkgtup=old): 
    26552656                    self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already obsoleted: %s.%s %s:%s-%s'),  
    26562657                        old) 
    26572658                else: 
    2658                     updating_pkg = self.getPackageObject(new) 
    2659                     updated_pkg = self.rpmdb.searchPkgTuple(old)[0] 
    2660                     txmbr = self.tsInfo.addUpdate(updating_pkg, updated_pkg) 
    2661                     if requiringPo: 
    2662                         txmbr.setAsDep(requiringPo) 
    2663                     tx_return.append(txmbr) 
     2659                    if not self.tsInfo.getMembersWithState(old, TS_REMOVE_STATES): 
     2660                        updating_pkg = self.getPackageObject(new) 
     2661                        updated_pkg = self.rpmdb.searchPkgTuple(old)[0] 
     2662                        txmbr = self.tsInfo.addUpdate(updating_pkg, updated_pkg) 
     2663                        if requiringPo: 
     2664                            txmbr.setAsDep(requiringPo) 
     2665                        tx_return.append(txmbr) 
    26642666             
    26652667            return tx_return 
    26662668 
     
    27402742        # TODO: we should search the updates and obsoletes list and 
    27412743        # mark the package being updated or obsoleted away appropriately 
    27422744        # and the package relationship in the tsInfo 
    2743          
     2745 
     2746        # check if the packages to upgrade are already in the transaction set 
     2747        for installed_pkg in instpkgs: 
     2748            toerase = self.tsInfo.getMembersWithState(installed_pkg.pkgtup, TS_REMOVE_STATES) 
     2749            if toerase: 
     2750                self.tsInfo.remove(toerase[0]) 
    27442751 
    27452752        # check for obsoletes first 
    27462753        if self.conf.obsoletes: