On Sat, 2005-01-22 at 17:46 +0100, Malte S. Stretz wrote:
> > Funny.  Over on the games team, we have a single eclass that we use for
> > pretty much everything, and we haven't had problems like this.  In fact,
> > it greatly simplifies our lives, being 4 developers that maintain
> > several hundred packages.  The simple rule is that we don't commit
> > things that will break the tree.  If we are forced to make changes that
> > could break the tree, then we change the affected packages and revision
> > bump it after doing extensive testing.
> 
> I have not completely followed this discussion and actually don't want to 
> get too much involved in it either.  But I noticed that what you wrote 
> above is actually an argument *for* (some kind of) versioned eclasses.

Hand me whatever you're smoking.  It must be good.

> An example:
> I've got that great binary only game games-foo/foobar-1.0 installed.  Works 
> great for me.  Now there's a new version foobar-1.1 available and you 
> create an ebuild for it.  Very cool, but while you did so, you also did 
> (for some reason or another) some tree-breaking change to the games.eclass.  
> A few weeks later there's another new version foobar-1.2 for which you also 
> create a new ebuild.

Allow me to quote myself, then.  "The simple rule is that we don't
commit things that will break the tree."  Your immediate assumption is
that we will do exactly the opposite of this.  Excuse me if I think I
smell something funny.  If foo-1.1 required a change from the eclass,
then the change would be in the ebuild itself, or a new eclass function
would have been made.

As I said, we actually do QA and testing on what we commit.

> Somebody noted that eclasses are like libs and must stay "binary 
> compatible" (as far as one can say that with a bunch of bash functions) to 
> the old versions.  So with the current version-less concept you have no way 
> to do *ever* tree-breaking changes to an eclass, even if you revision-bump 
> all affected ebuilds.

EXACTLY!

You do not *ever* break the tree with an eclass change.  This has been
my sole argument since the beginning of this completely worthless
thread, however nobody has seemed to get it until now.

> OTOH is Daniel's proposal a bit overkill in my eyes.  A single integer 
> version number would be enough to circumvent the problems.  All eclasses 
> would start at version v=1 and if you really need to do a BIC change to the 
> eclass, you bump it to v++ and use that one starting from there.  BC 
> changes don't affect the version at all.  Old versions could be purged from 
> the tree after, say, one year after the last ebuild which uses that version 
> is gone from the tree.

Eclasses can never be removed from the tree.  This is a fundamental
truth of the current way things are done.  No versioning will help this,
but instead will just add more legacy crap in the tree that can *never*
be removed.  I don't want to have 85 versions of games.eclass in
portage, which is how many we would have, given the cvs version of the
eclass currently.  Considering many of these were adding new
functionality or bug fixing, this would be unacceptable.

> Somebody else said that he uses some special code paths in some classes to 
> cope with certain ebuilds.  Removing any of those would also be a BIC 
> change of the eclass and required a version bump.

No.  Because only those ebuilds would use them.  Hence, zero reason to
bump the eclass, as it would affect nothing else.

> Ok, some much for my 2cents, as I said I don't really want to get too 
> involved in this discussion (for me everything worked fine till now with 
> the current concept but I rarely downgrade apps, at least not ones which 
> rely on complicated eclasses).

Just one thing.

"for me everything worked fine" pretty much sums it up.

Thank you.

-- 
Chris Gianelloni
Release Engineering - Operations/QA Manager
Games - Developer
Gentoo Linux

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to