1 |
-----BEGIN PGP SIGNED MESSAGE----- |
2 |
Hash: SHA1 |
3 |
|
4 |
{{sorry if you receive this message twice. I've got smtp problems and I |
5 |
had to switch smtp, so please reply to THIS message only}} |
6 |
|
7 |
there are pieces of software that consist of multiple packages (either |
8 |
by upstream decision, or by a Gentoo dev that splits a package) and |
9 |
have the additional restriction that every component must have the |
10 |
exact same version (or in some case the exact major version). |
11 |
|
12 |
examples are Qt, and SynCE (I'll take the latter as example, as it is |
13 |
my area of competence). |
14 |
|
15 |
SynCE requires the same major version of other synce packages to work. |
16 |
so, inside synce ebuilds I do this: |
17 |
|
18 |
|
19 |
synce_PV=$(get_version_component_range 1-2) |
20 |
|
21 |
DEPEND=" ... =app-pda/synce-libsynce-${synce_PV}* ... " |
22 |
|
23 |
|
24 |
I introduced this in synce 0.13 series, without thinking to what would |
25 |
be happened (today) when a user (me) would have tried to upgrade from |
26 |
synce 0.13 to synce 0.14 (in my overlay now) |
27 |
|
28 |
portage can't resolve the conflict by itself, because, as it tries to |
29 |
touch one of dependencies (upgrading 0.13 => 0.14), the currently |
30 |
installed synce meta ebuild 0.13 [which depends on =0.13* deps too] |
31 |
won't allow that (that is: block everything that is not 0.13*) |
32 |
|
33 |
as a consequence, the multiple-packages-per-slot error is shown when |
34 |
upgrading packages [1]. |
35 |
|
36 |
after exchanging a few words with some devs on IRC, I understand no |
37 |
solution actually exists for this. :-( |
38 |
|
39 |
but still, that ebuild snippet is a formally legal directive (?) |
40 |
what I want to state is that the user has to have installed all synce |
41 |
of the same major version (0.13.*) to properly work |
42 |
|
43 |
I can see also why portage is failing: |
44 |
when (trying to) upgrading the first package, the whole package set |
45 |
enters into a *transient* state, which is not valid for normal usage |
46 |
(that is: one 0.14 lib, and all other 0.13 libs), but still has to be |
47 |
valid in order for portage being able to upgrade correctly all the |
48 |
packages, because when portage will end [successfully!], the system |
49 |
will be again in a valid state. |
50 |
|
51 |
|
52 |
what I am going to propose here is a resolution strategy for this |
53 |
(although this whole thing simply tells me that portage misses some |
54 |
knowledge about the problem, like for example that dependencies should |
55 |
be enforced only at transaction boundaries, or simply that we have a |
56 |
class of dependencies that is irrelevant while system is in transient |
57 |
state) |
58 |
|
59 |
but, without trying to introduce overcomplicated solutions, as an |
60 |
user, I could solve the initial problem very easily: |
61 |
resolution strategy for it is to unmerge the old synce-0.13 packages, |
62 |
then the user will be able to install 0.14 packages. |
63 |
|
64 |
so, if the user can do it, why can't portage handle it? (so that even |
65 |
a not-so-smart user could painlessly get out of this mess) |
66 |
|
67 |
many devs pointed out how Qt works, that is, only depends on |
68 |
>=other-qt-library-${PV}, but that IMHO is an incomplete dep |
69 |
specification (read: a workaround). |
70 |
|
71 |
before I revert my changes to synce packages, are there any will to |
72 |
change portage behavior in the near future to support and fix this? |
73 |
|
74 |
[1]# emerge -auvDN world |
75 |
|
76 |
These are the packages that would be merged, in order: |
77 |
|
78 |
Calculating dependencies... done! |
79 |
[ebuild U ] app-pda/synce-libsynce-0.14 [0.13] USE="hal" 364 kB [0=>1] |
80 |
[ebuild U ] app-pda/synce-librapi2-0.14 [0.13.1] 483 kB [0=>1] |
81 |
[ebuild U ] app-pda/synce-librra-0.14 [0.13] 414 kB [0=>1] |
82 |
[ebuild U ] app-pda/synce-sync-engine-0.14 [0.13] 158 kB [0=>1] |
83 |
[ebuild U ] app-pda/synce-hal-0.14 [0.13] 314 kB [0=>1] |
84 |
[ebuild U ] app-pda/synce-kpm-0.14 [0.13] 90 kB [0=>1] |
85 |
[ebuild U ] app-pda/synce-trayicon-0.14 [0.13] USE="-debug" 381 kB |
86 |
[0=>1] |
87 |
[ebuild U ] app-pda/synce-gvfs-0.3 [0.2.1] USE="-debug" 1,950 kB |
88 |
[0=>1] |
89 |
[ebuild U ] app-pda/synce-0.14 [0.13] USE="gnome hal -kde -serial" |
90 |
0 kB [0=>1] |
91 |
|
92 |
Total: 9 packages (9 upgrades), Size of downloads: 4,151 kB |
93 |
Portage tree and overlays: |
94 |
[0] /usr/portage |
95 |
[1] /usr/local/portage/synce |
96 |
|
97 |
!!! Multiple package instances within a single package slot have been |
98 |
pulled |
99 |
!!! into the dependency graph, resulting in a slot conflict: |
100 |
|
101 |
app-pda/synce-librapi2:0 |
102 |
|
103 |
('ebuild', '/', 'app-pda/synce-librapi2-0.14', 'merge') pulled in by |
104 |
=app-pda/synce-librapi2-0.14* required by ('ebuild', '/', |
105 |
'app-pda/synce-librra-0.14', 'merge') |
106 |
=app-pda/synce-librapi2-0.14* required by ('ebuild', '/', |
107 |
'app-pda/synce-hal-0.14', 'merge') |
108 |
=app-pda/synce-librapi2-0.14* required by ('ebuild', '/', |
109 |
'app-pda/synce-gvfs-0.3', 'merge') |
110 |
(and 1 more) |
111 |
|
112 |
('installed', '/', 'app-pda/synce-librapi2-0.13.1', 'nomerge') |
113 |
pulled in by |
114 |
=app-pda/synce-librapi2-0.13* required by ('installed', '/', |
115 |
'app-pda/synce-gnomevfs-0.13', 'nomerge') |
116 |
|
117 |
app-pda/synce-libsynce:0 |
118 |
|
119 |
('ebuild', '/', 'app-pda/synce-libsynce-0.14', 'merge') pulled in by |
120 |
=app-pda/synce-libsynce-0.14* required by ('ebuild', '/', |
121 |
'app-pda/synce-gvfs-0.3', 'merge') |
122 |
=app-pda/synce-libsynce-0.14* required by ('ebuild', '/', |
123 |
'app-pda/synce-hal-0.14', 'merge') |
124 |
=app-pda/synce-libsynce-0.14* required by ('ebuild', '/', |
125 |
'app-pda/synce-librapi2-0.14', 'merge') |
126 |
(and 3 more) |
127 |
|
128 |
('installed', '/', 'app-pda/synce-libsynce-0.13', 'nomerge') pulled |
129 |
in by |
130 |
=app-pda/synce-libsynce-0.13* required by ('installed', '/', |
131 |
'app-pda/synce-gnomevfs-0.13', 'nomerge') |
132 |
=app-pda/synce-libsynce-0.13* required by ('installed', '/', |
133 |
'app-pda/synce-librapi2-0.13.1', 'nomerge') |
134 |
(and 1 more) |
135 |
|
136 |
|
137 |
It may be possible to solve this problem by using package.mask to |
138 |
prevent one of those packages from being selected. However, it is also |
139 |
possible that conflicting dependencies exist such that they are |
140 |
impossible to satisfy simultaneously. If such a conflict exists in the |
141 |
dependencies of two different packages, then those packages can not be |
142 |
installed simultaneously. |
143 |
|
144 |
For more information, see MASKED PACKAGES section in the emerge man page |
145 |
or refer to the Gentoo Handbook. |
146 |
|
147 |
-----BEGIN PGP SIGNATURE----- |
148 |
Version: GnuPG v2.0.11 (GNU/Linux) |
149 |
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org |
150 |
|
151 |
iEYEARECAAYFAkp54CAACgkQV/B5axfzrPuMNQCghJ3aeEWRlTvKfJfK1JSSY8+R |
152 |
lGwAnAgaO4n4mR+1E/mPTO2syf29xJDz |
153 |
=ZhkE |
154 |
-----END PGP SIGNATURE----- |