[yum-git] Branch 'yum-3_2_X' - test/depsolvetests.py yum/depsolve.py
James Antill
james at linux.duke.edu
Sat Aug 9 19:24:35 UTC 2008
test/depsolvetests.py | 17 +++++++++++++++++
yum/depsolve.py | 20 +++++++++++++++++++-
2 files changed, 36 insertions(+), 1 deletion(-)
New commits:
commit 92f360344742fa3fca38d97846cb7a31f3dd88bf
Author: James Antill <james at and.org>
Date: Sat Aug 9 15:24:26 2008 -0400
Shared lib. deps sorted after pkg. deps., solves test_multi_inst_dep3, 443459
diff --git a/test/depsolvetests.py b/test/depsolvetests.py
index 44731d0..a0e607b 100644
--- a/test/depsolvetests.py
+++ b/test/depsolvetests.py
@@ -1024,3 +1024,20 @@ class DepsolveTests(DepsolveTests):
self.assertEquals('ok', *self.resolveCode())
self.assertResult((ipo1, po1))
+
+ def test_multi_inst_dep3(self):
+ ipo1 = FakePackage('foo')
+ ipo1.addRequires('libbar-prov1.so.0()', None, (None, None, None))
+ ipo1.addRequires('bar-prov2', None, (None, None, None))
+ self.tsInfo.addInstall(ipo1)
+
+ po1 = FakePackage('bar')
+ po1.addProvides('libbar-prov1.so.0()', None, (None, None, None))
+ po1.addProvides('bar-prov2', None, (None, None, None))
+ self.xsack.addPackage(po1)
+ po2 = FakePackage('bar', version='2')
+ po2.addProvides('libbar-prov1.so.0()', None, (None, None, None))
+ self.xsack.addPackage(po2)
+
+ self.assertEquals('ok', *self.resolveCode())
+ self.assertResult((ipo1, po1))
diff --git a/yum/depsolve.py b/yum/depsolve.py
index ef84143..431190c 100644
--- a/yum/depsolve.py
+++ b/yum/depsolve.py
@@ -798,7 +798,25 @@ class Depsolve(object):
mapper = {'EQ' : 1, 'LT' : 2, 'LE' : 3, 'GT' : 4, 'GE' : 5,
None : 99}
- return mapper.get(pkgtup1[1], 10) - mapper.get(pkgtup2[1], 10)
+ ret = mapper.get(pkgtup1[1], 10) - mapper.get(pkgtup2[1], 10)
+ if ret:
+ return ret
+
+ # This is pretty magic, basically we want and explicit:
+ #
+ # Requires: foo
+ #
+ # ...to happen before the implicit:
+ #
+ # Requires: libfoo.so.0()
+ #
+ # ...need more magic for other implicit deps. here?
+ def _req_name2val(name):
+ if (name.startswith("lib") and
+ (name.endswith("()") or name.endswith("()(64bit)"))):
+ return 99 # Processes these last
+ return 0
+ return _req_name2val(pkgtup1[0]) - _req_name2val(pkgtup2[0])
def _checkInstall(self, txmbr):
txmbr_reqs = txmbr.po.returnPrco('requires')
More information about the Yum-cvs-commits
mailing list