Gentoo Archives: gentoo-user

From: Michael <confabulate@××××××××.com>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Gobbledegook error message from emerge.
Date: Fri, 11 Dec 2020 20:42:03
Message-Id: 2901530.CbtlEUcBR6@lenovo.localdomain
In Reply to: [gentoo-user] Gobbledegook error message from emerge. by Alan Mackenzie
1 On Friday, 11 December 2020 18:08:55 GMT Alan Mackenzie wrote:
2 > Hello, Gentoo.
3 >
4 > I'm angry, because I've wasted several hours trying to decypher a wholly
5 > unintuitive error "message" from emerge. Because of this, it's been too
6 > long since I've been able to update. Help, please!
7
8 I feel your pain, as I have often sweated over messages emerge spews out at
9 me, which tends to happen mostly when I do not have the time to delve into
10 fixing it! I sometimes also find these messages to be unintuitive (for me) as
11 I struggle to decipher 'portaguese'. :-)
12
13
14 > The command I typed in was
15 >
16 > # time emerge -auND @world.
17 >
18 > I got back a horrendously long list of packages to merge (most of them
19 > re-merges), followed by:
20
21 There was a recent python upgrade, which caused a lot of packages with python
22 as a dependency requiring an update or to be rebuilt. Other users were also
23 caught up in this. A recommendation was to run emerge with '-U', rather than
24 '-N', which may produce a smaller list of packages to update.
25
26
27 > emerge: there are no ebuilds built with USE flags to satisfy
28 > "dev-python/pycparser[python_targets_python3_6(-)?,python_targets_python3_7
29 > (-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_singl
30 > e_target_python3_6(-),-python_single_target_python3_7(-),-python_single_targ
31 > et_python3_8(-),-python_single_target_python3_9(-)]". !!! One of the
32 > following packages is required to complete your request: -
33 > dev-python/pycparser-2.20-r1::gentoo (Change USE:
34 > +python_targets_python3_7) - dev-python/cffi-1.14.0-r3::gentoo (Change USE:
35 > -python_targets_python3_7) (dependency required by
36 > "dev-python/cffi-1.14.0-r3::gentoo" [ebuild]) (dependency required by
37 > "dev-python/bcrypt-3.2.0::gentoo" [installed]) (dependency required by
38 > "dev-python/paramiko-2.7.1::gentoo" [installed]) (dependency required by
39 > "dev-vcs/bzr-2.7.0::gentoo" [installed])
40 > (dependency required by "@selected" [set])
41 > (dependency required by "@world" [argument])
42 >
43 > . What is the syntax and semantics of that first line? Is it explained
44 > somewhere in the emerge manual? What do the square brackets mean? What
45 > do the commas within these square brackes mean? AND? OR? What about
46 > the question marks following minus signs inside parentheses?
47
48 Have a quick look at:
49
50 https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/Portage
51
52 and in particular the section "Necessary USE flag changes", but also look at
53 the output of the package which complains about change of USE, with eix, e.g.:
54
55 $ eix -l dev-python/pycparser
56 [I] dev-python/pycparser
57 Available versions:
58 2.20-r1 [PYTHON_TARGETS="pypy3 python3_6 python3_7 python3_8
59 python3_9"] ["|| ( python_targets_pypy3 python_targets_python3_6
60 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )"]
61 Installed versions: 2.20-r1(12:55:41 05/12/20)(PYTHON_TARGETS="python3_8
62 -pypy3 -python3_6 -python3_7 -python3_9")
63 Homepage: https://github.com/eliben/pycparser
64 Description: C parser and AST generator written in Python
65
66 The output explains what USE flags the package was installed with and what
67 other flags are available. Other tools also show USE flags, e.g.
68
69 $ equery u dev-python/pycparser
70
71 Also, taking a look at the ebuild file could reveal similarly useful info:
72
73 PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 )
74
75
76
77 > What does "(Change USE: +python_targets_python3_7)" mean? Is it a
78 > suggestion to me that I should change some USE flag somewhere? Or is it
79 > telling me that a changed USE flag is the reason for all the trouble? Or
80 > does it mean something else?
81
82 It means the particular package was installed with some USE flag, which is now
83 incompatible with the current version of the package or one of its
84 dependencies. You'll need USE="+python_targets_python3_7" to be able to build
85 it. Therefore you may need to intervene to change a previous USE flag setting
86 to allow that package to rebuild/update.
87
88 In cases like this I tend to grep quickly my /etc/portage settings to see if I
89 have configured manually a USE flag, which is no longer needed; e.g.
90 python3_5 - then unset it, unless you have a particular reason to force this
91 USE flag for some package which you need on your system.
92
93 grep python*_ -r /etc/portage
94
95
96 > What is "dependency required by" supposed to mean? I can understand a
97 > dependency of A on B. I can understand A being required by B. But a
98 > dependency being required? what does this mean?
99
100 I understand "dependency required by" to refer to package B, which is a build
101 time dependency of package A. Package B also requires a change of USE flag,
102 besides package A.
103
104 (If I got this wrong someone will chime in to correct me).
105
106
107 > Presumably to get out of the mess I've got to do something with one of
108 > the packages which "is required to complete your request".
109
110 I would interpret the message you got to mean:
111
112 You have set some USE flag somewhere, or have previously emerged a package
113 with a USE flag, which portage cannot resolve on its own using default USE
114 flag settings. Therefore you need to decide what to do with USE flags
115 identified in this message for each package mentioned.
116
117 Some options to consider:
118
119 1. You can remove any python specific USE settings as I suggest above and let
120 portage find its own way using default USE settings as far as python versions
121 goes.
122
123 2. You can start emerging with '--oneshot' packages from the top in small
124 batches and see if portage will eventually complete without further
125 complaints. This won't work with python if you have specified (i.e.
126 restricted) portage to use some deprecated python version - e.g. python-3.4
127
128 3. You can sometime uninstall an offending package (not yet its dependencies)
129 and see if portage will complete your emerge list - then emerge the package
130 you uninstalled if you still need it. WARNING: uninstalling python is a
131 *bad* idea, because portage runs on python. Don't do it!
132
133 4. When you finish run emerge -p -depclean to see if there are leftover
134 dependencies no longer needed. Also look at 'eselect python' to clean up any
135 dangling references to python versions no longer installed.
136
137
138 > Surely somebody in the Gentoo portage team must see that printing human
139 > readable error messages is a worthwhile thing to do. Surely?
140
141 Heh! You assume devs speak the same language like the rest of the human
142 species? ;-)
143
144 I hope the above helps to untangle the spaghetti emerge produced in this
145 instance, but post back if more help is needed. Someone more well versed in
146 python and portage should contribute sooner or later.

Attachments

File name MIME type
signature.asc application/pgp-signature