1 |
* Bo Ørsted Andresen <bo.andresen@××××.dk> wrote: |
2 |
|
3 |
Hi, |
4 |
|
5 |
> > These are packages totally incompatible and so different |
6 |
> > packages under the same name. They're sometimes necessary, |
7 |
> > since certain projects still require very old version, |
8 |
> > even if upgrade wouldn't be such a problem and has already |
9 |
> > been done by contributors (ie. mozilla). |
10 |
> |
11 |
> Well, they still are different versions under the same packages |
12 |
> from the same projects. |
13 |
|
14 |
Evolutionarily yes, technically no ;-P |
15 |
They're in fact very diffrent, but provide an very similar |
16 |
(almost the same) functionality. |
17 |
|
18 |
The problem is: upstream claims that newer evolutions steps |
19 |
were newer versions, Gentoo takes it as it is and runs into |
20 |
trouble, the attempt to fix this is slotting. |
21 |
|
22 |
If we simply would consider them as different packages, |
23 |
the whole story would be trivial. We just have to decide at |
24 |
which point a split has to be done. The whole complexity of |
25 |
slotting and the still unsolved problems (ie. cleaning up) |
26 |
could be dropped and dependency handling would be easy. |
27 |
|
28 |
For example gtk: |
29 |
|
30 |
First there was gtk-1.x. Later came gtk-2.x. They never were |
31 |
compatible (except maybe early alpha state ;-)). They always |
32 |
have been different packages, very similar, but different. |
33 |
|
34 |
So if gtk-2.x would simply be called gtk2, the whole idea of |
35 |
slotting wouldn't be necessary here. There are packages depending |
36 |
on gtk and others depending on gtk2. Trivial. |
37 |
|
38 |
Same with autoconf. The numbering is not that easy here, since |
39 |
major breaks sometimes happen with minor version changes. So |
40 |
we just have to look a bit more cafully. But still much simpler |
41 |
as adjusting all these versioned dependencies which are necessary |
42 |
with slotting. |
43 |
|
44 |
Maybe it would be different if the slot number would be essential |
45 |
part of the package atom. But I'm not sure if it's really necessary |
46 |
to have such an additional complexity if there is an clear scheme |
47 |
for putting those "evolution levels" into the package name. |
48 |
|
49 |
Gentoo always tries to stay as near as possible to the upstream. |
50 |
Thats okay, if we're talking about patches. But taking those crappy |
51 |
versionings from the upstream IMHO produces unnecessary trouble |
52 |
|
53 |
> > Gentoo has an strange magic for handling that, called "Slots". |
54 |
> > They deeply break the linear version space. This makes handling |
55 |
> > very tricky and requires much additional complexity. Some of |
56 |
> > the other replies should make clear some prolems ... |
57 |
> |
58 |
> I have no idea what breaking 'the linear version space' means. |
59 |
|
60 |
Let's try some little (some bit mathematic) definition: |
61 |
|
62 |
Version numbers are living within an scalar 1-dimensional space, |
63 |
ie. like rational numbers, but with holes. (ups, it's not really |
64 |
linear if we have holes ;-o). But all numbers are comparable with |
65 |
<,>,= operations. We normally represent them as n-vectors, ie. in |
66 |
form of 1.2.3.4 but in fact the right side dimensions are intervals |
67 |
in the left side ones. Assuming the digits may take 0..9, we could |
68 |
define the scalar value of A.B.C.D as A*1000+B*100+C*10+D ... |
69 |
|
70 |
(My Briegel buildsystem, which is a little bit like portage, but for |
71 |
embedded/crosscompiling, uses this model as well as the Comprehensive |
72 |
Source Database ;P) |
73 |
|
74 |
The Idea of this "linear" version space is that we can compare each |
75 |
version with another one very easy. Additionally use the axiom that |
76 |
higher versions are always successors of lower ones and backwards |
77 |
compatible. In this situation the whole package management story |
78 |
is really easy. Things like slots are not necessary. If we also take |
79 |
in binary compatibility, revdev-rebuild is also not needed. Evrything |
80 |
is strictly defined in the dependency graph. |
81 |
|
82 |
> And I don't see how having automake in 7 different packages instead |
83 |
> of seven slots under the same package makes it any less complex. |
84 |
|
85 |
It WILL make it easier. The whole slot handling could be dropped off |
86 |
(makes the code much easier) and the problems with slots simply |
87 |
would not exist. |
88 |
|
89 |
> How is having a depend on =sys-devel/automake-1.4* or sys-devel/automake:1.4 |
90 |
> any more complex than a depend on a separate packages named |
91 |
> sys-devel/automake-1.4 ? |
92 |
|
93 |
What if now comes an 1.4.99 which is totally incompatible with the |
94 |
other 1.4.* ? What do you do now ? |
95 |
|
96 |
Drop that 1.4.99 ? |
97 |
Give it another version, ie. some 1.5.* ? |
98 |
Touch all depending patches to exclude 1.4.99 ? |
99 |
|
100 |
> There are actuallly packages in the tree that don't care which version |
101 |
> of automake is in use (at least according to there ebuilds). Now they |
102 |
> just depend on sys-devel/automake. With your brilliant solution they |
103 |
> would have to depend on || ( sys-devel/automake-1.4 |
104 |
> sys-devel/automake-1.5 ... ). |
105 |
|
106 |
Simply add an virtual for that ? |
107 |
|
108 |
BTW: (beside rare cases), ebuilds normally sould have no variants |
109 |
in their dependencies - this should be left to the virtuals, IMHO. |
110 |
|
111 |
> > No idea, why the responsible Gentoo-devs didn't just give |
112 |
> > those incompatible packages different names, especially on |
113 |
> > their own packages. AFAIK, java-config is made by Gentoo. |
114 |
> > It would be trivial, just to call the 2.x version something |
115 |
> > like java-config-2 ... perhaps too simple for them ? |
116 |
> |
117 |
> It still doesn't change the problem that if they have different |
118 |
> files with the same name they need to install it in different |
119 |
> places. That problem is just the same whether in slots or separate |
120 |
> packages. |
121 |
|
122 |
Right. But that argument is neither for slots nor against. |
123 |
|
124 |
> [SNIP] |
125 |
> > As someone else already that: one of the problems with slots. |
126 |
> > They don't work well on cleanup. I wonder if anybody ever thought |
127 |
> > about that when slots were introduced. |
128 |
> |
129 |
> --depclean does actually remove unneeded slots now for packages |
130 |
> not in system or world. |
131 |
|
132 |
Well, I didn't prove it by myself - just took the input from this |
133 |
list, where people stated it would NOT do it cleanly. |
134 |
|
135 |
> By removing slotting you take away flexibility and make things |
136 |
> in a source distribution harder. |
137 |
|
138 |
What flexibility do I take away exactly ? |
139 |
And what exactly gets harder ? |
140 |
|
141 |
|
142 |
cu |
143 |
-- |
144 |
--------------------------------------------------------------------- |
145 |
Enrico Weigelt == metux IT service - http://www.metux.de/ |
146 |
--------------------------------------------------------------------- |
147 |
Please visit the OpenSource QM Taskforce: |
148 |
http://wiki.metux.de/public/OpenSource_QM_Taskforce |
149 |
Patches / Fixes for a lot dozens of packages in dozens of versions: |
150 |
http://patches.metux.de/ |
151 |
--------------------------------------------------------------------- |
152 |
-- |
153 |
gentoo-user@g.o mailing list |