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 20:10:03
Message-Id: 20060516195511.GA29839@nightcrawler
In Reply to: Re: [gentoo-dev] Paludis and Profiles by Ciaran McCreesh
1 On Tue, May 16, 2006 at 07:07:05PM +0100, Ciaran McCreesh wrote:
2 > On Tue, 16 May 2006 10:33:56 -0700 Brian Harring <ferringb@×××××.com>
3 > wrote:
4 > | > What eapi=0 standard? We emulate Portage internals where it's found
5 > | > to be necessary, and don't otherwise.
6 > |
7 > | eapi=0 is what 2.1/2.05x supports.
8 >
9 > That's not really true. Relying upon "anything that Portage handles",
10 > including relying upon Portage bugs and internals, leads to broken
11 > ebuilds when said things change.
12
13 ...which is why the ebuild env for portage is extremely carefully
14 maintained- mistakes may occur, but willy nilly changes don't.
15 Regardless, at least for gentoo it still however *is* the standard
16 for ebuilds, breaking the 'standard' out of portage is fine, changing
17 intrinsic parts of the standard isn't.
18
19
20 > | Features are fine, but for gentoo backwards compatibility *is* a
21 > | concern, as such dropping the bits that you dislike (but existing
22 > | ebuilds rely on) is a no go.
23 >
24 > You're acting like Paludis is dropping something huge here. Not
25 > emulating a few weird PORTAGE_ variables that nothing uses is not
26 > breaking eapi. If ebuilds genuinely rely upon something, we emulate as
27 > necessary.
28
29 Then I'll state it again; you're changing the core environment
30 handling via intentionally dropping all local vars defined per phase
31 run. Add binpkgs, and try it- you'll get some fun behaviour there.
32
33
34 > A 'rewrite' implies that we're starting from "what Portage does", and
35 > making something that does the same thing in the same way. That's not
36 > how it's being done. We're looking at it a) from what ebuilds do, and
37 > b) from what the program is expected to do, and then filling in the
38 > middle. The only part that's really at all close to Portage is the bash
39 > stuff for ebuilds, and that's pretty much necessary because of the
40 > ebuild <-> package manager interface thing.
41 >
42 > *shrug* Your perception on this one's probably skewed if (as it seems)
43 > you've been focusing on the trivial and easily replaceable bash part,
44 > rather than the interesting things which are done in C++.
45
46 The bash part is all that matters, hence why I'm focusing on it- as
47 you stated above, the data (ebuilds) handling is what matters.
48
49 Stating that the bash concerns are trivial while the C++ side can be
50 interesting is ignoring the point, the bash bits must match- I don't
51 care if it's C++ or python or haskell for the high level, the ebuild
52 env support must *not* induce any intentional changes that break
53 ebuilds.
54
55
56 > Again, not really true. Said Portage devs have pushed through far
57 > larger changes than anything we need -- look at the "use becoming useq"
58 > behaviour changes, for example. Paludis does not require or want any
59 > such large change, and we'd consider anything that required that to be
60 > broken.
61
62 use/useq change over occured well after the tree had been converted-
63 it's actually a decent example of how to do the changeover- that was
64 also a permenant change, not a "paludis is an alternative and we want
65 to stick it in the tree".
66
67
68 > | Feature introduction is done via introducing support, then sitting on
69 > | it for ~6 months to ensure folks don't get bit by it- notable
70 > | exception was virtuals/* metapkg, although the buttload of bugs from
71 > | it is a demonstration of *why* this route must be taken.
72 >
73 > There is a difference between "changes that affect people not using the
74 > newer package manager" and "changes that are only relevant to people
75 > using the newer package manager". Anyone asking for features that will
76 > lead to Portage breaking will be beaten with a spork.
77
78 N profile inheritance breaks portage.
79 You were saying?
80
81 Yes it's needed (regardless of the manager), but the point was "don't
82 expose users to sharp/pointy things without a good reason".
83
84
85 > | This is also why eapi came about- faster introduction of
86 > | compatibility breaking changes.
87 >
88 > Which, unfortunately, it doesn't really do, since ebuilds still have to
89 > be filename and source compatible. There were far better ways this
90 > could have been handled.
91
92 Feel free to suggest them- since it's initial discussion, your
93 comments on it haven't really progressed beyond "y'all did it badly",
94 without naming a solution that works.
95
96 EAPI has it's faults, but it *does* version the ebuild format
97 (regardless of the tree format) to move forward, which was it's
98 intention. Versioning the tree format is a related, but seperate
99 issue.
100
101
102 > | Snarky response aside, I read the src (note the env screwups I've
103 > | pointed out, and the fact y'all don't support try eclass unified
104 > | overlays), and your documentation- the point was that paludis can
105 > | only be used for new installs, and you're locked to paludis as your
106 > | pkg manager at that point without a translation script.
107 >
108 > Had you read the source or the documentation, you'd know fine well that
109 > we support eclass unified overlays. I really think you should refrain
110 > from making those kinds of claims until you actually have the slightest
111 > clue what you're talking about.
112
113 Offhand, you're ignoring the point about lack of translation script
114 for vdb, and that paludis requires a new install.
115
116 Re: eclass, had to dig in the src for that one, doc's don't cover it.
117 Your repositories support specifying an arbitrary eclass- they do not
118 support the standard unification on the fly of eclass that most
119 portage users use- *technically* it can be done via copying eclasses
120 from each repo into an eclass directory (better yet symlinks), but
121 that's not unifying- that's working around the implementation.
122
123 Simple example, eclasses in overlay X must override PORTDIR y, no
124 eclass in X, check Y.
125
126 If paludis supports that common usage model, kindly point it out
127 since I've yet to spot support in the code for it.
128
129
130 > | > Uh, a user changing to any incorrect profile will screw up their
131 > | > system. Ever tried using an amd64 profile on x86?
132 > |
133 > | We can't do anything about that idiocy.
134 > |
135 > | That doesn't mean a profile should be added to the tree that portage
136 > | is incapable of resolving properly however- simple example would be
137 > | inheriting from two parents, one that's base arch agnostic defaults,
138 > | other is arch specific modifications.
139 >
140 > Huh? Profiles that some Portage versions can't use have been added
141 > plenty of times previously.
142
143 Yep, and we still get bugs about .50- that doesn't mean it's right
144 (just because someone else did something stupid doesn't mean you can).
145 It's pretty simple, don't stick stuff into the tree that can silently
146 fail, stick stuff in that is detected instead of silent failures.
147
148
149 > | See above. Renaming of PORTAGE_* -> PALUDIS_* vars doesn't strike me
150 > | as "sillier bugs", strikes me as "we stamped it with our name, thus
151 > | introducing subtle bugs into minor packages like perl".
152 >
153 > We emulate some PORTAGE_ variables. We don't emulate the ones that
154 > aren't necessary.
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 > Heh. You lose. It isn't.
160
161 look in the files directory- specifically modifies extmaker to be
162 PORTAGE_TMPDIR aware to fix a security bug.
163
164
165 > | Point is, the tree (you're own words) is not a playground, nor is it
166 > | a demoscene- don't introduce the potential for screwup in the tree
167 > | without a damn good reason.
168 >
169 > That argument is like claiming that adding an amd64 profile to the tree
170 > is a potential screwup because x86 users might use it.
171
172 x86 users could at *least* render the profile out properly. All
173 gentoo users sans the few paludis experimenters cannot use N profile
174 inheritance, and portage will misbehave with it. Wrong profile is
175 pretty damn obvious (compilation failure)- partially loaded profile is
176 a bit different however, you only get part of the profile tree loaded
177 (likely enough to continue on), but not all of it's settings.
178
179 Bit retarded here, but seriously, work it out in the overlay (like
180 most herds do), then try to bring it to the tree.
181
182
183 > | Bluntly, you break compatibility with vdb/tree, paludis has no real
184 > | future with gentoo beyond forking- requiring 100,000 users to
185 > | reinstall because you don't want to do backwards compatibility is
186 > | daft.
187 >
188 > A reinstall isn't needed at all.
189
190 Currently is, going by your docs (and last look through code)- url?
191
192
193 > | The original discussion was about adding a paludis profile (not
194 > | "portage sucks"), getting back to it, paludis is incompatible with
195 > | portage at the actual ebuild level- considering that, why should the
196 > | tree be modified to add a profile that's just going to introduce
197 > | further breakage?
198 >
199 > Paludis is no more incompatible with ebuilds than any new Portage
200 > release is.
201
202 Rhetoric. I've pointed out specific changes you've gone and done that
203 render it incompatible, and the response is "portage does it worse"?
204 Portage doesn't willy nilly convert/drop vars, nor screw with the env
205 handling.
206
207 Env handling *is* a bitch to get it properly- the ebd based
208 portage-2.1 already demonstrated it, and all that was doing was
209 *fixing* the statefullness of the env, not hacking all local data out.
210
211 That and the thread is getting fairly wide in discusion, rather then
212 the profile specific "does alt pkg manager X cruft belong in the
213 tree?"
214 ~brian

Replies

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