Gentoo Archives: gentoo-user

From: Enrico Weigelt <weigelt@×××××.de>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] why multiple versions of java-config, automake, and autoconf?
Date: Fri, 08 Jun 2007 12:55:51
Message-Id: 20070608124654.GA765@nibiru.local
In Reply to: Re: [gentoo-user] why multiple versions of java-config, automake, and autoconf? by "Bo Ørsted Andresen"
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

Replies

Subject Author
Re: [gentoo-user] why multiple versions of java-config, automake, and autoconf? Kent Fredric <kentfredric@×××××.com>
Re: [gentoo-user] why multiple versions of java-config, automake, and autoconf? "Bo Ørsted Andresen" <bo.andresen@××××.dk>