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