[Yum-devel] [PATCH] Preserve "reason=dep" across updates and add it for dep. installs.

James Antill james at and.org
Tue Oct 6 21:15:31 UTC 2009


---
 yum/__init__.py |   21 ++++++++++++---------
 yum/depsolve.py |    1 +
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/yum/__init__.py b/yum/__init__.py
index a5b4922..79383a5 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -2932,6 +2932,14 @@ class YumBase(depsolve.Depsolve):
                 self.tsInfo.remove(txmbr.po.pkgtup)
         return found
 
+    def _add_up_txmbr(self, requiringPo, upkg, ipkg):
+        txmbr = self.tsInfo.addUpdate(upkg, ipkg)
+        if requiringPo:
+            txmbr.setAsDep(requiringPo)
+        if ('reason' in ipkg.yumdb_info and ipkg.yumdb_info.reason == 'dep'):
+            txmbr.reason = 'dep'
+        return txmbr
+
     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,
@@ -3097,9 +3105,7 @@ class YumBase(depsolve.Depsolve):
                         self.tsInfo.addObsoleted(obsoletee, po)
                         tx_return.append(txmbr)
                 else:
-                    txmbr = self.tsInfo.addUpdate(po, installed_pkg)
-                    if requiringPo:
-                        txmbr.setAsDep(requiringPo)
+                    txmbr = self._add_up_txmbr(requiringPo, po, installed_pkg)
                     tx_return.append(txmbr)
                         
         for available_pkg in availpkgs:
@@ -3122,9 +3128,8 @@ class YumBase(depsolve.Depsolve):
                 
                 else:
                     updated_pkg =  self.getInstalledPackageObject(updated)
-                    txmbr = self.tsInfo.addUpdate(available_pkg, updated_pkg)
-                    if requiringPo:
-                        txmbr.setAsDep(requiringPo)
+                    txmbr = self._add_up_txmbr(requiringPo,
+                                               available_pkg, updated_pkg)
                     tx_return.append(txmbr)
                     
             # check to see if the pkg we want to install is not _quite_ the newest
@@ -3147,9 +3152,7 @@ class YumBase(depsolve.Depsolve):
                     self.verbose_logger.log(logginglevels.DEBUG_2, _('Not Updating Package that is already updated: %s.%s %s:%s-%s'), 
                                             ipkg.pkgtup)
                 elif ipkg.verLT(available_pkg):
-                    txmbr = self.tsInfo.addUpdate(available_pkg, ipkg)
-                    if requiringPo:
-                        txmbr.setAsDep(requiringPo)
+                    txmbr = self._add_up_txmbr(requiringPo, available_pkg, ipkg)
                     tx_return.append(txmbr)
 
         return tx_return
diff --git a/yum/depsolve.py b/yum/depsolve.py
index c5baacb..8bed47c 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -584,6 +584,7 @@ class Depsolve(object):
             # FIXME: Don't we want .install() here, so obsoletes get done?
             txmbr = self.tsInfo.addInstall(best)
             txmbr.setAsDep(po=requiringPo)
+            txmbr.reason = "dep"
             self._last_req = best
 
             # if we had other packages with this name.arch that we found
-- 
1.6.2.5



More information about the Yum-devel mailing list