reinstall = False
noreplace = "--noreplace" in self._frozen_config.myopts
avoid_update = "--update" not in self._frozen_config.myopts
+ dont_miss_updates = "--update" in self._frozen_config.myopts
use_ebuild_visibility = self._frozen_config.myopts.get(
'--use-ebuild-visibility', 'n') != 'n'
# Behavior of the "selective" parameter depends on
# available packages match argument atoms, which is
# represented by the found_available_arg flag.
found_available_arg = False
+ packages_with_invalid_use_config = []
for find_existing_node in True, False:
if existing_node:
break
if pkg in self._dynamic_config._runtime_pkg_mask:
# The package has been masked by the backtracking logic
continue
+
+ if dont_miss_updates:
+ higher_version_rejected = False
+ for rejected in packages_with_invalid_use_config:
+ if rejected.cp != pkg.cp:
+ continue
+ if rejected > pkg:
+ higher_version_rejected = True
+ break
+ if higher_version_rejected:
+ continue
+
cpv = pkg.cpv
# Make --noreplace take precedence over --newuse.
if not pkg.installed and noreplace and \
if atom.use and not pkg.built:
use = pkg.use.enabled
if atom.use.enabled.difference(use):
+ packages_with_invalid_use_config.append(pkg)
continue
if atom.use.disabled.intersection(use):
+ packages_with_invalid_use_config.append(pkg)
continue
if pkg.cp == atom_cp:
if highest_version is None: