1 |
Three new settings were added to /etc/portage/color.map: |
2 |
PKG_MERGE_USER_SET, PKG_BINARY_MERGE_USER_SET, and |
3 |
PKG_NOMERGE_USER_SET. These colors are applied when the package is |
4 |
selected from a set in /etc/portage/sets/ |
5 |
|
6 |
X-Gentoo-bug: 577720 |
7 |
X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=577720 |
8 |
--- |
9 |
man/color.map.5 | 11 ++++++++++ |
10 |
pym/_emerge/resolver/output.py | 39 ++++++++++++++++++++++------------ |
11 |
pym/_emerge/resolver/output_helpers.py | 8 ++++--- |
12 |
pym/portage/_sets/base.py | 3 +++ |
13 |
pym/portage/_sets/files.py | 3 +++ |
14 |
pym/portage/output.py | 39 ++++++++++++++++++---------------- |
15 |
6 files changed, 68 insertions(+), 35 deletions(-) |
16 |
|
17 |
diff --git a/man/color.map.5 b/man/color.map.5 |
18 |
index 5543628..39f23f7 100644 |
19 |
--- a/man/color.map.5 |
20 |
+++ b/man/color.map.5 |
21 |
@@ -46,6 +46,9 @@ Defines color used for satisfied blockers. |
22 |
\fBPKG_MERGE\fR = \fI"darkgreen"\fR |
23 |
Defines color used for packages planned to be merged. |
24 |
.TP |
25 |
+\fBPKG_MERGE_USER_SET\fR = \fI"darkgreen"\fR |
26 |
+Defines color used for packages planned to be merged from a user defined set. |
27 |
+.TP |
28 |
\fBPKG_MERGE_SYSTEM\fR = \fI"darkgreen"\fR |
29 |
Defines color used for system packages planned to be merged. |
30 |
.TP |
31 |
@@ -55,6 +58,10 @@ Defines color used for world packages planned to be merged. |
32 |
\fBPKG_BINARY_MERGE\fR = \fI"purple"\fR |
33 |
Defines color used for packages planned to be merged using a binary package. |
34 |
.TP |
35 |
+\fBPKG_BINARY_MERGE_USER_SET\fR = \fI"purple"\fR |
36 |
+Defines color used for packages planned to be merged using a binary package |
37 |
+from a user defined set. |
38 |
+.TP |
39 |
\fBPKG_BINARY_MERGE_SYSTEM\fR = \fI"purple"\fR |
40 |
Defines color used for system packages planned to be merged using a binary |
41 |
package. |
42 |
@@ -66,6 +73,10 @@ package. |
43 |
\fBPKG_NOMERGE\fR = \fI"darkblue"\fR |
44 |
Defines color used for packages not planned to be merged. |
45 |
.TP |
46 |
+\fBPKG_NOMERGE_USER_SET\fR = \fI"darkblue"\fR |
47 |
+Defines color used for packages not planned to be merged from a user defined |
48 |
+set. |
49 |
+.TP |
50 |
\fBPKG_NOMERGE_SYSTEM\fR = \fI"darkblue"\fR |
51 |
Defines color used for system packages not planned to be merged. |
52 |
.TP |
53 |
diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py |
54 |
index 400617d..4cb8393 100644 |
55 |
--- a/pym/_emerge/resolver/output.py |
56 |
+++ b/pym/_emerge/resolver/output.py |
57 |
@@ -271,6 +271,8 @@ class Display(object): |
58 |
return colorize("PKG_BINARY_MERGE_SYSTEM", pkg_str) |
59 |
elif pkg_info.world: |
60 |
return colorize("PKG_BINARY_MERGE_WORLD", pkg_str) |
61 |
+ elif pkg_info.user_set: |
62 |
+ return colorize("PKG_BINARY_MERGE_USER_SET", pkg_str) |
63 |
else: |
64 |
return colorize("PKG_BINARY_MERGE", pkg_str) |
65 |
else: |
66 |
@@ -278,6 +280,8 @@ class Display(object): |
67 |
return colorize("PKG_MERGE_SYSTEM", pkg_str) |
68 |
elif pkg_info.world: |
69 |
return colorize("PKG_MERGE_WORLD", pkg_str) |
70 |
+ elif pkg_info.user_set: |
71 |
+ return colorize("PKG_MERGE_USER_SET", pkg_str) |
72 |
else: |
73 |
return colorize("PKG_MERGE", pkg_str) |
74 |
elif pkg_info.operation == "uninstall": |
75 |
@@ -287,6 +291,8 @@ class Display(object): |
76 |
return colorize("PKG_NOMERGE_SYSTEM", pkg_str) |
77 |
elif pkg_info.world: |
78 |
return colorize("PKG_NOMERGE_WORLD", pkg_str) |
79 |
+ elif pkg_info.user_set: |
80 |
+ return colorize("PKG_NOMERGE_USER_SET", pkg_str) |
81 |
else: |
82 |
return colorize("PKG_NOMERGE", pkg_str) |
83 |
|
84 |
@@ -699,22 +705,27 @@ class Display(object): |
85 |
return |
86 |
|
87 |
|
88 |
- def check_system_world(self, pkg): |
89 |
- """Checks for any occurances of the package in the system or world sets |
90 |
+ def check_sets(self, pkg): |
91 |
+ """Checks for any occurances of the package in the portage sets |
92 |
|
93 |
@param pkg: _emerge.Package.Package instance |
94 |
- @rtype system and world booleans |
95 |
+ @rtype user_set, system, and world booleans |
96 |
""" |
97 |
root_config = self.conf.roots[pkg.root] |
98 |
- system_set = root_config.sets["system"] |
99 |
- world_set = root_config.sets["selected"] |
100 |
- system = False |
101 |
- world = False |
102 |
+ user_set = None |
103 |
+ system = None |
104 |
+ world = None |
105 |
try: |
106 |
- system = system_set.findAtomForPackage( |
107 |
- pkg, modified_use=self.conf.pkg_use_enabled(pkg)) |
108 |
- world = world_set.findAtomForPackage( |
109 |
- pkg, modified_use=self.conf.pkg_use_enabled(pkg)) |
110 |
+ for set_name in root_config.sets: |
111 |
+ if set_name == "system": |
112 |
+ system = root_config.sets[set_name].findAtomForPackage( |
113 |
+ pkg, modified_use=self.conf.pkg_use_enabled(pkg)) |
114 |
+ elif set_name == "selected": |
115 |
+ world = root_config.sets[set_name].findAtomForPackage( |
116 |
+ pkg, modified_use=self.conf.pkg_use_enabled(pkg)) |
117 |
+ elif user_set is None and root_config.sets[set_name].isUserSet(): |
118 |
+ user_set = root_config.sets[set_name].findAtomForPackage( |
119 |
+ pkg, modified_use=self.conf.pkg_use_enabled(pkg)) |
120 |
if not (self.conf.oneshot or world) and \ |
121 |
pkg.root == self.conf.target_root and \ |
122 |
self.conf.favorites.findAtomForPackage( |
123 |
@@ -726,7 +737,7 @@ class Display(object): |
124 |
except InvalidDependString: |
125 |
# This is reported elsewhere if relevant. |
126 |
pass |
127 |
- return system, world |
128 |
+ return user_set, system, world |
129 |
|
130 |
|
131 |
@staticmethod |
132 |
@@ -863,8 +874,8 @@ class Display(object): |
133 |
self.oldlp = self.conf.columnwidth - 30 |
134 |
self.newlp = self.oldlp - 30 |
135 |
pkg_info.oldbest = self.convert_myoldbest(pkg, pkg_info) |
136 |
- pkg_info.system, pkg_info.world = \ |
137 |
- self.check_system_world(pkg) |
138 |
+ pkg_info.user_set, pkg_info.system, pkg_info.world = \ |
139 |
+ self.check_sets(pkg) |
140 |
if 'interactive' in pkg.properties and \ |
141 |
pkg.operation == 'merge': |
142 |
pkg_info.attr_display.interactive = True |
143 |
diff --git a/pym/_emerge/resolver/output_helpers.py b/pym/_emerge/resolver/output_helpers.py |
144 |
index 70f7bc0..801774f 100644 |
145 |
--- a/pym/_emerge/resolver/output_helpers.py |
146 |
+++ b/pym/_emerge/resolver/output_helpers.py |
147 |
@@ -596,7 +596,8 @@ class PkgInfo(object): |
148 |
__slots__ = ("attr_display", "built", "cp", |
149 |
"ebuild_path", "fetch_symbol", "merge", |
150 |
"oldbest", "oldbest_list", "operation", "ordered", "previous_pkg", |
151 |
- "repo_name", "repo_path_real", "slot", "sub_slot", "system", "use", "ver", "world") |
152 |
+ "repo_name", "repo_path_real", "user_set", "slot", "sub_slot", |
153 |
+ "system", "use", "ver", "world") |
154 |
|
155 |
|
156 |
def __init__(self): |
157 |
@@ -612,12 +613,13 @@ class PkgInfo(object): |
158 |
self.previous_pkg = None |
159 |
self.repo_path_real = '' |
160 |
self.repo_name = '' |
161 |
+ self.user_set = None |
162 |
self.slot = '' |
163 |
self.sub_slot = '' |
164 |
- self.system = False |
165 |
+ self.system = None |
166 |
self.use = '' |
167 |
self.ver = '' |
168 |
- self.world = False |
169 |
+ self.world = None |
170 |
self.attr_display = PkgAttrDisplay() |
171 |
|
172 |
class PkgAttrDisplay(SlotObject): |
173 |
diff --git a/pym/portage/_sets/base.py b/pym/portage/_sets/base.py |
174 |
index ee20d36..a73fb93 100644 |
175 |
--- a/pym/portage/_sets/base.py |
176 |
+++ b/pym/portage/_sets/base.py |
177 |
@@ -173,6 +173,9 @@ class PackageSet(object): |
178 |
cpv_slot_list): |
179 |
yield atom |
180 |
|
181 |
+ def isUserSet(self): |
182 |
+ return False |
183 |
+ |
184 |
class EditablePackageSet(PackageSet): |
185 |
|
186 |
def __init__(self, allow_wildcard=False, allow_repo=False): |
187 |
diff --git a/pym/portage/_sets/files.py b/pym/portage/_sets/files.py |
188 |
index e045701..7f844ef 100644 |
189 |
--- a/pym/portage/_sets/files.py |
190 |
+++ b/pym/portage/_sets/files.py |
191 |
@@ -174,6 +174,9 @@ class StaticFileSet(EditablePackageSet): |
192 |
greedy=greedy, dbapi=trees["vartree"].dbapi) |
193 |
return rValue |
194 |
multiBuilder = classmethod(multiBuilder) |
195 |
+ |
196 |
+ def isUserSet(self): |
197 |
+ return True |
198 |
|
199 |
class ConfigFileSet(PackageSet): |
200 |
def __init__(self, filename): |
201 |
diff --git a/pym/portage/output.py b/pym/portage/output.py |
202 |
index bb7542b..80c67e8 100644 |
203 |
--- a/pym/portage/output.py |
204 |
+++ b/pym/portage/output.py |
205 |
@@ -128,24 +128,27 @@ _styles["HILITE"] = ( "teal", ) |
206 |
_styles["BRACKET"] = ( "blue", ) |
207 |
|
208 |
# Portage functions |
209 |
-_styles["INFORM"] = ( "darkgreen", ) |
210 |
-_styles["UNMERGE_WARN"] = ( "red", ) |
211 |
-_styles["SECURITY_WARN"] = ( "red", ) |
212 |
-_styles["MERGE_LIST_PROGRESS"] = ( "yellow", ) |
213 |
-_styles["PKG_BLOCKER"] = ( "red", ) |
214 |
-_styles["PKG_BLOCKER_SATISFIED"] = ( "darkblue", ) |
215 |
-_styles["PKG_MERGE"] = ( "darkgreen", ) |
216 |
-_styles["PKG_MERGE_SYSTEM"] = ( "darkgreen", ) |
217 |
-_styles["PKG_MERGE_WORLD"] = ( "green", ) |
218 |
-_styles["PKG_BINARY_MERGE"] = ( "purple", ) |
219 |
-_styles["PKG_BINARY_MERGE_SYSTEM"] = ( "purple", ) |
220 |
-_styles["PKG_BINARY_MERGE_WORLD"] = ( "fuchsia", ) |
221 |
-_styles["PKG_UNINSTALL"] = ( "red", ) |
222 |
-_styles["PKG_NOMERGE"] = ( "darkblue", ) |
223 |
-_styles["PKG_NOMERGE_SYSTEM"] = ( "darkblue", ) |
224 |
-_styles["PKG_NOMERGE_WORLD"] = ( "blue", ) |
225 |
-_styles["PROMPT_CHOICE_DEFAULT"] = ( "green", ) |
226 |
-_styles["PROMPT_CHOICE_OTHER"] = ( "red", ) |
227 |
+_styles["INFORM"] = ( "darkgreen", ) |
228 |
+_styles["UNMERGE_WARN"] = ( "red", ) |
229 |
+_styles["SECURITY_WARN"] = ( "red", ) |
230 |
+_styles["MERGE_LIST_PROGRESS"] = ( "yellow", ) |
231 |
+_styles["PKG_BLOCKER"] = ( "red", ) |
232 |
+_styles["PKG_BLOCKER_SATISFIED"] = ( "darkblue", ) |
233 |
+_styles["PKG_MERGE"] = ( "darkgreen", ) |
234 |
+_styles["PKG_MERGE_USER_SET"] = ( "darkgreen", ) |
235 |
+_styles["PKG_MERGE_SYSTEM"] = ( "darkgreen", ) |
236 |
+_styles["PKG_MERGE_WORLD"] = ( "green", ) |
237 |
+_styles["PKG_BINARY_MERGE"] = ( "purple", ) |
238 |
+_styles["PKG_BINARY_MERGE_USER_SET"] = ( "purple", ) |
239 |
+_styles["PKG_BINARY_MERGE_SYSTEM"] = ( "purple", ) |
240 |
+_styles["PKG_BINARY_MERGE_WORLD"] = ( "fuchsia", ) |
241 |
+_styles["PKG_UNINSTALL"] = ( "red", ) |
242 |
+_styles["PKG_NOMERGE"] = ( "darkblue", ) |
243 |
+_styles["PKG_NOMERGE_USER_SET"] = ( "darkblue", ) |
244 |
+_styles["PKG_NOMERGE_SYSTEM"] = ( "darkblue", ) |
245 |
+_styles["PKG_NOMERGE_WORLD"] = ( "blue", ) |
246 |
+_styles["PROMPT_CHOICE_DEFAULT"] = ( "green", ) |
247 |
+_styles["PROMPT_CHOICE_OTHER"] = ( "red", ) |
248 |
|
249 |
def _parse_color_map(config_root='/', onerror=None): |
250 |
""" |
251 |
-- |
252 |
2.7.3 |