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 |