On Sat, Sep 23, 2006 at 06:20:44AM -0400, Mike Frysinger wrote:
> On Thursday 21 September 2006 11:08, Brian Harring wrote:
> > On Thu, Sep 21, 2006 at 10:43:11AM -0400, Mike Frysinger wrote:
> > > i'm referring to the specific file of course, not anything else in the
> > > package ... so integrating the hack eutils.eclass:preserve_old_lib() into
> > > portage so it isnt a hack (not a knock against the current implementation
> > > here; it's always going to be a hack until portage manages proper
> > > unmerging of the ABI library)
> >
> > The reason folks aren't talking about using NEEDED is that NEEDED data
> > is generated _after_ building;
> 
> as well it should be ... trying to enumerate the linking ABI possibilities 
> before hand is not doable and not worth wasting the time of maintainers when 
> it can be automated
> 
> > getting the info into the resolver 
> > up front allows for a helluva lot more options, and makes stuff like
> > ensuring you have all sources required downloaded *prior* actually
> > simple to do, rather then inserting recalculating hacks into the
> > resolver.
> 
> rather than integrating it all into the resolver in a one-pass system, a two 
> pass system would work:
>  - build all the packages requested
>  - after each package, if an ABI library is being removed, check to see if it 
> is needed by any other package.  if it is needed, record it and preserve it 
> and move on

You're assuming that after the merge of the pkg that breaks 
compatibility, building is actually _still_ possible for the depends.

We don't classify our deps as actual build depends vs link depends; as 
such trying to (essentially) "patch things up after" allow for the 
scenario where merging breaks the toolchain, thus building isn't 
possible.

Because we don't classify the type of build time dep, that means each 
DEPEND match must have it's run time depends (RDEPEND) satisfied prior 
to being usable as a DEPEND; that right there punches a whole in the 
"delay till the end" approach, and is a good example of what I mean 
when I say "this is unbounded resolution"; the only way to solve it is 
to redo the resolution between finished building and merging the pkg 
to determine if it will break any required DEPENDS for later steps.

>  - once all the packages requested have been merged, you start the second 
> phase and calculate everything that needs to be rebuilt.  as ABI libs are no 
> longer needed on a system, portage can scrub them out

"as ABI libs are no longer needed on a system", phrasing of that 
implies you're suggesting that portage should leave the older package 
in place till it's updated all revdeps, then wipe it.

Which is fairly nasty, especially if you factor in the user potential 
of ctrl+c'ing it.  Finally, if I'm interpretting your statement there 
correctly, still isn't guranteed to work- just having the lib around 
doesn't mean that the older package is left in a working state with 
the new partially merged over it, only way that would work is if the 
two were slotted (indicating they could coexist on disk).
~harring

Attachment: pgpW99BPE62sk.pgp
Description: PGP signature

Reply via email to