if want_reinstall and matched_packages:
continue
- for pkg in self._iter_match_pkgs(root_config, pkg_type, atom,
+ for pkg in self._iter_match_pkgs(root_config, pkg_type, atom.without_use,
onlydeps=onlydeps):
if pkg in self._dynamic_config._runtime_pkg_mask:
# The package has been masked by the backtracking logic
if higher_version_rejected:
continue
+ if atom.use:
+ for x in atom.use.required:
+ if x not in pkg.iuse.all and \
+ pkg.root_config.settings.iuse_implicit_re.match(x) is None:
+ missing_iuse = True
+ break
+ if missing_iuse:
+ if not pkg.installed:
+ packages_with_invalid_use_config.append(pkg)
+ continue
+
cpv = pkg.cpv
# Make --noreplace take precedence over --newuse.
if not pkg.installed and noreplace and \
_category_re = re.compile(r'^\w[-.+\w]*$')
_pkg_dir_name_re = re.compile(r'^\w[-+\w]*$')
_categories = None
- _iuse_implicit_re = None
_use_mutable = False
_known_keys = frozenset(x for x in auxdbkeys
if not x.startswith("UNUSED_0"))
1) Check for required IUSE intersection (need implicit IUSE here).
2) Check enabled/disabled flag states.
"""
- if self._iuse_implicit_re is None:
- self._iuse_implicit_re = re.compile("^(%s)$" % \
- "|".join(self.settings._get_implicit_iuse()))
- iuse_implicit_re = self._iuse_implicit_re
+
+ iuse_implicit_re = self.settings.iuse_implicit_re
for cpv in cpv_iter:
try:
iuse, slot, use = self.aux_get(cpv, ["IUSE", "SLOT", "USE"])
self._license_groups = copy.deepcopy(clone._license_groups)
self._accept_properties = copy.deepcopy(clone._accept_properties)
self._ppropertiesdict = copy.deepcopy(clone._ppropertiesdict)
+
+ self.iuse_implicit_re = clone.iuse_implicit_re
else:
def check_var_directory(varname, var):
_validate_cache_for_unsupported_eapis = False
_glep_55_enabled = True
+ self.iuse_implicit_re = re.compile("^(%s)$" % \
+ "|".join(self._get_implicit_iuse()))
+
for k in self._case_insensitive_vars:
if k in self:
self[k] = self[k].lower()