summaryrefslogtreecommitdiffstats
path: root/pym/portage
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage')
-rw-r--r--pym/portage/package/ebuild/getmaskingstatus.py2
-rw-r--r--pym/portage/tests/resolver/ResolverPlayground.py10
-rw-r--r--pym/portage/tests/resolver/test_autounmask.py24
3 files changed, 33 insertions, 3 deletions
diff --git a/pym/portage/package/ebuild/getmaskingstatus.py b/pym/portage/package/ebuild/getmaskingstatus.py
index a7d3c333f..e46f7886d 100644
--- a/pym/portage/package/ebuild/getmaskingstatus.py
+++ b/pym/portage/package/ebuild/getmaskingstatus.py
@@ -77,7 +77,7 @@ def _getmaskingstatus(mycpv, settings, portdb, myrepo=None):
# package.mask checking
if settings._getMaskAtom(mycpv, metadata):
- rValue.append(_MaskReason("package.mask", "package.mask"))
+ rValue.append(_MaskReason("package.mask", "package.mask", _UnmaskHint("p_mask", None)))
# keywords checking
eapi = metadata["EAPI"]
diff --git a/pym/portage/tests/resolver/ResolverPlayground.py b/pym/portage/tests/resolver/ResolverPlayground.py
index c3540c939..f5bd77ff2 100644
--- a/pym/portage/tests/resolver/ResolverPlayground.py
+++ b/pym/portage/tests/resolver/ResolverPlayground.py
@@ -516,7 +516,7 @@ class ResolverPlaygroundTestCase(object):
if self.ignore_mergelist_order and got is not None:
got = set(got)
expected = set(expected)
- elif key == "unstable_keywords" and expected is not None:
+ elif key in ("unstable_keywords", "needed_p_mask_changes") and expected is not None:
expected = set(expected)
if got != expected:
@@ -532,7 +532,7 @@ class ResolverPlaygroundResult(object):
checks = (
"success", "mergelist", "use_changes", "license_changes", "unstable_keywords", "slot_collision_solutions",
- "circular_dependency_solutions",
+ "circular_dependency_solutions", "needed_p_mask_changes",
)
optional_checks = (
)
@@ -546,6 +546,7 @@ class ResolverPlaygroundResult(object):
self.use_changes = None
self.license_changes = None
self.unstable_keywords = None
+ self.needed_p_mask_changes = None
self.slot_collision_solutions = None
self.circular_dependency_solutions = None
@@ -572,6 +573,11 @@ class ResolverPlaygroundResult(object):
for pkg in self.depgraph._dynamic_config._needed_unstable_keywords:
self.unstable_keywords.add(pkg.cpv)
+ if self.depgraph._dynamic_config._needed_p_mask_changes:
+ self.needed_p_mask_changes = set()
+ for pkg in self.depgraph._dynamic_config._needed_p_mask_changes:
+ self.needed_p_mask_changes.add(pkg.cpv)
+
if self.depgraph._dynamic_config._needed_license_changes:
self.license_changes = {}
for pkg, missing_licenses in self.depgraph._dynamic_config._needed_license_changes.items():
diff --git a/pym/portage/tests/resolver/test_autounmask.py b/pym/portage/tests/resolver/test_autounmask.py
index 027eb3326..62b152233 100644
--- a/pym/portage/tests/resolver/test_autounmask.py
+++ b/pym/portage/tests/resolver/test_autounmask.py
@@ -29,6 +29,10 @@ class AutounmaskTestCase(TestCase):
"app-misc/W-2": { "KEYWORDS": "~x86" },
"app-misc/V-1": { "KEYWORDS": "~x86", "DEPEND": ">=app-misc/W-2"},
+ #ebuilds to test mask and keyword changes
+ "app-text/A-1": {},
+ "app-text/B-1": { "KEYWORDS": "~x86" },
+
#ebuilds for mixed test for || dep handling
"sci-libs/K-1": { "DEPEND": " || ( sci-libs/L[bar] || ( sci-libs/M sci-libs/P ) )", "EAPI": 2},
"sci-libs/K-2": { "DEPEND": " || ( sci-libs/L[bar] || ( sci-libs/P sci-libs/M ) )", "EAPI": 2},
@@ -203,6 +207,21 @@ class AutounmaskTestCase(TestCase):
options = {"--autounmask": True},
use_changes = None,
success = False),
+
+ #Test mask and keyword changes.
+ ResolverPlaygroundTestCase(
+ ["app-text/A"],
+ options = {"--autounmask": True},
+ success = False,
+ mergelist = ["app-text/A-1"],
+ needed_p_mask_changes = ["app-text/A-1"]),
+ ResolverPlaygroundTestCase(
+ ["app-text/B"],
+ options = {"--autounmask": True},
+ success = False,
+ mergelist = ["app-text/B-1"],
+ unstable_keywords = ["app-text/B-1"],
+ needed_p_mask_changes = ["app-text/B-1"]),
)
profile = {
@@ -214,6 +233,11 @@ class AutounmaskTestCase(TestCase):
(
"forced-flag",
),
+ "package.mask":
+ (
+ "app-text/A",
+ "app-text/B",
+ ),
}
playground = ResolverPlayground(ebuilds=ebuilds, profile=profile)