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: