1 |
Suppress "no system list" warning if @profile is non-empty, in order |
2 |
to support @profile as an alternative to @system. Suppress "no world |
3 |
file" warnings unless @world is completely empty, since having an |
4 |
empty world file can be a valid state. Abort if a PackageSetNotFound |
5 |
error is encountered, or if @world is completely empty. |
6 |
--- |
7 |
pym/_emerge/actions.py | 45 ++++++++++++++++++++++++++++++++------------- |
8 |
1 file changed, 32 insertions(+), 13 deletions(-) |
9 |
|
10 |
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py |
11 |
index 01aef51..a397fc2 100644 |
12 |
--- a/pym/_emerge/actions.py |
13 |
+++ b/pym/_emerge/actions.py |
14 |
@@ -699,30 +699,49 @@ def calc_depclean(settings, trees, ldpath_mtimes, |
15 |
protected_set = InternalPackageSet() |
16 |
protected_set_name = '____depclean_protected_set____' |
17 |
required_sets[protected_set_name] = protected_set |
18 |
- system_set = psets["system"] |
19 |
|
20 |
+ set_warning = False |
21 |
+ set_error = False |
22 |
set_atoms = {} |
23 |
for k in ("profile", "system", "selected"): |
24 |
try: |
25 |
set_atoms[k] = root_config.setconfig.getSetAtoms(k) |
26 |
- except portage.exception.PackageSetNotFound: |
27 |
+ except portage.exception.PackageSetNotFound as e: |
28 |
# A nested set could not be resolved, so ignore nested sets. |
29 |
set_atoms[k] = root_config.sets[k].getAtoms() |
30 |
+ writemsg_level(_("!!! The set '%s' " |
31 |
+ "contains a non-existent set named '%s'.\n") % |
32 |
+ (k, e), level=logging.ERROR, noiselevel=-1) |
33 |
+ set_error = True |
34 |
+ |
35 |
+ # Support @profile as an alternative to @system. |
36 |
+ if not (set_atoms["system"] or set_atoms["profile"]): |
37 |
+ writemsg_level(_("!!! You have no system list.\n"), |
38 |
+ level=logging.WARNING, noiselevel=-1) |
39 |
+ set_warning = True |
40 |
|
41 |
- if (not set_atoms["system"] or |
42 |
- not (set_atoms["selected"] or set_atoms["profile"])): |
43 |
- |
44 |
- if not set_atoms["system"]: |
45 |
- writemsg_level("!!! You have no system list.\n", |
46 |
+ # Suppress world file warnings unless @world is completely empty, |
47 |
+ # since having an empty world file can be a valid state. |
48 |
+ try: |
49 |
+ world_atoms = bool(root_config.setconfig.getSetAtoms('world')) |
50 |
+ except portage.exception.PackageSetNotFound as e: |
51 |
+ writemsg_level(_("!!! The set '%s' " |
52 |
+ "contains a non-existent set named '%s'.\n") % |
53 |
+ ("world", e), level=logging.ERROR, noiselevel=-1) |
54 |
+ set_error = True |
55 |
+ else: |
56 |
+ if not world_atoms: |
57 |
+ writemsg_level(_("!!! You have no world file.\n"), |
58 |
level=logging.ERROR, noiselevel=-1) |
59 |
+ set_error = True |
60 |
|
61 |
- # Skip this warning if @profile is non-empty, in order to |
62 |
- # support using @profile as an alternative to @selected |
63 |
- # for building a stage 4. |
64 |
- if not (set_atoms["selected"] or set_atoms["profile"]): |
65 |
- writemsg_level("!!! You have no world file.\n", |
66 |
- level=logging.WARNING, noiselevel=-1) |
67 |
+ if set_error: |
68 |
+ writemsg_level(_("!!! Aborting due to set configuration " |
69 |
+ "errors displayed above.\n"), |
70 |
+ level=logging.ERROR, noiselevel=-1) |
71 |
+ return 1, [], False, 0 |
72 |
|
73 |
+ if set_warning: |
74 |
writemsg_level("!!! Proceeding is likely to " + \ |
75 |
"break your installation.\n", |
76 |
level=logging.WARNING, noiselevel=-1) |
77 |
-- |
78 |
2.4.9 |