From d0b573483ee7460df5f139e407d08835af6dce3f Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 18 Jan 2011 15:28:49 -0800 Subject: depgraph: avoid updates more The fix from bug #351828 broke some of the update avoidance behavior from bug #275945, and this patch should restore it. --- pym/_emerge/depgraph.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'pym/_emerge') diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index a6f17dbd2..737547626 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -2954,7 +2954,8 @@ class depgraph(object): continue reinstall_for_flags = None - if not pkg.installed or matched_packages: + if not pkg.installed or \ + (matched_packages and not avoid_update): # Only enforce visibility on installed packages # if there is at least one other visible package # available. By filtering installed masked packages @@ -5486,18 +5487,22 @@ class _dep_check_composite_db(dbapi): myopts = self._depgraph._frozen_config.myopts use_ebuild_visibility = myopts.get( '--use-ebuild-visibility', 'n') != 'n' + avoid_update = "--update" not in myopts and \ + "remove" not in self._depgraph._dynamic_config.myparams usepkgonly = "--usepkgonly" in myopts - if not use_ebuild_visibility and usepkgonly: - return False - else: - try: - pkg_eb = self._depgraph._pkg( - pkg.cpv, "ebuild", pkg.root_config, myrepo=pkg.repo) - except portage.exception.PackageNotFound: + if not avoid_update: + if not use_ebuild_visibility and usepkgonly: return False else: - if not self._depgraph._pkg_visibility_check(pkg_eb): + try: + pkg_eb = self._depgraph._pkg( + pkg.cpv, "ebuild", pkg.root_config, + myrepo=pkg.repo) + except portage.exception.PackageNotFound: return False + else: + if not self._depgraph._pkg_visibility_check(pkg_eb): + return False in_graph = self._depgraph._dynamic_config._slot_pkg_map[ self._root].get(pkg.slot_atom) -- cgit v1.2.3-1-g7c22