On Sat, Sep 02, 2006 at 01:37:26AM +0200, Danny van Dyk wrote:
> Am Freitag, 1. September 2006 19:37 schrieb Brian Harring:
> > > >
> > > > old                     new
> > > > -----                   ------
> > > > foo.eclass              new-foo.eclass
> > >
> > > We don't need a new file for that IMHO. I'd propose to add
> > > something like
> > >
> > > ECLASS_DEPRECATED="${ECLASS_DEPRECATED} foo"
> > > ECLASS_REPLACEMENTS="${ECLASS_REPLACEMENT} new-foo"
> > >
> > > to foo.eclass. In my eyes this is much less work as repoman merely
> > > has to check for 2 envvars.
> >
> > As much as I'm a fan of embedding the metadata into the object
> > itself, this sucks; reliant on either
> >
> > 1) grepping it out of the file (which means there is the potential
> > for rare false positives to occur).
> Correct, i don't like to grep for it.
> >
> > 2) bastardizing inherit to grab it, thus forcing a sourcing for every
> > single ebuild regardless of staleness
> Exactly.
> 
> > Your example above seems to indicate preferring #2, which folks will
> > probably tell you to get stuffed on, forcing a regen of the packages
> > they're examining they won't like (will slow repoman down even
> > further).
> Well, one has to decide between functionality and speed at times. I 
> think it's better to have the ebuild sourced on every run instead of 
> sourcing it only when it cache is stale.

Reasoning?  Forcing repoman to be slower sounds pretty damn dumb to me 
without a damn good reason to go with it (this doesn't qualify imo).

Additionally, for all implementations that will attempt to support 
this, it'll require bastardizing the cache regeneration to also pull 
out these two vars in select instances; adds some special casing into 
a codepath that must never screw up (thus should be kept as simple as 
possible).

Really doesn't strike me as a good idea, especially in light of the 
lifetime of these vars (see below).


> > Also, the new-foo renaming can't be reversed cleanly; consider if the
> > old class was kernel-mod, new class is kernels, how do you know where
> > to split old/new?  You can search ECLASS_DEPRECATED, but potential
> > for collision there makes it a crappy option, in the previous example
> > consider if kernel-mode and kernel were two deprecated eclasses, it
> > would falsely label the new class as mod-kernels.
> ECLASS_DEPRECATED="${ECLASS_DEPRECATED} foo:new-foo,new-foo-modules"
> 
> > Meanwhile; I'd just stick a file up somewhere on gentoo.org, and
> > mangle repoman to pull down a copy every N days as needed and have it
> > use that; code can be reused from metadata.dtd usage.
>
> I like this option better than sticking another file into the public 
> tree that no user will ever need.

Instead, modifying the eclass metadata and adding two new keys, that 
users will never need is fine? :)

This isn't really user data, tiz developer data; thus the user bit 
doesn't matter.  Sarcasm aside, what *does* matter as that the 
purpose of this is a temporary hack to cover portages ass.

Have to mark eclasses as deprecated because eclasses cannot be 
removed; lose that restriction, no longer need to deprecate the 
eclass, just punt the sucker.

As such, plan for doing it right, thus the repoman addition should be 
easy reversible.  Mangling the entire cache generation codepath with a 
nasty hack that doesn't have a good reason to be forced that way, that 
further is _temporary_ doesn't strike me as wise.

Really, stick a list up somewhere easily accessible, write a check to 
scan for those eclasses.  Dirt simple, no reason to make this complex.
~harring

Attachment: pgpENAvZOJ9aJ.pgp
Description: PGP signature

Reply via email to