summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Stubbs <jstubbs@gentoo.org>2005-12-25 07:04:45 +0000
committerJason Stubbs <jstubbs@gentoo.org>2005-12-25 07:04:45 +0000
commitc0b47e720b952589861251bff5ec65f8eafac54b (patch)
tree37b92a74beed6ee2088a2d306c155b5988fad9b5
parentFix typo in writeints() (diff)
downloadportage-multirepo-c0b47e720b952589861251bff5ec65f8eafac54b.tar.gz
portage-multirepo-c0b47e720b952589861251bff5ec65f8eafac54b.tar.bz2
portage-multirepo-c0b47e720b952589861251bff5ec65f8eafac54b.zip
Fix mishandling of masked atoms in || ( .. ) dependencies.
svn path=/main/trunk/; revision=2452
-rw-r--r--pym/portage.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/pym/portage.py b/pym/portage.py
index 42008e85..0b862379 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -3159,7 +3159,7 @@ def dep_zapdeps(unreduced,reduced,myroot,use_binaries=0):
atoms = dep_zapdeps(dep, satisfied, myroot, use_binaries=use_binaries)
else:
atoms = [dep]
- missing_atoms = [atom for atom in atoms if not db[myroot]["vartree"].dbapi.match(dep_getkey(atom))]
+ missing_atoms = [atom for atom in atoms if not db[myroot]["vartree"].dbapi.match(atom)]
if not missing_atoms:
if isinstance(dep, list):
@@ -3176,6 +3176,12 @@ def dep_zapdeps(unreduced,reduced,myroot,use_binaries=0):
if not missing_atoms:
target = (dep, satisfied)
+ if not target:
+ if isinstance(deps[0], list):
+ return dep_zapdeps(deps[0], satisfieds[0], myroot, use_binaries=use_binaries)
+ else:
+ return [deps[0]]
+
if isinstance(target, tuple): # Nothing matching installed
if isinstance(target[0], list): # ... and the first available was a sublist
return dep_zapdeps(target[0], target[1], myroot, use_binaries=use_binaries)
@@ -3196,7 +3202,7 @@ def dep_zapdeps(unreduced,reduced,myroot,use_binaries=0):
available_pkgs[pkg] = atom
if not available_pkgs:
- return [unreduced[0]] # All masked
+ return [relevant_atoms[0]] # All masked
target_pkg = best(available_pkgs.keys())
suitable_atom = available_pkgs[target_pkg]