summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/_emerge/__init__.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index d16c4fc20..c0058fca2 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -2496,6 +2496,7 @@ class depgraph(object):
usepkgonly = "--usepkgonly" in self.myopts
empty = "empty" in self.myparams
selective = "selective" in self.myparams
+ reinstall = False
# Behavior of the "selective" parameter depends on
# whether or not a package matches an argument atom.
# If an installed package provides an old-style
@@ -2514,7 +2515,8 @@ class depgraph(object):
for db, pkg_type, built, installed, db_keys in dbs:
if existing_node:
break
- if not selective and installed and not find_existing_node and \
+ if installed and not find_existing_node and \
+ (reinstall or not selective) and \
(matched_packages or empty):
# We only need to select an installed package in the
# following cases:
@@ -2627,6 +2629,8 @@ class depgraph(object):
self._reinstall_for_flags(
forced_flags, old_use, old_iuse,
cur_use, cur_iuse)
+ if reinstall_for_flags:
+ reinstall = True
if not installed:
must_reinstall = empty or \
(myarg and not selective)