From: Zac Medico Date: Tue, 18 Jan 2011 23:28:49 +0000 (-0800) Subject: depgraph: avoid updates more X-Git-Tag: v2.1.9.34~7 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=3d6f2529e9e230361868169bd14127ff0df9cb28;p=portage.git 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. --- diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 1a203545f..4ccea99a8 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -2914,7 +2914,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 @@ -5411,18 +5412,21 @@ 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) - 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) + 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) diff --git a/pym/portage/tests/resolver/test_simple.py b/pym/portage/tests/resolver/test_simple.py index c3ca9f4d5..b8d403db4 100644 --- a/pym/portage/tests/resolver/test_simple.py +++ b/pym/portage/tests/resolver/test_simple.py @@ -31,14 +31,11 @@ class SimpleResolverTestCase(TestCase): options = {"--noreplace": True}, success = True, mergelist = []), - - # This triggers a replacement since the dev-libs/B-1.1 ebuild - # is not available in the portage tree (see bug #351828). ResolverPlaygroundTestCase( ["dev-libs/B"], options = {"--noreplace": True}, success = True, - mergelist = ["dev-libs/B-1.2"]), + mergelist = []), ResolverPlaygroundTestCase( ["dev-libs/B"], options = {"--update": True},