Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH] calc_depclean: adjust early warning messages
Date: Tue, 20 Oct 2015 16:54:12
Message-Id: 1445360025-29244-1-git-send-email-zmedico@gentoo.org
In Reply to: [gentoo-portage-dev] !!! You have no world file. by Joakim Tjernlund
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

Replies