1 |
On Sun, Sep 18, 2011 at 10:16:46PM -0500, Donnie Berkholz wrote: |
2 |
> On 04:22 Sun 18 Sep , Brian Harring wrote: |
3 |
> > On Sat, Sep 17, 2011 at 10:59:08PM -0500, Donnie Berkholz wrote: |
4 |
> > > On 13:43 Fri 16 Sep , Brian Harring wrote: |
5 |
> > > > What I said from the getgo and you're missing is that pushing EAPI |
6 |
> > > > implementation into the tree and ignoring EAPI, or having this notion |
7 |
> > > > that every repository must automatically use gentoo-x86 (pushing the |
8 |
> > > > format into the tree) is /wrong/; |
9 |
> > > |
10 |
> > > I'm not necessarily requiring that every repository must automatically |
11 |
> > > use gentoo-x86 ??? just the ones that want to use features in an eclass |
12 |
> > > distributed with gentoo-x86. It sounds to me like the logical |
13 |
> > > consequence of what you're saying is that every useful function that's |
14 |
> > > now or could eventually be in an eclass must instead be incorporated |
15 |
> > > into EAPI. I guess I just don't see where you're drawing the line. |
16 |
> > |
17 |
> > Drawing it back to what spawned it; usex. This isn't git.eclass, this |
18 |
> > isn't svn.eclass, nor is it any of the other complex eclass |
19 |
> > functionality. It's a core function that benefits the rest and should |
20 |
> > be in EAPI. |
21 |
> |
22 |
> OK, so the implication of what you're saying is that everything in |
23 |
> eutils.eclass, base.eclass, toolchain-funcs.eclass, flag-o-matic.eclass, |
24 |
> versionator.eclass, multilib.eclass, prefix.eclass, savedconfig.eclass, |
25 |
> and maybe even linux-info.eclass and autotools{,-utils}.eclass should go |
26 |
> into EAPI. All that stuff is pretty generally useful features. |
27 |
|
28 |
Approximately... yes. Some of that (base.eclass for example) is EAPI |
29 |
compatibility that can't be folded in (would require retroactively |
30 |
addding to an EAPI), others aren't yet stabilized (true multilib for |
31 |
example, seems to still be under discussion), etc. |
32 |
|
33 |
You get the jist. |
34 |
|
35 |
> > > What I'm suggesting is that we should add useful stuff to eclasses |
36 |
> > > by default. If people want to use that stuff, they can stack on the |
37 |
> > > gentoo-x86 repo and inherit the eclass. I don't know why EAPI needs |
38 |
> > > to come into it at all. |
39 |
> > |
40 |
> > Stacking on gentoo-x86 means you get *everything* for that repository. |
41 |
> > If all you want is a random function out of eutils, that's a *lot* of |
42 |
> > uncontrolled change to have intermixed with your overlays eclasses |
43 |
> > (even worse, if the eclasses truly overlay into gentoo-x86, that |
44 |
> > introduces compatibility issues there too). |
45 |
> |
46 |
> Yeah, it seems like the ability to do partial stacking would be nice. |
47 |
> Perhaps to do so, one wouldn't stack by default but would have a way to |
48 |
> specify cross-repo dependencies (including eclasses) or file-specific |
49 |
> UUIDs of some sort. |
50 |
|
51 |
We can specify cross repository dependencies (this repo needs |
52 |
that repo) already via layout.conf; partial gets a bit messy, but may |
53 |
be useful at the user level. |
54 |
|
55 |
|
56 |
> > > > aside from meaning that the format definition can now *vary*, |
57 |
> > > > which is great for wasting dev time and screwing up compatibility, |
58 |
> > > > it opens up tweaking/customizing that functionality- aka, |
59 |
> > > > fragmentation/divergence. |
60 |
> > > |
61 |
> > > People doing that outside gentoo-x86 should do it the same way as |
62 |
> > > ones within it, by bumping the eclass to a new unique name. Ideally |
63 |
> > > one that's not just a numeric value so it won't conflict with ours, |
64 |
> > > in the same way as EAPI naming. |
65 |
> > |
66 |
> > They should, but api compatibility of an eclass *can* be fluid- in the |
67 |
> > past it was a locked API purely because of portage environment saving |
68 |
> > issues. That's been resolved, there isn't any strict requirement that |
69 |
> > the eclass maintain API compat now. You're trying to rely on people |
70 |
> > doing best practices- for format building blocks |
71 |
> > (use_with/usex/unpack/etc), that's not sane. |
72 |
> |
73 |
> Which still pisses me off. It's like a shared library changing its API |
74 |
> without bumping SONAME. |
75 |
|
76 |
I think you're viewing this wrong; if we're talking about openssl |
77 |
breaking API/ABI w/out bumping soname, sure. It's one component that |
78 |
is distributed alone, but consumed by others. There is no way to |
79 |
atomically deploy the new API at the same time as all of the consumers |
80 |
being updated for it. |
81 |
|
82 |
That is /not/ the case of gentoo-x86; eclasses for us are equivalent |
83 |
to bundled libs. Overlay stacking just makes it possible for a third |
84 |
party component to reach in and use what is effectively an internal |
85 |
lib. |
86 |
|
87 |
This is even more true for repositories other than gentoo-x86; |
88 |
gentoo-x86 is just in the weird position of being both public and |
89 |
private. |
90 |
|
91 |
|
92 |
> That makes me wonder whether there's some way we |
93 |
> could "enforce" it, at least on the level of repoman or test suites to |
94 |
> examine whether the public interface changed, perhaps by generating a |
95 |
> cache of the interfaces and comparing to them. |
96 |
|
97 |
Not without some doc/annotation of each function. The fact functions |
98 |
are basically jump targets, w/ the function doing shift's/$@ to get at |
99 |
it's args makes this very, very hard to introspect and validate. |
100 |
|
101 |
Tests are the realistic option, or parsing an annotation defining the |
102 |
functions prototype, caching that, and comparing it across versions. |
103 |
|
104 |
That's realistically a seperate discussion- one snagging betelgeuse |
105 |
(and that libbash gSoC student) might result in some benefit. |
106 |
|
107 |
|
108 |
> > I suspect an easier way to wrap this thread up is if you just state |
109 |
> > what you want for backwards compatibility- in a seperate thread you |
110 |
> > already proposed basically locking out systems older than 6 months, |
111 |
> > and this discussion (moreso the "eapi slows our development" subtext) |
112 |
> > is along the same lines. |
113 |
> |
114 |
> Actually Zac said that, and I was trying to clarify if that's really |
115 |
> what he was saying. 9-12 months is more my feeling, as it gets extremely |
116 |
> difficult to maintain Gentoo systems without guru-level knowledge around |
117 |
> there. (Spoken as someone who still gets support emails from a couple of |
118 |
> previous positions.) |
119 |
> |
120 |
> While I would like there to be a "proper" way to express repo-level |
121 |
> dependencies, properly announce deprecation and updates (e.g. to bash 4) |
122 |
> in advance as a feature integrated with the PM, and so on, I don't think |
123 |
> we should block our ability to move forward on these things. |
124 |
|
125 |
We're not really blocked, frankly. For repository format changes, |
126 |
while we lack versioning... it can be done. There just hasn't been |
127 |
enough of a reason to do it, *yet* (it's been on my todo for a while |
128 |
since there is some stuff I want that requires it). |
129 |
|
130 |
For deploying EAPI, we're able to do it pretty quickly if we wanted |
131 |
to; where we're boned is in profiles, and that will /not/ change. |
132 |
There is no magic solution to it- from a data structure standpoint, |
133 |
either we have to duplicate chunks of the profiles for backwards |
134 |
compatibility, or we have to keep it very low in EAPI deps. |
135 |
|
136 |
That's just the fact of life for profiles; it's a central data struct, |
137 |
as such it's fairly bound to LCD requirements. |
138 |
|
139 |
|
140 |
> The |
141 |
> situation is essentially the same as it's always been, but our old |
142 |
> solution is no longer considered good enough and we don't have a new one |
143 |
> in place, so we're just sitting here. |
144 |
|
145 |
Not really; the old solution was "deploy, then have to wait 6 months |
146 |
for small stuff, year for big stuff". |
147 |
|
148 |
For format changes, we can move *much* faster- 2 months basically |
149 |
(month of portage sitting in unstable, allowing unstable ebuilds to |
150 |
use the EAPI, then portage stabled in the second month effectively |
151 |
stabling the EAPI). |
152 |
|
153 |
For the profiles, we can move forward at the same rate if desired in |
154 |
terms of using the new functionality, although for avoiding lock out |
155 |
(preserving the EAPI upgrade pathway) duplication may be required or a |
156 |
slower rate of EAPI consumption. |
157 |
|
158 |
Those times are accurate- that's what we *could* do. EAPI versions |
159 |
being cut slower is a whole other issue (council having to sign off, |
160 |
bribing portage to add stuff, etc), and that issue should be addressed |
161 |
directly- any compat mechanism will run into the same issue there, so |
162 |
the mechanism isn't the issue. |
163 |
|
164 |
|
165 |
> > how derivatives should be handled, |
166 |
> |
167 |
> With white gloves. More seriously, people making derivatives should have |
168 |
> maximal freedom to experiment, and I'm guessing most of them don't want |
169 |
> to deal with modifying 3 different PMs written at least partially in 3 |
170 |
> different languages. They'd rather instantaneously support things in the |
171 |
> same language they use for everything else. |
172 |
|
173 |
Full experimentation has typically required modifying the PM to extend |
174 |
functionality- you're focusing just on bash bits. Bash bits are easy- |
175 |
you can hack that at the eclass level w/out an EAPI half the time. |
176 |
Frankly, that's not the stuff people get hung up on. |
177 |
|
178 |
Realistically, the interesting stuff that people want have been more |
179 |
than just bash. |
180 |
|
181 |
Simple example, you can't do USE deps, slot deps, repository deps, |
182 |
iuse defaults, etc, w/out modifying the PM. That's just the way it |
183 |
is, as such you choose your preferred PM, get the custom eapi going, |
184 |
if it's more than a one off prototype you bribe others to support it, |
185 |
they do. |
186 |
|
187 |
I don't see that changing; while folks can complain about it, there |
188 |
are hard technical reasons this is how it is- those issues have to be |
189 |
solved (no amount of complaining can solve 'em) ;) |
190 |
|
191 |
~harring |