summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOtavio Pontes <otaviobp@gmail.com>2010-08-04 16:57:48 +0000
committerOtavio Pontes <otaviobp@gmail.com>2010-08-04 16:57:48 +0000
commitc727a19fb9b45ac06c4767464281740536f5c62a (patch)
tree3ab666cd854f57ad08eea3bfbf77ec36c4137ba0
parentAdding repo as a property. Suggested by _few (diff)
downloadportage-multirepo-c727a19fb9b45ac06c4767464281740536f5c62a.tar.gz
portage-multirepo-c727a19fb9b45ac06c4767464281740536f5c62a.tar.bz2
portage-multirepo-c727a19fb9b45ac06c4767464281740536f5c62a.zip
Removing code that checks visibility from _pkg and letting _select_pkg_highest_available_imp do the job
-rw-r--r--pym/_emerge/depgraph.py50
1 files changed, 20 insertions, 30 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 7ad42f06..487303c1 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -2424,25 +2424,30 @@ class depgraph(object):
break
if cpv_list:
+ if atom.repo is None and hasattr(db, "getRepositories"):
+ repo_list = db.getRepositories()
+ else:
+ repo_list = [atom.repo]
# descending order
cpv_list.reverse()
for cpv in cpv_list:
- try:
- pkg = self._pkg(cpv, pkg_type, root_config,
- installed=installed, onlydeps=onlydeps, myrepo=atom.repo)
- except portage.exception.PackageNotFound:
- pass
- else:
- if pkg.cp != atom.cp:
- # A cpv can be returned from dbapi.match() as an
- # old-style virtual match even in cases when the
- # package does not actually PROVIDE the virtual.
- # Filter out any such false matches here.
- if not InternalPackageSet(initial_atoms=(atom,)
- ).findAtomForPackage(pkg):
- continue
- yield pkg
+ for repo in repo_list:
+ try:
+ pkg = self._pkg(cpv, pkg_type, root_config,
+ installed=installed, onlydeps=onlydeps, myrepo=repo)
+ except portage.exception.PackageNotFound:
+ pass
+ else:
+ if pkg.cp != atom.cp:
+ # A cpv can be returned from dbapi.match() as an
+ # old-style virtual match even in cases when the
+ # package does not actually PROVIDE the virtual.
+ # Filter out any such false matches here.
+ if not InternalPackageSet(initial_atoms=(atom,)
+ ).findAtomForPackage(pkg):
+ continue
+ yield pkg
def _select_pkg_highest_available(self, root, atom, onlydeps=False):
cache_key = (root, atom, onlydeps)
@@ -2951,21 +2956,6 @@ class depgraph(object):
installed=installed, metadata=metadata, onlydeps=onlydeps,
root_config=root_config, type_name=type_name)
- #Check for other repos if we can find a visible package
- if not pkg.visible and myrepo is None and tree_type == 'porttree':
- for repo in db.getRepositories():
- if repo != pkg.metadata['repository']:
- try:
- metadata = zip(db_keys, db.aux_get(cpv, db_keys, myrepo=repo))
- except:
- continue
- pkg2 = Package(built=(type_name != "ebuild"), cpv=cpv,
- installed=installed, metadata=metadata, onlydeps=onlydeps,
- root_config=root_config, type_name=type_name)
- if pkg2.visible:
- pkg = pkg2
- break
-
self._frozen_config._pkg_cache[pkg] = pkg
if not pkg.visible and \