[yum-git] 2 commits - yum/depsolve.py yum/__init__.py

Florian Festi ffesti at linux.duke.edu
Wed Jan 16 11:00:32 UTC 2008


 yum/__init__.py |   17 ++++++++++++++++-
 yum/depsolve.py |    2 +-
 2 files changed, 17 insertions(+), 2 deletions(-)

New commits:
commit 3ac9eebc0c63b6ca3c9affdf6b0f3dd8a4f98ede
Author: Florian Festi <ffesti at redhat.com>
Date:   Wed Jan 16 12:00:09 2008 +0100

    Remove updated/obsoleted txmbr when removing deps during skip-broken

diff --git a/yum/__init__.py b/yum/__init__.py
index a5e793e..c4173a0 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -659,6 +659,9 @@ class YumBase(depsolve.Depsolve):
 
     def _getDepsToRemove(self,po, deptree, toRemove):
         for dep in deptree.get(po, []): # Loop trough all deps of po
+            for txmbr in self.tsInfo.getMembers(dep.pkgtup):
+                for pkg in (txmbr.updates + txmbr.obsoletes):
+                    toRemove.add(pkg)
             toRemove.add(dep)
             self._getDepsToRemove(dep, deptree, toRemove)
 
commit 517744b3630b45bb015c567a1045c2e900a6592b
Author: Florian Festi <ffesti at redhat.com>
Date:   Wed Jan 16 11:55:09 2008 +0100

    Add requiringPO as dep when updating for dependency (needed for skip-broken)

diff --git a/yum/__init__.py b/yum/__init__.py
index 8652f08..a5e793e 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -2052,7 +2052,7 @@ class YumBase(depsolve.Depsolve):
         return tx_return
 
     
-    def update(self, po=None, **kwargs):
+    def update(self, po=None, requiringPo=None, **kwargs):
         """try to mark for update the item(s) specified. 
             po is a package object - if that is there, mark it for update,
             if possible
@@ -2080,6 +2080,8 @@ class YumBase(depsolve.Depsolve):
                 installed_pkg =  self.rpmdb.searchPkgTuple(installed)[0]
                 txmbr = self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg)
                 self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg)
+                if requiringPo:
+                    txmbr.setAsDep(requiringPo)
                 tx_return.append(txmbr)
                 
             for (new, old) in updates:
@@ -2090,6 +2092,8 @@ class YumBase(depsolve.Depsolve):
                     updating_pkg = self.getPackageObject(new)
                     updated_pkg = self.rpmdb.searchPkgTuple(old)[0]
                     txmbr = self.tsInfo.addUpdate(updating_pkg, updated_pkg)
+                    if requiringPo:
+                        txmbr.setAsDep(requiringPo)
                     tx_return.append(txmbr)
             
             return tx_return
@@ -2143,11 +2147,15 @@ class YumBase(depsolve.Depsolve):
                         # FIXME check for what might be in there here
                         txmbr = self.tsInfo.addObsoleting(obsoleting_pkg, installed_pkg)
                         self.tsInfo.addObsoleted(installed_pkg, obsoleting_pkg)
+                        if requiringPo:
+                            txmbr.setAsDep(requiringPo)
                         tx_return.append(txmbr)
                 for available_pkg in availpkgs:
                     for obsoleted in self.up.obsoleting_dict.get(available_pkg.pkgtup, []):
                         obsoleted_pkg = self.getInstalledPackageObject(obsoleted)
                         txmbr = self.tsInfo.addObsoleting(available_pkg, obsoleted_pkg)
+                        if requiringPo:
+                            txmbr.setAsDep(requiringPo)
                         tx_return.append(txmbr)
                         if self.tsInfo.isObsoleted(obsoleted):
                             self.verbose_logger.log(logginglevels.DEBUG_2, 'Package is already obsoleted: %s.%s %s:%s-%s', obsoleted)
@@ -2162,6 +2170,8 @@ class YumBase(depsolve.Depsolve):
                     else:
                         updated_pkg =  self.rpmdb.searchPkgTuple(updated)[0]
                         txmbr = self.tsInfo.addUpdate(available_pkg, updated_pkg)
+                        if requiringPo:
+                            txmbr.setAsDep(requiringPo)
                         tx_return.append(txmbr)
             for installed_pkg in instpkgs:
                 for updating in self.up.updatesdict.get(installed_pkg.pkgtup, []):
@@ -2171,6 +2181,8 @@ class YumBase(depsolve.Depsolve):
                                                 installed_pkg.pkgtup)
                     else:
                         txmbr = self.tsInfo.addUpdate(updating_pkg, installed_pkg)
+                        if requiringPo:
+                            txmbr.setAsDep(requiringPo)
                         tx_return.append(txmbr)
 
         return tx_return
diff --git a/yum/depsolve.py b/yum/depsolve.py
index 88cf9aa..04d54bc 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -509,7 +509,7 @@ class Depsolve(object):
         # try updating the already install pkgs
         length = len(self.tsInfo)
         for pkg in provSack.returnNewestByName():
-            self.update(name=pkg.name, epoch=pkg.epoch, version=pkg.version, rel=pkg.rel)
+            self.update(requiringPo=requiringPo, name=pkg.name, epoch=pkg.epoch, version=pkg.version, rel=pkg.rel)
             if len(self.tsInfo) != length:
                 checkdeps = True
                 return checkdeps, missingdep



More information about the Yum-cvs-commits mailing list