On 02/07/2012 11:31 PM, James Antill wrote:
---
  yum/depsolve.py |    2 +-
  yum/packages.py |   10 ++++++++++
  2 files changed, 11 insertions(+), 1 deletions(-)

diff --git a/yum/depsolve.py b/yum/depsolve.py
index 6b386c2..a8f9acb 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -1003,7 +1003,7 @@ class Depsolve(object):
          oldreqs = []
          if not self.conf.recheck_installed_requires:
              for oldpo in txmbr.updates:
-                oldreqs.extend(oldpo.returnPrco('requires'))
+                oldreqs.extend(oldpo.returnPrco('strong_requires'))
          oldreqs = set(oldreqs)

          ret = []
diff --git a/yum/packages.py b/yum/packages.py
index 6bc909e..8dec8bf 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -1409,6 +1409,12 @@ class YumHeaderPackage(YumAvailablePackage):
                  continue

              lst = hdr[getattr(rpm, 'RPMTAG_%sFLAGS' % tag)]
+            if tag == 'REQUIRE':
+                #  Rpm is a bit magic here, and if pkgA requires(pre/post): foo
+                # it will then let you remove foo _after_ pkgA has been
+                # installed. So we need to mark those deps. as "weak".
+                bits = rpm.RPMSENSE_SCRIPT_PRE | rpm.RPMSENSE_SCRIPT_POST
+                weakreqs = [bool(flag&  bits) for flag in lst]
              flag = map(rpmUtils.miscutils.flagToString, lst)
              flag = map(misc.share_data, flag)

@@ -1419,6 +1425,10 @@ class YumHeaderPackage(YumAvailablePackage):

              prcotype = tag2prco[tag]
              self.prco[prcotype] = map(misc.share_data, zip(name,flag,vers))
+            if tag == 'REQUIRE':
+                weakreqs = zip(weakreqs, self.prco[prcotype])
+                strongreqs = [wreq[1] for wreq in weakreqs if not wreq[0]]
+                self.prco['strong_requires'] = strongreqs

      def tagByName(self, tag):
          warnings.warn("tagByName() will go away in a furture version of 
Yum.\n",

ACK, although "strong" and "weak" requires make me think of something entirely different :) Perhaps script_requires would be more to the point?

Also ACK for the recheck_installed_requires patch, with this patch in the picture my earlier comments about that no longer apply.

        - Panu -
_______________________________________________
Yum-devel mailing list
[email protected]
http://lists.baseurl.org/mailman/listinfo/yum-devel

Reply via email to