Gentoo Archives: gentoo-dev

From: Brian Harring <ferringb@×××××.com>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] Paludis and Profiles
Date: Tue, 16 May 2006 17:51:36
Message-Id: 20060516173356.GC28745@nightcrawler
In Reply to: Re: [gentoo-dev] Paludis and Profiles by Ciaran McCreesh
1 On Tue, May 16, 2006 at 05:47:42PM +0100, Ciaran McCreesh wrote:
2 > On Tue, 16 May 2006 09:16:18 -0700 Brian Harring <ferringb@×××××.com>
3 > wrote:
4 > | 1) changes to the eapi=0 ebuild standard; renaming of vars
5 > | (PORTAGE_* -> PALUDIS_* namely)
6 >
7 > What eapi=0 standard? We emulate Portage internals where it's found to
8 > be necessary, and don't otherwise.
9
10 eapi=0 is what 2.1/2.05x supports.
11
12 Features are fine, but for gentoo backwards compatibility *is* a
13 concern, as such dropping the bits that you dislike (but existing
14 ebuilds rely on) is a no go.
15
16 > | dropping of all local vars during phase changes
17 >
18 > Again, we emulate Portage misfeatures only where it's found to be
19 > necessary.
20 See above...
21
22 > | Mind you that's from a quick read through
23 > | of your ebuild env reimplementation, stated the issues already and
24 > | they still remain- incomplete support for the standard is one thing,
25 > | changing it is another (y'all are doing the latter).
26 >
27 > What standard? Are you trying to say that Paludis should emulate
28 > Portage's bugs, because the standard is "exactly what Portage does"?
29
30 See above. Paludis (my view) is a rewrite of portage, rather then a
31 reimplementation- as you've stated, dropping the stuff that you deem
32 misfeatures.
33
34 This is fine, but portage *is* what gentoo is based uses now, and
35 what all ebuilds have been written to, as such you need to either
36 support the misfeatures or have a bullet proof transition plan to deal
37 with the things you decided to carve out.
38
39 This is directly relevant because you now want to modify the
40 gentoo-x86 repo to standards gentoo does not actually support. Call
41 it "dropping the misfeatures", but it's the reality of backwards
42 compatibility (something that has been kicking portage devs in the
43 nuts for years now).
44
45
46 > | 2) N profile inheritance- the parents change (N entries instead of
47 > | one) needs to be protected so that specific profile is only usable by
48 > | a package manager (whether portage, pkgcore or paludis) that actually
49 > | does N parent inheritance. This is why N profile inheritance has
50 > | never been added to portage (it's honestly a one line change in
51 > | portage)- the change must not be introduced without protection,
52 > | else the user's system set can become drastically reduced. It's not
53 > | an easily addressable problem (all solutions sans a new profile
54 > | directory leave open the potential for users to get bit), ignoring it
55 > | is a no go.
56 >
57 > Uh, no. Any user who isn't using a package manager capable of multiple
58 > inherits shouldn't use a multiple inherits profile. There's plenty of
59 > precedent of intro
60
61 Feature introduction is done via introducing support, then sitting on
62 it for ~6 months to ensure folks don't get bit by it- notable
63 exception was virtuals/* metapkg, although the buttload of bugs from
64 it is a demonstration of *why* this route must be taken.
65
66 This is also why eapi came about- faster introduction of compatibility
67 breaking changes.
68
69 Meanwhile, the precedent for changes to the tree (pkg manager related
70 changes) is that of "don't break shit for users", introducing N parent
71 inherit profiles into the tree still qualifies as a concern- as
72 stated, you're after demoing capabilities, do it somewhere other then
73 production data.
74
75
76 > | 3) vdb CONTENTS change of dev/fif to misc. It's dumb, but that
77 > | change renders vdb entries incompatible- iow, proper usage/conversion
78 > | to paludis requires a new installation (or translation script, both
79 > | to/from portage).
80 >
81 > Had you bothered to read the documentation, you'd know that we don't
82 > claim nor desire VDB compatibility with Portage, and don't encourage
83 > installs onto the same ROOT.
84
85 Snarky response aside, I read the src (note the env screwups I've
86 pointed out, and the fact y'all don't support try eclass unified
87 overlays), and your documentation- the point was that paludis can
88 only be used for new installs, and you're locked to paludis as your
89 pkg manager at that point without a translation script.
90
91 Trying to make it clear that paludis isn't something you try out for a
92 bit, then revert back to portage- it's a full rebuild. That seriously
93 limits the usefulness of the requested profile.
94
95
96 > Because Paludis is now a viable alternative to Portage and can be used
97 > to install and maintain a real system. We already support enough of the
98 > "ebuild standard" and emulate enough of Portage's bugs to install
99
100 Just because something is a viable alternative to portage doesn't
101 mean the tree should be mutated to the alternative, especially when
102 the alternative breaks standards that are in the tree already.
103
104 Call it "misfeatures of portage", reality is that y'all introduce one
105 insidious potential for bugs in 22k ebuilds via the env changes.
106
107 Yes, paludis is a viable pkg manager- it's not viable to work with
108 ebuilds written to portage (eapi=0) however because of those adhoc
109 changes, at least for the userbase size gentoo currently sports. If
110 it were breaks affecting 100 folk, hey, shit happens, but it's not.
111
112 One thing I am curious about though, is how closely you've checked
113 things are running properly- ebuilds have preserved their state in
114 local vars saved in the env dump for well over 2 years, cutting that
115 out on a whim for 22k ebuilds is kind of risky. It'll show at unmerge
116 time and for binpkgs...
117
118
119 > | > That's my proposal. The benefits I like to think are obvious. The
120 > | > drawbacks are, as far as I can see, in tree size, which should be
121 > | > minimal.
122 > |
123 > | Benefits of demo'ing for a minority (300 devs) must be balanced
124 > | against risk (adding profiles that portage can eat itself on, the
125 > | default virtual change doesn't address it
126 >
127 > Uh, a user changing to any incorrect profile will screw up their
128 > system. Ever tried using an amd64 profile on x86?
129
130 We can't do anything about that idiocy.
131
132 That doesn't mean a profile should be added to the tree that portage
133 is incapable of resolving properly however- simple example would be
134 inheriting from two parents, one that's base arch agnostic defaults,
135 other is arch specific modifications.
136
137 If that profile were used by portage, it would pick up *strictly* the
138 base arch agnostic defaults- this isn't "you're using the wrong
139 profile dumb ass", this is "only the left most path is actually
140 recursed". Again, this is why N profile inheritance isn't in portage-
141 you cannot introduce it without backwards compatibility protection.
142 Having the profile in the tree is an uneeded potential for bugs, yes
143 it's obvious to a gentoo dev in seeing it when a bug is reported, but
144 how many users know about the leftmost descent issue for portage?
145
146
147 > | eapi incompatibility
148 >
149 > You mean "not emulating some of Portage's sillier bugs that very few
150 > things rely upon anyway", right?
151
152 See above. Renaming of PORTAGE_* -> PALUDIS_* vars doesn't strike me
153 as "sillier bugs", strikes me as "we stamped it with our name, thus
154 introducing subtle bugs into minor packages like perl".
155
156 And yes, that's actually a valid example- easy to spot via just a
157 simple grepping of the tree (I suggest you do so).
158
159
160 > | vdb changes )- wrong place to be deploying incompatibilites that paludis
161 > | introduces is into the production tree without appropriate
162 > | containment/protection.
163 >
164 > Uh, VDB isn't part of the tree. Nor does it introduce any breakages for
165 > existing users, except those who do something especially dumb. Even if
166 > a user *does* change their profile to a Paludis profile, it won't cause
167 > Portage to explode in such a way that switching profiles back won't fix
168 > it.
169
170 Point is, the tree (you're own words) is not a playground, nor is it a
171 demoscene- don't introduce the potential for screwup in the tree
172 without a damn good reason.
173
174 Demo'ing capabilities doesn't qualify, do it in the overlay y'all
175 have.
176
177
178 > | The gain of the profile is that you can do a few new tricks for folks
179 > | doing boostrapping experiments- why not just introduce an ebuild that
180 > | sets up the new profile in a temp overlay?
181 >
182 > No, the gain of the profile is that it prepares the way for people to
183 > move onto a package manager that doesn't suck.
184
185 Figured as much, the problem is that you cannot convert a communal
186 resource (gentoo-x86) to be paludis specific without the go ahead from
187 the rest of the community. The tree must not be changed ad hoc to
188 match whatever pkg manager the commiter likes (this includes pkgcore).
189 Standards...
190
191 Bluntly, you break compatibility with vdb/tree, paludis has no real
192 future with gentoo beyond forking- requiring 100,000 users to
193 reinstall because you don't want to do backwards compatibility is
194 daft.
195
196 The original discussion was about adding a paludis profile (not
197 "portage sucks"), getting back to it, paludis is incompatible with
198 portage at the actual ebuild level- considering that, why should the
199 tree be modified to add a profile that's just going to introduce
200 further breakage?
201
202 ~harring

Replies

Subject Author
Re: [gentoo-dev] Paludis and Profiles Ciaran McCreesh <ciaran.mccreesh@×××××××××××××.uk>