"""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"
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