From c85965f6d0493bab84d6b7a615d39678df9d53ba Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 21 Sep 2011 20:03:03 -0700 Subject: Tweak automatic --binpkg-respect-use behavior. If --binpkg-respect-use is not explicitly specified, we enable the behavior automatically (like requested in bug #297549), as long as it doesn't strongly conflict with other options that have been specified. Strongly conflicting options currently include --usepkgonly and --rebuilt-binaries. --- pym/_emerge/create_depgraph_params.py | 11 +++++++++++ pym/_emerge/depgraph.py | 9 ++++++--- pym/_emerge/main.py | 9 +++++---- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/pym/_emerge/create_depgraph_params.py b/pym/_emerge/create_depgraph_params.py index 221c440ef..d94ad89b3 100644 --- a/pym/_emerge/create_depgraph_params.py +++ b/pym/_emerge/create_depgraph_params.py @@ -64,6 +64,17 @@ def create_depgraph_params(myopts, myaction): '--update' in myopts: myparams['rebuilt_binaries'] = True + binpkg_respect_use = myopts.get('--binpkg-respect-use') + if binpkg_respect_use is not None: + myparams['binpkg_respect_use'] = binpkg_respect_use + elif '--usepkgonly' not in myopts and \ + myopts.get('--rebuilt-binaries') is not True: + # If --binpkg-respect-use is not explicitly specified, we enable + # the behavior automatically (like requested in bug #297549), as + # long as it doesn't strongly conflict with other options that + # have been specified. + myparams['binpkg_respect_use'] = 'auto' + if myopts.get("--selective") == "n": # --selective=n can be used to remove selective # behavior that may have been implied by some diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index e8d96f4fe..a4f6c3ddc 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -552,7 +552,8 @@ class depgraph(object): """ if not self._dynamic_config.ignored_binaries \ or '--quiet' in self._frozen_config.myopts \ - or "--binpkg-respect-use" in self._frozen_config.myopts: + or self._dynamic_config.myparams.get( + "binpkg_respect_use") in ("y", "n"): return self._show_merge_list() @@ -796,7 +797,8 @@ class depgraph(object): """Return a set of flags that trigger reinstallation, or None if there are no such flags.""" if "--newuse" in self._frozen_config.myopts or \ - self._frozen_config.myopts.get("--binpkg-respect-use", True) == True: + self._dynamic_config.myparams.get( + "binpkg_respect_use") in ("y", "auto"): flags = set(orig_iuse.symmetric_difference( cur_iuse).difference(forced_flags)) flags.update(orig_iuse.intersection(orig_use).symmetric_difference( @@ -3967,7 +3969,8 @@ class depgraph(object): if built and not useoldpkg and (not installed or matched_pkgs_ignore_use) and \ ("--newuse" in self._frozen_config.myopts or \ "--reinstall" in self._frozen_config.myopts or \ - self._frozen_config.myopts.get("--binpkg-respect-use", True) == True): + (not installed and self._dynamic_config.myparams.get( + "binpkg_respect_use") in ("y", "auto"))): iuses = pkg.iuse.all old_use = self._pkg_use_enabled(pkg) if myeb: diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py index d2fc0ac5f..f4ea36c7b 100644 --- a/pym/_emerge/main.py +++ b/pym/_emerge/main.py @@ -968,10 +968,11 @@ def parse_opts(tmpcmdline, silent=False): if myoptions.deselect in true_y: myoptions.deselect = True - if myoptions.binpkg_respect_use in true_y: - myoptions.binpkg_respect_use = True - else: - myoptions.binpkg_respect_use = None + if myoptions.binpkg_respect_use is not None: + if myoptions.binpkg_respect_use in true_y: + myoptions.binpkg_respect_use = 'y' + else: + myoptions.binpkg_respect_use = 'n' if myoptions.complete_graph in true_y: myoptions.complete_graph = True -- cgit v1.2.3-1-g7c22