1 |
On Sun, 2004-11-07 at 21:32 +0000, Stuart Herbert wrote: |
2 |
> > On Sunday 07 November 2004 21:23, Ciaran McCreesh wrote: |
3 |
> > > Well, that wouldn't be a problem if people kept code in eclasses for as |
4 |
> > > long as necessary. Avoiding the need to change multiple files more than |
5 |
> > > necessary is one of the reasons we have eclasses. Versioned eclasses |
6 |
> > > could very easily lead to that kind of horrid mess we already have with |
7 |
> > > having to update zillions of profiles whenever something changes. |
8 |
Offhand, I'll just state I'm against versioned eclasses. I assume |
9 |
you're attempting to free up the eclass development so that you can |
10 |
basically forget about about backwards compatability, by leaving older |
11 |
eclasses sitting in the tree for all of enternity so that packages |
12 |
installed w/ that eclass can be removed. |
13 |
|
14 |
You're attempting to restructure eclasses to compensate for a portage |
15 |
deficiency. Fix the deficiency, don't build kludges/duct tape to get |
16 |
around it :) |
17 |
|
18 |
The env code I worked up for in bug #56408 is in portage cvs- among |
19 |
other things, the _only_ time the ebuild/eclasses are required for any |
20 |
package phase is setup. I'll be adjusting the code so that it's only |
21 |
required for setup when building, not for setup when installing from a |
22 |
package also, so eclasses from the tree are no longer used with binpkgs. |
23 |
|
24 |
What this means is that when that code is released, eclass versioning is |
25 |
no longer an issue. The env is saved, and portage no longer cares if |
26 |
the eclass exists- you could wipe your tree (exempting profiles), and go |
27 |
and uninstall packages without any major issue, exempting a couple of |
28 |
trivial aux_get exceptions that amount to noisy complaints. |
29 |
|
30 |
Ultimately, I'd like to see the tree get to the point where everything |
31 |
but the basic ebuild functions (internal ebuild.sh functions, like |
32 |
dyn_preinst) are stored in the tree- basically move everything so that |
33 |
the tree contains the needed code for creation of the stored ebuild env, |
34 |
and buildling. For a binpkg, you don't need the ebuilds, the tree |
35 |
format is different, so the issue of having eclasses available shouldn't |
36 |
be a requirement (this is a whole other thread however, one I'll bring |
37 |
back up in the near future). |
38 |
|
39 |
Back on topic, regarding having multiple eclasses of the same name |
40 |
across repositories, that's a nastier/fuzzier issue. Basically, portage |
41 |
kind of crap shoots which repository it'll raid the eclass from- this |
42 |
should be nailed down so that an ebuild merged from xyz repo, uses xyz's |
43 |
eclasses -first-, then defaulting back to the main repository (portdir). |
44 |
At the moment, inherit doesn't function in this manner- it basically |
45 |
splits the PORTDIR_OVERLAY var, and walks it looking for an appropriate |
46 |
eclass. So if you had repositories a, b, and c, and repositories b and |
47 |
c had eclass xfree, and you were merging an ebuild from, portage would |
48 |
use repository c's xfree eclass. |
49 |
/me notes that was wordy, but it's how it functions currently |
50 |
|
51 |
If that seems sane, a bug could be filed regarding it and the inherit |
52 |
function modified to work in the desired manner... |
53 |
|
54 |
> What this says to me is that eclasses should be handled using |
55 |
> DEPEND-like syntax. inherit x11, or inherit >=x11-2. |
56 |
Err. no. That dirties things up for minimal gain, imo. Versioning |
57 |
eclasses -will- allow you to make a clean break from the existing eclass |
58 |
implementation, however its adding additional logic to inherit that's |
59 |
ultimately no different then inheritting a different eclass name. What |
60 |
does the proposed inherit syntax bring to the table, that isn't already |
61 |
available? |
62 |
|
63 |
My two cents :) |
64 |
~brian |
65 |
|
66 |
|
67 |
-- |
68 |
gentoo-dev@g.o mailing list |