commit:     164038260338d48b12432e166aa34dbd028a167d
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Sep 25 02:25:20 2017 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Sep 25 02:55:15 2017 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=16403826

search: only pass Atom instance to dbapi match methods

This fixes errors like the following:

  File "_emerge/depgraph.py", line 3972, in _select_files
    self._frozen_config.spinner, self._frozen_config.myopts)
  File "_emerge/depgraph.py", line 9474, in ambiguous_package_name
    s.output()
  File "_emerge/search.py", line 469, in output
    self.getInstallationStatus(mycat+'/'+mypkg))
  File "_emerge/search.py", line 494, in getInstallationStatus
    installed_package = self._vardb.match(package)
  File "_emerge/FakeVartree.py", line 111, in _match_wrapper
    matches = self._match(cpv, use_cache=use_cache)
  File "_emerge/resolver/DbapiProvidesIndex.py", line 39, in match
    if atom.soname:
AttributeError: 'str' object has no attribute 'soname'

 pym/_emerge/search.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/pym/_emerge/search.py b/pym/_emerge/search.py
index dc91ad315..36897fb15 100644
--- a/pym/_emerge/search.py
+++ b/pym/_emerge/search.py
@@ -162,7 +162,10 @@ class search(object):
                multiple package databases. If necessary, old-style virtuals
                can be performed on atoms prior to calling this method.
                """
-               cp = portage.dep_getkey(atom)
+               if not isinstance(atom, portage.dep.Atom):
+                       atom = portage.dep.Atom(atom)
+
+               cp = atom.cp
                if level == "match-all":
                        matches = set()
                        for db in self._dbs:
@@ -489,6 +492,9 @@ class search(object):
        # private interface
        #
        def getInstallationStatus(self,package):
+               if not isinstance(package, portage.dep.Atom):
+                       package = portage.dep.Atom(package)
+
                installed_package = self._vardb.match(package)
                if installed_package:
                        try:

Reply via email to