summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-05-22 16:48:42 -0700
committerZac Medico <zmedico@gentoo.org>2011-05-25 21:24:53 -0700
commit75b0a8aed8e56f02c0b455b4ee31fdc7e2b464cf (patch)
tree1eb13e81611136cf9ae1a9139386590879448d02
parent61ecd510191e27feeac191648df028c5c9cfd8ed (diff)
downloadportage-75b0a8aed8e56f02c0b455b4ee31fdc7e2b464cf.tar.gz
portage-75b0a8aed8e56f02c0b455b4ee31fdc7e2b464cf.tar.bz2
portage-75b0a8aed8e56f02c0b455b4ee31fdc7e2b464cf.zip
_add_pkg_dep_string: handle satisfied virt_dep
This fixes a problem with the asap LIBC_PACKAGE_ATOM test case for bug #303567.
-rw-r--r--pym/_emerge/depgraph.py11
-rw-r--r--pym/portage/tests/resolver/test_merge_order.py10
2 files changed, 18 insertions, 3 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 4cb4593db..8307e8f58 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -1341,6 +1341,17 @@ class depgraph(object):
(virt_pkg.cpv, [str(x) for x in atoms]),
noiselevel=-1, level=logging.DEBUG)
+ inst_pkgs = vardb.match_pkgs(atom)
+ if inst_pkgs:
+ for inst_pkg in inst_pkgs:
+ if self._pkg_visibility_check(inst_pkg):
+ # highest visible
+ virt_dep.priority.satisfied = inst_pkg
+ break
+ if not virt_dep.priority.satisfied:
+ # none visible, so use highest
+ virt_dep.priority.satisfied = inst_pkgs[0]
+
if not self._add_pkg(virt_pkg, virt_dep):
return 0
diff --git a/pym/portage/tests/resolver/test_merge_order.py b/pym/portage/tests/resolver/test_merge_order.py
index 1b7cdddcd..ee3c7863a 100644
--- a/pym/portage/tests/resolver/test_merge_order.py
+++ b/pym/portage/tests/resolver/test_merge_order.py
@@ -127,18 +127,22 @@ class MergeOrderTestCase(TestCase):
},
"sys-libs/glibc-2.11" : {
"DEPEND" : "virtual/os-headers",
+ "RDEPEND": "",
},
"sys-libs/glibc-2.13" : {
"DEPEND" : "virtual/os-headers",
+ "RDEPEND": "",
},
"virtual/os-headers-0" : {
"RDEPEND" : "sys-kernel/linux-headers",
},
"sys-kernel/linux-headers-2.6.38": {
"DEPEND" : "app-arch/xz-utils",
+ "RDEPEND": "",
},
"sys-kernel/linux-headers-2.6.39": {
"DEPEND" : "app-arch/xz-utils",
+ "RDEPEND": "",
},
"app-arch/xz-utils-5.0.1" : {},
"app-arch/xz-utils-5.0.2" : {},
@@ -182,12 +186,14 @@ class MergeOrderTestCase(TestCase):
},
"sys-libs/glibc-2.11" : {
"DEPEND" : "virtual/os-headers",
+ "RDEPEND": "",
},
"virtual/os-headers-0" : {
"RDEPEND" : "sys-kernel/linux-headers",
},
"sys-kernel/linux-headers-2.6.38": {
"DEPEND" : "app-arch/xz-utils",
+ "RDEPEND": "",
},
"app-arch/xz-utils-5.0.1" : {},
}
@@ -321,14 +327,12 @@ class MergeOrderTestCase(TestCase):
# Test that OS_HEADERS_PACKAGE_ATOM and LIBC_PACKAGE_ATOM
# are merged asap, in order to account for implicit
# dependencies. See bug #303567.
- # TODO: optimize this to ensure that glibc comes before xz-utils
ResolverPlaygroundTestCase(
["app-arch/xz-utils", "sys-kernel/linux-headers", "sys-libs/glibc"],
options = {"--complete-graph" : True},
success = True,
all_permutations = True,
- ambiguous_merge_order = True,
- mergelist = ['sys-kernel/linux-headers-2.6.39', ('app-arch/xz-utils-5.0.2', 'sys-libs/glibc-2.13')]),
+ mergelist = ['sys-kernel/linux-headers-2.6.39', 'sys-libs/glibc-2.13', 'app-arch/xz-utils-5.0.2']),
)
playground = ResolverPlayground(ebuilds=ebuilds, installed=installed)