aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-07-18 14:38:09 -0700
committerZac Medico <zmedico@gentoo.org>2012-07-18 14:38:09 -0700
commit30ec783c0fc64a02fda38980bded22dc0055a42d (patch)
treeb025a74c77ced261b2f38f1ae954043757ede558
parentmatch_from_list: match slot for extended atoms (diff)
downloadportage-30ec783c0fc64a02fda38980bded22dc0055a42d.tar.gz
portage-30ec783c0fc64a02fda38980bded22dc0055a42d.tar.bz2
portage-30ec783c0fc64a02fda38980bded22dc0055a42d.zip
Fix extended atom match for =* operator.
-rwxr-xr-xbin/portageq12
-rwxr-xr-xbin/quickpkg13
-rw-r--r--pym/_emerge/actions.py28
3 files changed, 32 insertions, 21 deletions
diff --git a/bin/portageq b/bin/portageq
index 280fe94c2..d9abb0bad 100755
--- a/bin/portageq
+++ b/bin/portageq
@@ -583,17 +583,15 @@ def match(argv):
require_metadata = atom.slot or atom.repo
for cpv in vardb.cpv_all():
- if not portage.dep.extended_cp_match(
- atom.cp, portage.cpv_getkey(cpv)):
+ if not portage.match_from_list(atom, [cpv]):
continue
if require_metadata:
- slot, repo = vardb.aux_get(cpv, ["SLOT", "repository"])
-
- if atom.slot is not None and atom.slot != slot:
+ try:
+ cpv = vardb._pkg_str(cpv, atom.repo)
+ except (KeyError, portage.exception.InvalidData):
continue
-
- if atom.repo is not None and atom.repo != repo:
+ if not portage.match_from_list(atom, [cpv]):
continue
results.append(cpv)
diff --git a/bin/quickpkg b/bin/quickpkg
index a6bd4d4bd..76259c5c1 100755
--- a/bin/quickpkg
+++ b/bin/quickpkg
@@ -21,7 +21,7 @@ except ImportError:
from portage import os
from portage import xpak
from portage.dbapi.dep_expand import dep_expand
-from portage.dep import Atom, extended_cp_match, use_reduce
+from portage.dep import Atom, use_reduce
from portage.exception import (AmbiguousPackageName, InvalidAtom, InvalidData,
InvalidDependString, PackageSetNotFound, PermissionDenied)
from portage.util import ConfigProtect, ensure_dirs, shlex_split
@@ -204,16 +204,15 @@ def quickpkg_extended_atom(options, infos, atom, eout):
atoms.append(cpv_atom)
continue
- if not extended_cp_match(atom.cp, cpv_atom.cp):
+ if not portage.match_from_list(atom, [cpv]):
continue
if require_metadata:
- slot, repo = vardb.aux_get(cpv, ["SLOT", "repository"])
-
- if atom.slot and atom.slot != slot:
+ try:
+ cpv = vardb._pkg_str(cpv, atom.repo)
+ except (KeyError, InvalidData):
continue
-
- if atom.repo and atom.repo != repo:
+ if not portage.match_from_list(atom, [cpv]):
continue
atoms.append(cpv_atom)
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index af42828d1..9a023a84a 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -34,9 +34,9 @@ from portage.const import GLOBAL_CONFIG_PATH
from portage.const import _ENABLE_DYN_LINK_MAP
from portage.dbapi.dep_expand import dep_expand
from portage.dbapi._expand_new_virt import expand_new_virt
-from portage.dep import Atom, extended_cp_match
+from portage.dep import Atom
from portage.eclass_cache import hashed_path
-from portage.exception import InvalidAtom
+from portage.exception import InvalidAtom, InvalidData
from portage.output import blue, bold, colorize, create_color_func, darkgreen, \
red, yellow
good = create_color_func("GOOD")
@@ -2594,16 +2594,30 @@ def action_uninstall(settings, trees, ldpath_mtimes,
level=logging.ERROR, noiselevel=-1)
return 1
- for cp in vardb.cp_all():
- if extended_cp_match(ext_atom.cp, cp):
- atom = cp
+ for cpv in vardb.cpv_all():
+ if portage.match_from_list(ext_atom, [cpv]):
+ require_metadata = False
+ atom = portage.cpv_getkey(cpv)
+ if ext_atom.operator == '=*':
+ atom = "=" + atom + "-" + \
+ portage.versions.cpv_getversion(cpv)
if ext_atom.slot:
atom += ":" + ext_atom.slot
+ require_metadata = True
if ext_atom.repo:
atom += "::" + ext_atom.repo
+ require_metadata = True
+
+ atom = Atom(atom, allow_repo=True)
+ if require_metadata:
+ try:
+ cpv = vardb._pkg_str(cpv, ext_atom.repo)
+ except (KeyError, InvalidData):
+ continue
+ if not portage.match_from_list(atom, [cpv]):
+ continue
- if vardb.match(atom):
- valid_atoms.append(Atom(atom, allow_repo=True))
+ valid_atoms.append(atom)
else:
msg = []