1 |
commit: 9e813764e3056fe9a376af70d9bc80749980fe5e |
2 |
Author: Sebastian Luther <SebastianLuther <AT> gmx <DOT> de> |
3 |
AuthorDate: Wed Apr 27 20:36:15 2011 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Wed Apr 27 20:36:15 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=9e813764 |
7 |
|
8 |
--autounmask: Don't change masked/forced flags |
9 |
|
10 |
This will fix bug #364701. |
11 |
|
12 |
--- |
13 |
pym/_emerge/depgraph.py | 4 +++ |
14 |
pym/portage/tests/resolver/ResolverPlayground.py | 2 +- |
15 |
pym/portage/tests/resolver/test_autounmask.py | 31 +++++++++++++++++++++- |
16 |
3 files changed, 35 insertions(+), 2 deletions(-) |
17 |
|
18 |
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py |
19 |
index 391c845..a0a4622 100644 |
20 |
--- a/pym/_emerge/depgraph.py |
21 |
+++ b/pym/_emerge/depgraph.py |
22 |
@@ -3120,6 +3120,10 @@ class depgraph(object): |
23 |
not check_required_use(required_use, new_use, pkg.iuse.is_valid_flag): |
24 |
return old_use |
25 |
|
26 |
+ if pkg.use.mask.intersection(new_changes) or \ |
27 |
+ pkg.use.force.intersection(new_changes): |
28 |
+ return old_use |
29 |
+ |
30 |
self._dynamic_config._needed_use_config_changes[pkg] = (new_use, new_changes) |
31 |
backtrack_infos = self._dynamic_config._backtrack_infos |
32 |
backtrack_infos.setdefault("config", {}) |
33 |
|
34 |
diff --git a/pym/portage/tests/resolver/ResolverPlayground.py b/pym/portage/tests/resolver/ResolverPlayground.py |
35 |
index eb591bb..276b193 100644 |
36 |
--- a/pym/portage/tests/resolver/ResolverPlayground.py |
37 |
+++ b/pym/portage/tests/resolver/ResolverPlayground.py |
38 |
@@ -32,7 +32,7 @@ class ResolverPlayground(object): |
39 |
""" |
40 |
|
41 |
config_files = frozenset(("package.use", "package.mask", "package.keywords", \ |
42 |
- "package.unmask", "package.properties", "package.license")) |
43 |
+ "package.unmask", "package.properties", "package.license", "use.mask", "use.force")) |
44 |
|
45 |
def __init__(self, ebuilds={}, installed={}, profile={}, repo_configs={}, \ |
46 |
user_config={}, sets={}, world=[], debug=False): |
47 |
|
48 |
diff --git a/pym/portage/tests/resolver/test_autounmask.py b/pym/portage/tests/resolver/test_autounmask.py |
49 |
index 9e50be7..bd3a5f9 100644 |
50 |
--- a/pym/portage/tests/resolver/test_autounmask.py |
51 |
+++ b/pym/portage/tests/resolver/test_autounmask.py |
52 |
@@ -16,6 +16,12 @@ class AutounmaskTestCase(TestCase): |
53 |
"dev-libs/C-1": {}, |
54 |
"dev-libs/D-1": {}, |
55 |
|
56 |
+ #ebuilds to test if we allow changing of masked or forced flags |
57 |
+ "dev-libs/E-1": { "SLOT": 1, "DEPEND": "dev-libs/F[masked-flag]", "EAPI": 2}, |
58 |
+ "dev-libs/E-2": { "SLOT": 2, "DEPEND": "dev-libs/G[-forced-flag]", "EAPI": 2}, |
59 |
+ "dev-libs/F-1": { "IUSE": "masked-flag"}, |
60 |
+ "dev-libs/G-1": { "IUSE": "forced-flag"}, |
61 |
+ |
62 |
#ebuilds to test keyword changes |
63 |
"app-misc/Z-1": { "KEYWORDS": "~x86", "DEPEND": "app-misc/Y" }, |
64 |
"app-misc/Y-1": { "KEYWORDS": "~x86" }, |
65 |
@@ -185,9 +191,32 @@ class AutounmaskTestCase(TestCase): |
66 |
options = { "--autounmask": True }, |
67 |
use_changes = None, |
68 |
success = False), |
69 |
+ |
70 |
+ #Make sure we don't change masked/forced flags. |
71 |
+ ResolverPlaygroundTestCase( |
72 |
+ ["dev-libs/E:1"], |
73 |
+ options = {"--autounmask": True}, |
74 |
+ use_changes = None, |
75 |
+ success = False), |
76 |
+ ResolverPlaygroundTestCase( |
77 |
+ ["dev-libs/E:2"], |
78 |
+ options = {"--autounmask": True}, |
79 |
+ use_changes = None, |
80 |
+ success = False), |
81 |
) |
82 |
|
83 |
- playground = ResolverPlayground(ebuilds=ebuilds) |
84 |
+ profile = { |
85 |
+ "use.mask": |
86 |
+ ( |
87 |
+ "masked-flag", |
88 |
+ ), |
89 |
+ "use.force": |
90 |
+ ( |
91 |
+ "forced-flag", |
92 |
+ ), |
93 |
+ } |
94 |
+ |
95 |
+ playground = ResolverPlayground(ebuilds=ebuilds, profile=profile) |
96 |
try: |
97 |
for test_case in test_cases: |
98 |
playground.run_TestCase(test_case) |