[yum-git] Branch 'yum-3_2_X' - yum/depsolve.py yum/__init__.py yum/transactioninfo.py

Seth Vidal skvidal at linux.duke.edu
Wed Aug 6 21:28:23 UTC 2008


 yum/__init__.py        |   13 +++++++------
 yum/depsolve.py        |    4 ++++
 yum/transactioninfo.py |    9 +++++----
 3 files changed, 16 insertions(+), 10 deletions(-)

New commits:
commit 430c0b3267ebf39f0b9b2b24d31b4e2a6874f764
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Wed Aug 6 17:25:30 2008 -0400

    make sure conditional pkg installs pass through install() just like anything else should

diff --git a/yum/__init__.py b/yum/__init__.py
index 96dcec6..ab74889 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1890,12 +1890,13 @@ class YumBase(depsolve.Depsolve):
                         continue
                     # Otherwise we hook into tsInfo.add
                     pkgs = self.pkgSack.searchNevra(name=condreq)
-                    if pkgs:
-                        pkgs = self.bestPackagesFromList(pkgs)
-                    if self.tsInfo.conditionals.has_key(cond):
-                        self.tsInfo.conditionals[cond].extend(pkgs)
-                    else:
-                        self.tsInfo.conditionals[cond] = pkgs
+                    if pkgs:# if there's anything as a result then we push 
+                            # the name into tsInfo so that when we call install 
+                            # on it it passes through the normal install() call
+                        if self.tsInfo.conditionals.has_key(cond):
+                            self.tsInfo.conditionals[cond].append(condreq)
+                        else:
+                            self.tsInfo.conditionals[cond] = [condreq]
 
         return txmbrs_used
 
diff --git a/yum/depsolve.py b/yum/depsolve.py
index 27e5794..6bb0ef6 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -104,6 +104,10 @@ class Depsolve(object):
             self._tsInfo = self._transactionDataFactory()
             self._tsInfo.setDatabases(self.rpmdb, self.pkgSack)
             self._tsInfo.installonlypkgs = self.conf.installonlypkgs # this kinda sucks
+            # this REALLY sucks, sadly
+            self._tsInfo.install_method = self.install
+            self._tsInfo.update_method = self.update
+            self._tsInfo.remove_method = self.remove
         return self._tsInfo
 
     def _setTsInfo(self, value):
diff --git a/yum/transactioninfo.py b/yum/transactioninfo.py
index b7fdd1e..6dd92b8 100644
--- a/yum/transactioninfo.py
+++ b/yum/transactioninfo.py
@@ -193,11 +193,12 @@ class TransactionData:
             self.pkgSackPackages += 1
 
         if self.conditionals.has_key(txmember.name):
-            for po in self.conditionals[txmember.name]:
-                if self.rpmdb.contains(po=po):
+            for pkg_name in self.conditionals[txmember.name]:
+                if self.rpmdb.contains(name=pkg_name):
                     continue
-                condtxmbr = self.addInstall(po)
-                condtxmbr.setAsDep(po=txmember.po)
+                for condtxmbr in self.install_method(name=pkg_name):
+                    condtxmbr.setAsDep(po=txmember.po)
+
         self._unresolvedMembers.add(txmember)
 
     def remove(self, pkgtup):



More information about the Yum-cvs-commits mailing list