summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/emerge3
-rw-r--r--pym/portage_dep.py29
2 files changed, 21 insertions, 11 deletions
diff --git a/bin/emerge b/bin/emerge
index a1761e7e7..886d2a2ef 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -6510,8 +6510,7 @@ def unmerge(settings, myopts, vartree, unmerge_action,
sys.exit(1)
if not mymatch and x[0] not in "<>=~":
- #add a "=" if missing
- mymatch=localtree.dep_match("="+x)
+ mymatch = localtree.dep_match(x)
if not mymatch:
portage.writemsg("\n--- Couldn't find '%s' to %s.\n" % \
(x, unmerge_action), noiselevel=-1)
diff --git a/pym/portage_dep.py b/pym/portage_dep.py
index 44878e913..1e65b7e24 100644
--- a/pym/portage_dep.py
+++ b/pym/portage_dep.py
@@ -433,19 +433,30 @@ def isvalidatom(atom, allow_blockers=False):
if allow_blockers and atom.startswith("!"):
atom = atom[1:]
cpv = dep_getcpv(atom)
+ cpv_catsplit = catsplit(cpv)
+ mycpv_cps = None
if cpv:
- if _valid_category.match(catsplit(cpv)[0]) is None:
- return 0
- mycpv_cps = catpkgsplit(cpv)
- else:
- mycpv_cps = None
+ if len(cpv_catsplit) == 2:
+ if _valid_category.match(cpv_catsplit[0]) is None:
+ return 0
+ if cpv_catsplit[0] == "null":
+ # "null" category is valid, missing category is not.
+ mycpv_cps = catpkgsplit(cpv.replace("null/", "cat/", 1))
+ if mycpv_cps:
+ mycpv_cps[0] = "null"
+ if not mycpv_cps:
+ mycpv_cps = catpkgsplit(cpv)
+
operator = get_operator(atom)
if operator:
if operator[0] in "<>" and remove_slot(atom).endswith("*"):
return 0
- if mycpv_cps and mycpv_cps[0] != "null":
- # >=cat/pkg-1.0
- return 1
+ if mycpv_cps:
+ if len(cpv_catsplit) == 2:
+ # >=cat/pkg-1.0
+ return 1
+ else:
+ return 0
else:
# >=cat/pkg or >=pkg-1.0 (no category)
return 0
@@ -453,7 +464,7 @@ def isvalidatom(atom, allow_blockers=False):
# cat/pkg-1.0
return 0
- if (len(atom.split('/')) == 2):
+ if len(cpv_catsplit) == 2:
# cat/pkg
return 1
else: