diff options
author | Otavio Pontes <otaviobp@gmail.com> | 2010-08-04 16:57:48 +0000 |
---|---|---|
committer | Otavio Pontes <otaviobp@gmail.com> | 2010-08-04 16:57:48 +0000 |
commit | c727a19fb9b45ac06c4767464281740536f5c62a (patch) | |
tree | 3ab666cd854f57ad08eea3bfbf77ec36c4137ba0 | |
parent | Adding repo as a property. Suggested by _few (diff) | |
download | portage-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.py | 50 |
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 \ |