diff options
author | Marius Mauch <genone@gentoo.org> | 2007-01-10 08:08:18 +0000 |
---|---|---|
committer | Marius Mauch <genone@gentoo.org> | 2007-01-10 08:08:18 +0000 |
commit | 650ab45c0dfa16b57cc01fcc03020c1032a672c7 (patch) | |
tree | 0470bf7aee5974d890f2e57e9e1e8fb64c8112bf | |
parent | bf22605c3dfe950f14b1c073c6435e3a8237cfcf (diff) | |
download | portage-650ab45c0dfa16b57cc01fcc03020c1032a672c7.tar.gz portage-650ab45c0dfa16b57cc01fcc03020c1032a672c7.tar.bz2 portage-650ab45c0dfa16b57cc01fcc03020c1032a672c7.zip |
Always use vercmp for cpv comparisons
svn path=/main/trunk/; revision=5511
-rw-r--r-- | pym/portage.py | 12 | ||||
-rw-r--r-- | pym/portage_dep.py | 7 |
2 files changed, 15 insertions, 4 deletions
diff --git a/pym/portage.py b/pym/portage.py index 3f3e378ae..21b8d1817 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -3818,6 +3818,18 @@ def getCPFromCPV(mycpv): """Calls pkgsplit on a cpv and returns only the cp.""" return pkgsplit(mycpv)[0] +def cpvequal(cpv1, cpv2): + split1 = catpkgsplit(cpv1) + split2 = catpkgsplit(cpv2) + + if not split1 or not split2: + raise portage_exception.PortageException("Invalid data, parameter was not a CPV") + + if split1[0] != split2[0]: + return False + + return (pkgcmp(split1[1:], split2[1:]) == 0) + def dep_virtual(mysplit, mysettings): "Does virtual dependency conversion" diff --git a/pym/portage_dep.py b/pym/portage_dep.py index ef6486f19..60b75e03a 100644 --- a/pym/portage_dep.py +++ b/pym/portage_dep.py @@ -568,19 +568,18 @@ def match_from_list(mydep, candidate_list): mylist.append(x) elif operator == "=": # Exact match - if mycpv in candidate_list: - mylist = [mycpv] + mylist = [cpv for cpv in candidate_list if cpvequal(cpv, mycpv)] elif operator == "=*": # glob match # The old verion ignored _tag suffixes... This one doesn't. for x in candidate_list: - if x[0:len(mycpv)] == mycpv: + if cpvequal(x[0:len(mycpv)], mycpv): mylist.append(x) elif operator == "~": # version, any revision, match for x in candidate_list: xs = catpkgsplit(x) - if xs[0:2] != mycpv_cps[0:2]: + if not cpvequal(xs[0]+"/"+xs[1]+"-"+xs[2], mycpv_cps[0]+"/"+mycpv_cps[1]+"-"+mycpv_cps[2]): continue if xs[2] != ver: continue |