if only_use_changes and allow_unmasks:
continue
+ if pkg is not None:
+ break
+
pkg, existing = \
self._wrapped_select_pkg_highest_available_imp(
root, atom, onlydeps=onlydeps,
mreasons = _get_masking_status(pkg, pkgsettings, root_config, use=self._pkg_use_enabled(pkg))
masked_by_unstable_keywords = False
+ masked_by_missing_keywords = False
missing_licenses = None
masked_by_something_else = False
masked_by_p_mask = False
masked_by_something_else = True
elif hint.key == "unstable keyword":
masked_by_unstable_keywords = True
+ if hint.value == "**":
+ masked_by_missing_keywords = True
elif hint.key == "p_mask":
masked_by_p_mask = True
elif hint.key == "license":
if pkg in self._dynamic_config._needed_unstable_keywords:
#If the package is already keyworded, remove the mask.
masked_by_unstable_keywords = False
+ masked_by_missing_keywords = False
if pkg in self._dynamic_config._needed_p_mask_changes:
#If the package is already keyworded, remove the mask.
#Package has already been unmasked.
return True
+ #We treat missing keywords in the same way as masks.
if (masked_by_unstable_keywords and not allow_unstable_keywords) or \
+ (masked_by_missing_keywords and not allow_unmasks) or \
(masked_by_p_mask and not allow_unmasks) or \
(missing_licenses and not allow_license_changes):
#We are not allowed to do the needed changes.
#ebuilds to test mask and keyword changes
"app-text/A-1": {},
"app-text/B-1": { "KEYWORDS": "~x86" },
+ "app-text/C-1": { "KEYWORDS": "" },
+ "app-text/D-1": { "KEYWORDS": "~x86" },
+ "app-text/D-2": { "KEYWORDS": "" },
#ebuilds for mixed test for || dep handling
"sci-libs/K-1": { "DEPEND": " || ( sci-libs/L[bar] || ( sci-libs/M sci-libs/P ) )", "EAPI": 2},
mergelist = ["app-text/B-1"],
unstable_keywords = ["app-text/B-1"],
needed_p_mask_changes = ["app-text/B-1"]),
+ ResolverPlaygroundTestCase(
+ ["app-text/C"],
+ options = {"--autounmask": True},
+ success = False,
+ mergelist = ["app-text/C-1"],
+ unstable_keywords = ["app-text/C-1"],
+ needed_p_mask_changes = ["app-text/C-1"]),
+ ResolverPlaygroundTestCase(
+ ["app-text/D"],
+ options = {"--autounmask": True},
+ success = False,
+ mergelist = ["app-text/D-1"],
+ unstable_keywords = ["app-text/D-1"])
)
profile = {
(
"app-text/A",
"app-text/B",
+ "app-text/C",
),
}