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: Tue, 12 Jun 2007 14:00:02
Message-Id: 20070612134944.GB21610@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 > Wtf. Newer versions are newer versions. No matter if they are
6 > fully backwards compatible or not.
7
8 I really don't aggree your really loose view of "versions".
9
10 That's like seeing ISDN as an newer version of POTS.
11 Well, if you're convinced about that, feel free to pull in
12 an POTS phone on an UK0 line and see what happens ;-P
13 (at your own risk!)
14
15 > The point is from the package manager point of view it would be
16 > trivial *because* the developers would have to do more of the
17 > work manually.
18
19 Which "manual" work do you exactly mean, ie. if you simply treat
20 gtk-1.x vs. -2.x as separate packages ?
21
22 > I.e. the work of creating new packages, removing old ones and
23 > creating/updating virtuals where they currently just do version
24 > bumps and remove old ebuilds.
25
26 Is this really that much more than maintaining *version* dependencies
27 on every single package which depends on slot'ed packages ?
28
29 For example gtk: it would add only one more package, but make
30 all version deps onto it, in every gtk using package, obsolete.
31
32 > I also *really* don't see how adding a dep on =automake-1.4* or
33 > automake:1.4 is harder or more complex than automake1.4 (which
34 > currently would be an invalid package name anyway).
35
36 Well, what do you do if, ie. -1.9.3 would be incompatible to
37 -1.9.2 ? I already had such cases with autotools stuff some
38 time ago.
39
40 Ah, and the whole extra complexity (in portage and ebuilds as
41 well as for the admin) in having to cope with multiple versions
42 means nothing to you ?
43
44 > The reason why cleaning cannot be done properly for packages in
45 > system or world is that the packages files that define the system
46 > set in the profiles and the world file don't support specifying slots.
47
48 Right. If at least slot would be (optional) parts package names,
49 this would be much easier.
50
51 > [SNIP]
52 > > Same with autoconf. The numbering is not that easy here, since
53 > > major breaks sometimes happen with minor version changes. So
54 > > we just have to look a bit more cafully. But still much simpler
55 > > as adjusting all these versioned dependencies which are necessary
56 > > with slotting.
57 > [SNIP]
58 >
59 > Indeed the real problem is that the current EAPI supports neither slot deps
60 > nor ranged deps (with the exception of the not too powerful =foo* syntax).
61
62 So please tell me how you could handle such an case.
63
64 > > The Idea of this "linear" version space is that we can compare each
65 > > version with another one very easy. Additionally use the axiom that
66 > > higher versions are always successors of lower ones and backwards
67 > > compatible. In this situation the whole package management story
68 > > is really easy. Things like slots are not necessary. If we also take
69 > > in binary compatibility, revdev-rebuild is also not needed. Evrything
70 > > is strictly defined in the dependency graph.
71 >
72 > Wow. You're actually suggesting making a new package not only on API
73 > breakage but even on ABI breakage (otherwise revdep-rebuild would
74 > still be needed)?
75
76 At least on API break. If we also do it on ABI, we would have more
77 breaks, but compatibility would be ensured just by the dependencies.
78
79 Most of my jobs are building and maintaining firmware for embedded
80 systems. Here MUST ensure binary compatibility on upgrades. There is
81 nothing like revdep-rebuild, even no compiler on the target system.
82
83 So you maybe can understand my constraints why I'm often very quick
84 in declaring things "broken" :)
85
86 > > What if now comes an 1.4.99 which is totally incompatible with the
87 > > other 1.4.* ? What do you do now ?
88 >
89 > Add a 1.4.99 slot? Just like you'd create a new package for it and
90 > add that to the virtual?
91
92 Yes, of course. But what's with the packages depending on it ?
93
94 See:
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 > Huh?
101
102 Your answer's still missing. How to you handle that ?
103
104 > > What flexibility do I take away exactly ?
105 > > And what exactly gets harder ?
106 >
107 > The ability to have more than one version of the same package
108 > installed at the same time.
109
110 Would be simply not necessary if these incompatible packages
111 were treaded as separate ones. ;-P
112
113 In fact, slotting (IMHO) does not allow real MVCC. This would
114 require *each* version its own slot and every version installed
115 somewhere else. But MVCC is an topic for its own ;O
116
117 > What is now a simple version bump (that happens to use a new slot)
118 > or cleaning of obsolete versions becomes packages additions and
119 > removals plus updates to virtuals.
120
121 Ok, then we maybe have to touch one or two more files (for the
122 virtual). But the good side is that we don't necessarily do it
123 in one step. And we're not limited to one virtual.
124
125 For example php: we've got an virtual/php-v4, which represents
126 the v4 style runtime system (or at least an subset of it).
127 Certain versions of php5 match in here, so they can be added to
128 the virtual. But we cannot be sure that all future versions will
129 still fit in here. We need to decide it for each single version.
130 Without such an virtual, we often have to touch every php depending
131 package one by one. But with that virtual representing our common
132 interface/environment, we've got one central point for that.
133
134 Okay, this isn't really about slots vs. no slots, but shows that
135 slots are not necessary.
136
137
138 cu
139 --
140 ---------------------------------------------------------------------
141 Enrico Weigelt == metux IT service - http://www.metux.de/
142 ---------------------------------------------------------------------
143 Please visit the OpenSource QM Taskforce:
144 http://wiki.metux.de/public/OpenSource_QM_Taskforce
145 Patches / Fixes for a lot dozens of packages in dozens of versions:
146 http://patches.metux.de/
147 ---------------------------------------------------------------------
148 --
149 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>